NEWS
Test Adapter Plex v1.1.x
- 
					
					
					
					
 https://github.com/iobroker-community-adapters/ioBroker.plex/tree/player_requests Den Absturz gefixt. setShuffle - boolean 
 setRepeat - number 0: aus - 1: aktueller Titel - 2: allesetRepeatAll: Daten von Plex: 
 0 = false
 1,2 = trueSenden an Plex 
 false = 0
 true = 2Oder in Worten - wenn jemand einen repeat art anschaltet geht der State auf true, selber schaltet er aber nur einen Repeat auf all. seekToPercent ist jetzt ganzzahlig. 
- 
					
					
					
					
 
- 
					
					
					
					
 Hab noch einen Adapterabsturz gefixt. Es ist absicht das der Adapter sich da aufhängt wenn ein Fehler passiert, damit ich ihn finde und beheben kann. Nachher kommt da ne Fehlerbehandlung drüber, damit er sich nicht bei jedem husten verschluckt  https://github.com/iobroker-community-adapters/ioBroker.plex/tree/player_requests 
- 
					
					
					
					
 plex.0 2023-09-05 06:01:05.929 warn Error triggering playback action -stepForward- on player Android-1810d7e1-7f53-4d2e-8a9e-218e85d27f5f with ip:192.168.178.47.! See debug log for details. plex.0 2023-09-05 06:01:04.918 info Triggered action -stepForward- on player Android-1810d7e1-7f53-4d2e-8a9e-218e85d27f5f with ip:192.168.178.47. plex.0 2023-09-05 06:01:01.974 warn Error triggering playback action -stepBack- on player Android-1810d7e1-7f53-4d2e-8a9e-218e85d27f5f with ip:192.168.178.47.! See debug log for details. plex.0 2023-09-05 06:01:01.942 info Triggered action -stepBack- on player Android-1810d7e1-7f53-4d2e-8a9e-218e85d27f5f with ip:192.168.178.47.Edit: plex.0 2023-09-05 06:16:50.920 warn Object of state "plex.0._playing.android-1810d7e1-7f53-4d2e-8a9e-218e85d27f5f.Metadata.Mood" is missing the required property "common.type"Edit2 Beim beenden der App am Handy plex.0 2023-09-05 06:41:59.852 info Player Android-1810d7e1-7f53-4d2e-8a9e-218e85d27f5f is disconnected plex.0 2023-09-05 06:41:56.395 warn catch() 122: {"message":"socket hang up","name":"Error","stack":"Error: socket hang up\n at AxiosError.from (C:\\ioBroker\\_iob_Test\\node_modules\\iobroker.plex\\node_modules\\axios\\dist\\node\\axios.cjs:837:14)\n at RedirectableRequest.handleRequestError (C:\\ioBroker\\_iob_Test\\node_modules\\iobroker.plex\\node_modules\\axios\\dist\\node\\axios.cjs:3016:25)\n at RedirectableRequest.emit (node:events:526:35)\n at eventHandlers.<computed> (C:\\ioBroker\\_iob_Test\\node_modules\\follow-redirects\\index.js:14:24)\n at ClientRequest.emit (node:events:514:28)\n at Socket.socketOnEnd (node:_http_client:525:9)\n at Socket.emit (node:events:526:35)\n at endReadableNT (node:internal/streams/readable:1359:12)\n at process.processTicksAndRejections (node:internal/process/task_queues:82:21)","config":{"transitional":{"silentJSONParsing":true,"forcedJSONParsing":true,"clarifyTimeoutError":false},"adapter":"http","transformRequest":[null],"transformResponse":[null],"timeout":700,"xsrfCookieName":"XSRF-TOKEN","xsrfHeaderName":"X-XSRF-TOKEN","maxContentLength":-1,"maxBodyLength":-1,"env":{},"headers":{"Accept":"application/json, text/plain, */*","X-Plex-Token":"xxxxxxxxxxxxxx","X-Plex-Target-Client-Identifier":"xxxxxxxxxxxxxx","X-Plex-Client-Identifier":"xxxxxxxxxxxxxxxxxxx","X-Plex-Device-Name":"Android","User-Agent":"axios/1.5.0","Accept-Encoding":"gzip, compress, deflate, br"},"method":"get","url":"http://192.168.178.47:32500/player/timeline/poll?wait=0&commandID=2565"},"code":"ECONNRESET","status":null}
- 
					
					
					
					
 Von wann ist die Version? Fehler - könnte ich gestern abend behoben haben
- Beim Beenden der App sollte der Fehler kein Problem sein, werde die logmeldung für ECONNRESET auf debug setzten
 Nr. 2 müsste durch tautulli kommen, kannst du mir dein Json dafür schicken dann teste ich das heute abend. 
- 
					
					
					
					
 @ticaki sagte in Test Adapter Plex v1.0.x: Von wann ist die Version? Kurz vor verfassen des Beitrags Nr. 2 müsste durch tautulli kommen, kannst du mir dein Json dafür schicken dann teste ich das heute abend. { "event": "media.{action}", "user": "undefined", "owner": "undefined", "Account": { "userId": "{user_id}", "id": "undefined", "thumb": "undefined", "title": "{username}" }, "Server": { "title": "{server_name}", "uuid": "{server_machine_id}" }, "Player": { "local": "{stream_local}", "localAddress": "{ip_address}", "publicAddress": "undefined", "title": "{player}", "uuid": "{machine_id}" }, "Metadata": { "librarySectionType": "{media_type}", "ratingKey": "{rating_key}", "parentRatingKey": "{parent_rating_key}", "grandparentRatingKey": "{grandparent_rating_key}", "key": "/library/metadata/{rating_key}", "guid": "com.plexapp.agents.imdb://{imdb_id}?lang=en", "librarySectionTitle": "{library_name}", "librarySectionID": "{section_id}", "librarySectionKey": "/library/sections/{section_id}", "studio": "{studio}", "type": "{media_type}", "title": "{title}", "grandparentTitle": "<show>{show_name}</show><artist>{artist_name}</artist>", "parentTitle": "<show>{show_name}</show><artist>{artist_name}</artist>", "titleSort": "undefined", "contentRating": "{content_rating}", "summary": "{summary}", "rating": "{rating}", "viewOffset": "undefined", "lastViewedAt": "{last_viewed_date}", "year": "{year}", "tagline": "{tagline}", "thumb": "<movie>{thumb}</movie><show>{grandparent_thumb}</show><season>{grandparent_thumb}</season><episode>{grandparent_thumb}</episode><artist>{grandparent_thumb}</artist><album>{grandparent_thumb}</album><track>{grandparent_thumb}</track>", "parentThumb": "{parent_thumb}", "grandparentThumb": "{grandparent_thumb}", "posterThumb": "{poster_thumb}", "art": "undefined", "duration": "{duration}", "originallyAvailableAt": "{release_date}", "addedAt": "{added_date}", "updatedAt": "{updated_date}", "chapterSource": "undefined", "primaryExtraKey": "undefined", "ratingImage": "imdb://image.rating", "Genre": "{genres}", "Director": "{directors}", "Writer": "{writers}", "Country": "undefined", "Producer": "undefined", "Collection": "{collections}", "Role": "{actors}", "Similar": "undefined", "tautulli": { "Player": "{player}", "LibraryTyp": "{library_name}", "Filmstudio": "{studio}", "Titel": "{title}", "Originaltitel": "{original_title}", "SerienName": "{show_name}", "FolgeName": "{episode_name}", "Status": "{action}", "Beschreibung": "{summary}", "Bewertung": "{audience_rating}", "Jahr": "{year}", "Genre": "{genres}", "Hintergrund": "{art}", "SerienBanner": "{banner}", "Cover": "<movie>{thumb}</movie><show>{grandparent_thumb}</show><season>{grandparent_thumb}</season><episode>{grandparent_thumb}</episode><artist>{grandparent_thumb}</artist><album>{grandparent_thumb}</album><track>{grandparent_thumb}</track>", "DauerMinuten": "{duration}", "DauerSekunden": "{duration_sec}", "VerbleibendMinuten": "{remaining_duration}", "VerbleibendSekunden": "{remaining_duration_sec}", "VerbleibendZeit": "{remaining_time}", "FortschrittMinuten": "{progress_duration}", "FortschrittSekunden": "{progress_duration_sec} sek", "FortschrittZeit": "{progress_time}", "FortschrittProzent": "{progress_percent}", "Veroeffentlichung": "{release_date}", "UploadDatum": "{added_date}", "AbspielDatum": "{last_viewed_date}", "Kategorie": "{genres}", "Regisseur": "{directors}", "Drehbuch": "{writers}", "Kollektion": "{collections}", "Darsteller": "{actors:[:30]}", "Folge": "{episode_num}", "Staffel": "{season_num}" }, "video": { "container": "{container}", "bitrate": "{bitrate}", "aspect_ratio": "{aspect_ratio}", "video_codec": "{video_codec}", "video_codec_level": "{video_codec_level}", "video_bitrate": "{video_bitrate}", "video_bit_depth": "{video_bit_depth}", "video_framerate": "{video_framerate}", "video_ref_frames": "{video_ref_frames}", "video_resolution": "{video_resolution}", "video_height": "{video_height}", "video_width": "{video_width}", "video_language": "{video_language}", "video_language_code": "{video_language_code}" }, "audio": { "audio_bitrate": "{audio_bitrate}", "audio_bitrate_mode": "{audio_bitrate_mode}", "audio_codec": "{audio_codec}", "audio_channels": "{audio_channels}", "audio_channel_layout": "{audio_channel_layout}", "audio_sample_rate": "{audio_sample_rate}", "audio_language": "{audio_language}", "audio_language_code": "{audio_language_code}" }, "subtitles": { "subtitle_codec": "{subtitle_codec}", "subtitle_container": "{subtitle_container}", "subtitle_format": "{subtitle_format}", "subtitle_forced": "{subtitle_forced}", "subtitle_location": "{subtitle_location}", "subtitle_language": "{subtitle_language}", "subtitle_language_code": "{subtitle_language_code}" }, "file": { "path": "{file}", "name": "{filename}", "size": "{file_size}" }, "transcoding": { "transcode_decision": "{transcode_decision}", "video_decision": "{video_decision}", "audio_decision": "{audio_decision}", "subtitle_decision": "{subtitle_decision}", "transcode_container": "{transcode_container}", "transcode_video_codec": "{transcode_video_codec}", "transcode_video_width": "{transcode_video_width}", "transcode_video_height": "{transcode_video_height}", "transcode_audio_codec": "{transcode_audio_codec}", "transcode_audio_channels": "{transcode_audio_channels}", "transcode_hw_requested": "{transcode_hw_requested}", "transcode_hw_decoding": "{transcode_hw_decoding}", "transcode_hw_decode": "{transcode_hw_decode}", "transcode_hw_decode_title": "{transcode_hw_decode_title}", "transcode_hw_encoding": "{transcode_hw_encoding}", "transcode_hw_encode": "{transcode_hw_encode}", "transcode_hw_encode_title": "{transcode_hw_encode_title}" }, "stream": { "user": { "streams": "{streams}", "user_streams": "{user_streams}", "name": "{user}", "user": "{username}", "email": "{user_email}" }, "player": { "device": "{device}", "platform": "{platform}", "product": "{product}", "player": "{player}", "ip_address": "{ip_address}" }, "quality_profile": "{quality_profile}", "optimized_version": "{optimized_version}", "optimized_version_profile": "{optimized_version_profile}", "synced_version": "{synced_version}", "live": "{live}", "stream_local": "{stream_local}", "stream_location": "{stream_location}", "stream_bandwidth": "{stream_bandwidth}", "stream_container": "{stream_container}", "stream_bitrate": "{stream_bitrate}", "stream_aspect_ratio": "{stream_aspect_ratio}", "stream_duration": "{stream_duration}", "stream_time": "{stream_time}", "remaining_duration": "{remaining_duration}", "remaining_time": "{remaining_time}", "progress_duration": "{progress_duration}", "progress_time": "{progress_time}", "progress_percent": "{progress_percent}", "stream_video": { "stream_video_codec": "{stream_video_codec}", "stream_video_codec_level": "{stream_video_codec_level}", "stream_video_bitrate": "{stream_video_bitrate}", "stream_video_bit_depth": "{stream_video_bit_depth}", "stream_video_framerate": "{stream_video_framerate}", "stream_video_ref_frames": "{stream_video_ref_frames}", "stream_video_resolution": "{stream_video_resolution}", "stream_video_height": "{stream_video_height}", "stream_video_width": "{stream_video_width}", "stream_video_language": "{stream_video_language}", "stream_video_language_code": "{stream_video_language_code}" }, "stream_audio": { "stream_audio_bitrate": "{stream_audio_bitrate}", "stream_audio_bitrate_mode": "{stream_audio_bitrate_mode}", "stream_audio_codec": "{stream_audio_codec}", "stream_audio_channels": "{stream_audio_channels}", "stream_audio_channel_layout": "{stream_audio_channel_layout}", "stream_audio_sample_rate": "{stream_audio_sample_rate}", "stream_audio_language": "{stream_audio_language}", "stream_audio_language_code": "{stream_audio_language_code}" }, "stream_subtitle": { "stream_subtitle_codec": "{stream_subtitle_codec}", "stream_subtitle_container": "{stream_subtitle_container}", "stream_subtitle_format": "{stream_subtitle_format}", "stream_subtitle_forced": "{stream_subtitle_forced}", "stream_subtitle_language": "{stream_subtitle_language}", "stream_subtitle_language_code": "{stream_subtitle_language_code}", "stream_subtitle_location": "{stream_subtitle_location}" } } } }
- 
					
					
					
					
 was steht in dem Datenpunkt plex.0._playing.android-x.Metadata.MoodIch hab den nicht und der kommt auch scheinbar nicht durch tautulli.
- 
					
					
					
					
 Error triggering playback action -stepBack- on player Dazu muß ich noch mehr fragen stellen. Was normal ist: Der Error ist kein Fehler, sondern kann ein Fehler sein Wenn der Player (also dein Android Gerät) - nicht an
- aktiv
- die App nicht gestartet ist
 kommt es auf jeden Fall dazu. Indiz dafür ist, das es manchmal geht und manchmal nicht. - die App/der Player solange inaktiv war, das der Plex Server die Verbindung beendet hat.(Da könnte es doch gehen... weiß es aber nicht genau)
- wenn du nicht kürzlich eine Wiedergabe(hier beliebiges Ereignis einfügen) hast
 Da passiert einfach nichts
 Da könnte man noch drüber sprechen, ob der Adapter vielleicht den letzten key nutzt um diesen zu starten.
 Wenn das alles nicht zutrifft: Bitte das ganze mit Debug wiederholen und die url im Browser testen. Bei mir geht es. 
- 
					
					
					
					
 @ticaki sagte in Test Adapter Plex v1.0.x: was steht in dem Datenpunkt plex.0._playing.android-x.Metadata.MoodIch hab den nicht und der kommt auch scheinbar nicht durch tautulli.{ "common": { "name": "Mood Information", "write": false }, "type": "channel", "native": {}, "from": "system.adapter.plex.0", "user": "system.user.admin", "ts": 1693819603519, "_id": "plex.0._playing.android-1810d7e1-7f53-4d2e-8a9e-218e85d27f5f.Metadata.Mood", "acl": { "object": 1636, "owner": "system.user.admin", "ownerGroup": "system.group.administrator" } } 
- 
					
					
					
					
 Ist unterhalb von dem Datenpunkt irgendwelche interessanten Infos oder wäre es ok wenn ich einfach alle Daten von diesem Punkt im Cleanup entferne - keine Ahnung woher er kommt, aber für den überall zu löschen muß ich das auch nicht wissen  Ich denke das ist eine Eigenschaft von Musik - Stimmung - ja würde passen, ich kopiere wohl doch mal meine Musik zu plex 
- 
					
					
					
					
 @ticaki sagte in Test Adapter Plex v1.0.x: Ist unterhalb von dem Datenpunkt irgendwelche interessanten Infos oder wäre es ok wenn ich einfach alle Daten von diesem Punkt im Cleanup entferne - keine Ahnung woher er kommt, aber für den überall zu löschen muß ich das auch nicht wissen  Ich denke das ist eine Eigenschaft von Musik - Stimmung - ja würde passen, ich kopiere wohl doch mal meine Musik zu plex Keine Daten drinnen, werde mal alles löschen und den Adapter neu starten. Edit: Bis jetzt nicht mehr aufgetaucht 
- 
					
					
					
					
 https://github.com/iobroker-community-adapters/ioBroker.plex/tree/player_requests fix: 
 seekToPercent sollte nicht funktioniert habenadded: playback.playLast: starte den zuletzt auf dem Player wiedergebenen Titel (von diesem Server) an der letzten bekannten Position. Auswahl auf dem Player ist egal muß nur an sein.playback.playKey: starte den angegebenen key auf dem Player an der angegebenen Position: Ist eine Zeichenkette mit # als Trenner:key#offset- keysind die Datenpunkte die mit key bezeichnet sind.
- offsetist viewOffset in ms- (optional)
 Beispiel: /library/metadata/41123#10000 /playlists/34681/items /playlists/34681/items#1000shuffle wird dabei zurückgesetzt und hab keinen Weg gefunden das nicht jedesmal das gleiche Lied anfängt. 
- 
					
					
					
					
 Noch eine Miniupdate für die "Beta" - Der Server hat doch tatsächlich 127.0.0.1 als Player ip übermittelt... fang ich jetzt ab.
- moodhab ich gefunden und definiert
- Hab States deutlich reduziert, Arrays werden jetzt wieder wie vorher zusammengefasst
- Leere States vom Type String werden erst erstellt wenn einer Daten rein schreibt und damit meine ich  mehr als ''
 Noch ein Wort zu den neuen States: im Ordner _playing.gerät-id.Player.detailsdie Punkte dort sind ein dump der gleichen Internen States die verwendet werden um _Controls zu aktualisieren. Die Werte ergeben sich aus einem der 3 Unterordnern, der nicht den Status stopped hat.Folgende States werden "nie" bereinigt und enthalten immer einen Wert: "Player.localAddress", "Player.port", "Player.protocolCapabilities", "Player.controllable", "Player.uuid", "Player.title", "Player.details.key", "Player.details.time"Die Ordner unterhalb von Details: music, video, photosind 1:1 das was vom Player kommt.
- 
					
					
					
					
 @ticaki sagte in Test Adapter Plex v1.0.x: Noch eine Miniupdate für die "Beta" Funktioniert bei mir nicht Richtig.   
- 
					
					
					
					
 @ticaki sagte in Test Adapter Plex v1.0.x: fix: 
 seekToPercent sollte nicht funktioniert habenHatte Funktioniert, jetzt nicht mehr. Ich installiere wieder via: https://github.com/iobroker-community-adapters/ioBroker.plex/tree/player_requests Edit: Geht wieder 
- 
					
					
					
					
 - Der seekToPercent funktioniert eigentlich nicht... Naja egal jetzt hab ichs so das er auch ohne Magie funktioniert. (update kommt wenn ich Punkt 2. weiß.
- Und neue States erscheinen nur wenn der Adapter manuell neugestartet wurde. Da hab ich ne Frage zu gestellt.
 
- 
					
					
					
					
 
- 
					
					
					
					
 @sigi234 sagte in Test Adapter Plex v1.0.x: @ticaki sagte in Test Adapter Plex v1.0.x: Da hab ich ne Frage zu gestellt. ? Ich und meine uneindeutigen Randbemerkungen...  Ich hab dazu ne Frage in der Entwicklergruppe gestellt. Ich hab dazu ne Frage in der Entwicklergruppe gestellt.
- 
					
					
					
					
 @ticaki sagte in Test Adapter Plex v1.0.x: @sigi234 sagte in Test Adapter Plex v1.0.x: @ticaki sagte in Test Adapter Plex v1.0.x: Da hab ich ne Frage zu gestellt. ? Ich und meine uneindeutigen Randbemerkungen...  Ich hab dazu ne Frage in der Entwicklergruppe gestellt. Ich hab dazu ne Frage in der Entwicklergruppe gestellt.Ach so , dacht mir.  
- 
					
					
					
					
 seekToPercent sollte jetzt gefixt sein https://github.com/iobroker-community-adapters/ioBroker.plex/tree/player_requests Soweit ich die Antwort richtig verstehe, beim installieren eines Adapter per benutzerdefiniertem Githublink, muß der anschließend von Hand neugestartet werden, sonst läuft er mit alten Daten aber neuem Code/ oder neuen code teilen, keine Ahnung. (hat noch keiner geschrieben dass es ein Bug ist  ) )EDIT: Ein Gedanke zu playKey - Wenn man dazu ein kleines Skript schreibt, "RandomStartPlaylist" und in diesem folgendes tut - subscript playKey
- on ack false
 2.1 gegebenenfalls checken ob der key playlist enthält
 2.2. Da es bis zu 2 Sekunden dauert bis das Skript reagiert könnte man das Volumen auf 0 setzten und es nach 4. wieder auf den alten Wert erhöhen
- subscript Player.details.duration und setzte shuffle auf true
- on any -> nimm duration setzte seekTo auf duration-1000
- unsubscript Player.details.duration
 damit sollte es dann möglich sein eine Playliste mit Random zu starten. Im Adapter selbst weiß nicht ob das wirklich gut gehen würde. Als Script ist das einfach zu lösen 
 
		
	 
		
	