Plex Media Server + Samsung Plex app + FHEM

Begonnen von xs3bt, 13 Februar 2015, 23:27:27

Vorheriges Thema - Nächstes Thema

xs3bt

Hallo Zusammen,

ich versuche gerade das Steuern meines Plex Servers via FHEM, das XBMC Modul ( mit cionfig "attr Plex compatibilityMode plex") hab ich schon versucht leider setzt das auf JSON vom Plex Home Theater auf, mein setting ist ein Samsung TV (mit Plex app) und ein Windows Plex Server.
Laut Plex Forum Spuckt der Server nicht das JSON aus das dass XMBC Plugin benötigt.

über die WEB GUI von PLEX kann man alle benötigten Infos sehen (Laufzeit , Welcher Titel u.s.w default port: 32400 leider nur XML Infos) deswegen dachte ich mir das es doch möglich sein muss das auch in FHEM einzubinden.

und ich frage mich gerade ob ich der einzige mit diesem Problem bin.

Gruß

justme1968

das xbmc modul verwendet das xbmc json api. im plex fall muss es sich zum client connecten. nicht zum server. d.h. das web interface auf dem server ist hier komplett außen vor.

so viel ich weiss setzt die samsung app im gegensatz zu plex home theater nicht auf xbmc auf und hat dieses json api nicht implementiert.

du wirst mit dem aktuellen modul vermutlich kein glück haben.

als zusätzliche komplikation kommt noch hinzu das auch im pht client seit etwa 4 monaten alle informationen zum titel nicht mehr verfügbar sind sondern nur noch play/pause funktioniert. das plex team hat keine ahnung wieso das so ist. da das json api kein offiziell unterstütztes feature ist/war und plex intern zwischen allen komponenten ein anderes eigenes protokoll verwendet wird sehe ich hier auch erst mal schwarz.

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

xs3bt

Hallo nochmal,

habe mir jetzt einen kleinen Workaround gebaut mit dem ich zumindest auslesen kann ob plex läuft, in pause ist oder abgeschaltet ist .
natürlich lasse ich euch auch daran teilhaben, vielleicht hilft es ja dem einen oder anderen.

define PlexR HTTPMOD http://<plex Server ip/host>:32400/status/sessions 5
attr PlexR userattr event-on-change-reading readingsName1 readingsName2 readingsRegex1 readingsRegex2 stateFormat verbose
attr PlexR event-on-change-reading Running,aus
attr PlexR readingsName1 Running
attr PlexR readingsName2 aus
attr PlexR readingsRegex1 state\=\"(.*\D\w)\"
attr PlexR readingsRegex2 size\=\"(.?\d)\"
attr PlexR stateFormat {if (ReadingsVal("PlexR", "aus", "nv") eq "0") { sprintf("Läuft nicht")} elsif (ReadingsVal("PlexR", "Running", "nv") eq "paused") {sprintf("Pausiert")}elsif (ReadingsVal("PlexR", "Running", "nv") eq "playing") {sprintf("Läuft")}}
attr PlexR verbose 0 #<-damit die logfile nicht zugespammt wird wenn plex aus ist

Gruß


Risiko

Hallo.

Das Thema interessiert mich auch.
Plex bietet ja (auch) eine xml-Schnittstelle an.

https://forums.plex.tv/index.php/topic/104353-pms-web-api-documentation/
https://code.google.com/p/plex-api/

Ich hatte auch schon ein wenig damit gespielt.
Aus Zeitgründen aber noch nicht so richtig weiter gekommen.

Risiko.

justme1968

das api das du referenziert ist das api für den server um z.b. die library abzufragen oder einen eigenen player zu schreiben. so viel ich weiss ist das nicht das api für den client. bzw. gibt nur indirekt informationen darüber her was ein client gerade tut.

das client api ist im prinzip mit dem xbmc json rcp api identisch und war bis vor kurzem noch funktionsfähig. leider funktioniert es seit ein paar monaten nicht mehr und niemand scheint zu wissen warum... das ist ziemlich ärgerlich da das xbmc modul damit wunderbar funktioniert hat.


gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

Risiko

Hallo Andre,

die json-Api kenne ich nicht. Daher kann ich da nichts sagen.
Da plex als fork von kodi enstanden ist, wird das auch das Gleiche sein - bis jetzt?
Plex setzt, anders als kodi, strikt auf das Client <-> Server Model. Alle Infos, auch über die angemeldeten Clients, bekommt man vom Server.

Mittels der Web-Api lassen sich auch die Clients steuern.
https://code.google.com/p/plex-api/wiki/PlaybackControl
Das das geht, zeigt z.B. die WebApp des Servers.

Risiko

justme1968

das json api ist im prinzip das xbmc/kodi api aber zum jeweiligen plex client und mit der erweiterung das die titel meta daten direkt in der nachricht mit geschickt wurden nicht nicht erst auf dem server abgefragt werden mussten. eigentlich eine perfekte lösung und es hat mit dem bestehenden xbmc modul funktioniert.

das plex web api ist nur zum steuern und liefert scheinbar keinerlei rückmeldung und auch keinen status. oder sehe ich das falsch?

mir geht es hauptsächlich um diese rückmeldung. d.h. wenn ein film startet soll das licht aus gehen.

die möglichkeit eine nachricht an den client zu senden die dann eingeblendet wird habe ich auch nicht gesehen. gibt es die ?

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

Risiko

Hallo Andre,

leider kann ich diese Fragen nicht konkret beantworten. Das Projekt liegt bei mir auf Eis.
Denke das der Client nicht direkt eine Rückmeldung gibt. Der Status muss explizit abgefragt werden. Vermutlich über den Server.
Eine beliebige Nachricht  einzublenden, habe ich auch noch nicht gesehen.

Risiko.

coolice

Zitat von: xs3bt am 02 März 2015, 12:41:54
Hallo nochmal,

habe mir jetzt einen kleinen Workaround gebaut mit dem ich zumindest auslesen kann ob plex läuft, in pause ist oder abgeschaltet ist .
natürlich lasse ich euch auch daran teilhaben, vielleicht hilft es ja dem einen oder anderen.

define PlexR HTTPMOD http://<plex Server ip/host>:32400/status/sessions 5
attr PlexR userattr event-on-change-reading readingsName1 readingsName2 readingsRegex1 readingsRegex2 stateFormat verbose
attr PlexR event-on-change-reading Running,aus
attr PlexR readingsName1 Running
attr PlexR readingsName2 aus
attr PlexR readingsRegex1 state\=\"(.*\D\w)\"
attr PlexR readingsRegex2 size\=\"(.?\d)\"
attr PlexR stateFormat {if (ReadingsVal("PlexR", "aus", "nv") eq "0") { sprintf("Läuft nicht")} elsif (ReadingsVal("PlexR", "Running", "nv") eq "paused") {sprintf("Pausiert")}elsif (ReadingsVal("PlexR", "Running", "nv") eq "playing") {sprintf("Läuft")}}
attr PlexR verbose 0 #<-damit die logfile nicht zugespammt wird wenn plex aus ist

Gruß
Hallo, ich habe das ganze gerade bei mir eingepflegt. Es wird auch im STATE angezeigt "Läuft nicht" aber wenn ich etwas abspiele ist das STATE leer und bei Pause auch. Wenn ich stoppe erscheint wieder Läuft nicht.

Hast Du eine Vermutung an was es liegen könnte?

Gruß Mirco

xs3bt

Zitat von: coolice am 21 März 2015, 17:52:14
Hallo, ich habe das ganze gerade bei mir eingepflegt. Es wird auch im STATE angezeigt "Läuft nicht" aber wenn ich etwas abspiele ist das STATE leer und bei Pause auch. Wenn ich stoppe erscheint wieder Läuft nicht.

Hast Du eine Vermutung an was es liegen könnte?

Gruß Mirco

Hallo,

wichtig ist das du in dieser ziele
define PlexR HTTPMOD http://<plex Server ip/host>:32400/status/sessions 5
die IP/hostname von deinem Plex Server hinterlegst, ich habe die Windows Version vom Plex Server am laufen somit auf keiner anderen getestet.

als Test kannst du einfach mal ein Film starten und die URL http://<plex Server ip/host>:32400/status/sessions im IE aufrufen, dann müssten du einen wust an Daten angezeigt bekommen, mir der suche Funktion im IE kannst du auf der Seite dann mal nach "state="playing" " suchen, wenn du das findest , sollte alles wie beschrieben klappen.

Gruß