plex und fhem

Begonnen von justme1968, 27 Oktober 2015, 01:11:32

Vorheriges Thema - Nächstes Thema

Risiko

Hallo,

auch ein kleines Feedback.

Läuft schon mal prima.
Server und Clients werden erkannt. Es werden aber nicht alle Clients per autocreate angelegt. In meinem Fall nur ein Client. Auch nach mehrfachen Neustart nicht.
Im Log und per Abfrage mit get ist aber zu sehen, dass alle Clients erkannt werden.

Die Abfrage der Details habe ich noch nicht verstanden.
Sollte man nicht per get plex details /library/metadata/18 die Metadaten (in diesem Fall zu einem Film) abfragen können?

Auf jeden Fall schon mal ein dickes Lob und weiter so.

Risiko.

tenya

#16
Hallo,

ich bin auch noch ganz neu seit dem Wochenende dabei. Bei mir erscheint beim versuch des define ein "ERR_CONNECTION_RESET" des Browsers der FHEM ist danach auch erst einem Dienstneustart wieder verfügbar.

Im Logfile wird leider kein Eintrag erzeugt.

An welchem Anfängerfehler scheitere ich?


wohl zu früh gefreut mit der Lösung - wäre ein "define myPlex plex" richtig oder "define myPlex plex 192.168.1.xx"
viele Grüße
Marcus

justme1968

ich hier: http://forum.fhem.de/index.php/topic,43052.msg353477.html#msg353477 eine neue version hochgeladen. bitte morgen mal testen und mir die ausgabe von get <plex> servers und get <plex> clients zukommen lassen.

@maddhin: auf welches device hast du das get ls gemacht?

die player werden erst dann angelegt wenn sie das erste mal etwas abspielen.

die timeline urls sind die subscribe nachricht um über den playstatus informiert zu werden. jeder request an ein device wird ein mal wiederholt. dann wird der client aus der subscribe liste entfernt. ohne die subscription sendet der client keine informationen an fhem.

ich habe den zeitpunkt der subscription jetzt etwas verändert. schau mal ob es weniger meldungen sind.

zeig mal bitte die ausgabe von 'get <plex> <ip> resources' bei den devices die die timeline meldung bringen.

ist dein pms auf dem port 32400 zu erreichen?

@Risiko: die clients werden erst angelegt wenn sie eine bestimmte nachricht senden. das passiert normalerweise nur wenn sie etwas abspielen.

get <plex> details <key> sollte die details zu einem film liefern. wenn das nicht der fall ist: was steht im log?

@tenya: wo hast du welche ip angegeben? das master device solltest du ohne alles anlegen und vorher IO::Socket::Multicast installieren.

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

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

tenya

#18
Hallo Andre,
IO::Socket::Multicast  habe ich installiert und auch den pi mal rebootet.
Mit "define myPlex plex" schiesse ich immer meinen fhem server ab.

Gibt es eventuell noch Abhängigkeiten? Ich habe am laufen: Homebridge, ZWave, FB_Callmonitor, Viera
EDIT
So nachdem ich dann doch mal im Anfängerforum war und das Verbose Level auf 5 gesetzt habe gibt es folgenden Log Eintrag:

2015.11.02 23:47:35 5: Loading ./FHEM/37_plex.pm
Your vendor has not defined Socket macro SO_REUSEPORT, used at /usr/lib/perl/5.14/IO/Socket/INET.pm line 193
2015.11.02 23:47:43 5: Initializing Type Library:


ich gehe jetzt aber auch erstmal schlafen.

maddhin

zunächst zu dem Roku:

ein get clients gibt u.a. ein

$VAR1 = {
          'title' => 'Roku Stick - 2LA54K072729',
          'deviceClass' => 'stb',
          'protocolCapabilities' => 'timeline,playback,navigation,playqueues',
          'name' => 'Roku Stick - 2LA54K072729',
          'port' => '8324',
          'platform' => 'Roku',
          'machineIdentifier' => 'Plex2LA54K072729',
          'protocolVersion' => '1',
          'host' => '192.168.2.54',
          'address' => '192.168.2.54',
          'online' => 0,
          'protocol' => 'plex',
          'product' => 'Plex for Roku',
          'platformVersion' => '6.2 build 6005',
          'version' => '4.0.5'
        };


Aber der client wird nicht angelegt oder angezeigt, auch nicht nach Nutzung / play.

Mehr später zu den anderen Punkten.

Risiko

#20
Zitat von: justme1968 am 02 November 2015, 22:51:35

@Risiko: die clients werden erst angelegt wenn sie eine bestimmte nachricht senden. das passiert normalerweise nur wenn sie etwas abspielen.

get <plex> details <key> sollte die details zu einem film liefern. wenn das nicht der fall ist: was steht im log?

gruss
  andre

Hallo Andre,

das RasPlex wird nicht per autocreate angelegt, auch wenn ich auf dem Client was abspiele. Evtl. sendet der Client die Nachricht nicht, habe ich nicht geprüft.
Habe den Client über den machineIdentifier manuell angelegt und es funktioniert.

Die Abfrage der details geht leider nicht. Im Log (Level 5) steht nichts, da der Befehl nicht ausgeführt wird

Unknown argument details, choose one of clients servers ls sessions details onDeck


Kleine Warnung:

PERL WARNING: Use of uninitialized value in sprintf at ./FHEM/37_plex.pm line 673.


Update der Client-Readings:
Diese werden nur aktualisiert, wenn manuell mann ein get <client> timeline ausführt.
Die Änderungen (play, pause, etc.) scheinen aber erkannt zu werden.
Logeintrag bspw.

Plex:timelineListener: refreshing timeline subscriptions
Plex: requesting http://192.168.178.26:3005/player/timeline/subscribe?protocol=http&port=56736&commandID=52

Plex:timelineListener: refreshing timeline subscriptions
Plex: requesting http://192.168.178.26:3005/player/timeline/subscribe?protocol=http&port=56736&commandID=56


Risiko

justme1968

#21
@tenya: was ist denn das für eine platform? das geht tief im socket modul schief. bitte ändere mal im modul ReusePort=>1 auf ReusePort=>0. kommt mehrfach vor.

@maddhin: timeline ist da. geht ein get <player> timeline? bitte setz mal verbose 5 und schau ob es im log fehlermeldungen gibt.
gibt es im log eine discovered: meldung wenn der player online kommt?

@Risiko: hast du die myPlex zugangsdaten im master device angegeben? was gibt ein get clients?
gibt es im log eine discovered: meldung wenn der player online kommt?

es muss detail heissen nicht details :(

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

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

tenya

@justme - ein RaspberryPi letztes Wochenende frisch mit FHEM in Betrieb genommen. Ich teste es heute abend.
Vielen Dank auch für deine Mühe :-)

justme1968

noch etwas: wenn ein player nicht automatisch als online erkannt wird bitte mal ein set <plex> online <player> probieren.

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

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

maddhin

Zitat von: justme1968 am 03 November 2015, 09:12:07
@maddhin: timeline ist da. geht ein get <player> timeline? bitte setz mal verbose 5 und schau ob es im log fehlermeldungen gibt.
gibt es im log eine discovered: meldung wenn der player online kommt?

Ein discovered habe ich nicht direkt gesehen. Aber vielleicht hilft folgendes weiter:

2015.11.03 22:35:05 5: PMS:timelineListener: timeline sender 192.168.2.54 connected to 50893
2015.11.03 22:35:05 5: PMS:timelineListener:50893: close
2015.11.03 22:35:05 4: http://192.168.2.54:8324/player/timeline/subscribe?protocol=http&port=59339&commandID=3: HTTP response code 200
2015.11.03 22:35:05 4: HttpUtils http://192.168.2.54:8324/player/timeline/subscribe?protocol=http&port=59339&commandID=3: Got data, length: 0
2015.11.03 22:35:05 4: HttpUtils http://192.168.2.54:8324/player/timeline/subscribe?protocol=http&port=59339&commandID=3: Zero length data, header follows:
2015.11.03 22:35:05 4:   Date: Tue, 3 NOV 2015 14:35:4 GMT
2015.11.03 22:35:05 4:   Server: Plex
2015.11.03 22:35:05 4:   Connection: close
2015.11.03 22:35:05 4:   Content-Length: 0
2015.11.03 22:35:05 4:   Content-Type: text/html
2015.11.03 22:35:05 4:   Accept-Ranges: bytes
2015.11.03 22:35:05 5: PMS: received
2015.11.03 22:35:06 5: PMS:timelineListener: timeline sender 192.168.2.54 connected to 50894
2015.11.03 22:35:06 5: PMS:timelineListener:50894: close
2015.11.03 22:35:06 5: PMS: from: 192.168.2.20
2015.11.03 22:35:06 5: PMS: M-SEARCH * HTTP/1.1

2015.11.03 22:35:06 4: FHEMWEB:192.168.2.20:64316 POST /fhem?detail=PMS&dev.getPMS=PMS&cmd.getPMS=get&arg.getPMS=clients&val.getPMS=&XHR=1&addLinks=1; BUFLEN:0
2015.11.03 22:35:06 5: Cmd: >get PMS clients<
2015.11.03 22:35:06 1: PERL WARNING: Use of uninitialized value in sprintf at ./FHEM/37_plex.pm line 656.
2015.11.03 22:35:06 4: name: /fhem?detail=PMS&dev.getPMS=PMS&cmd.getPMS=get&arg.getPMS=clients&val.getPMS=&XHR=1&addLinks=1 / RL:183 / text/plain; charset=UTF-8 / Content-Encoding: gzip
/
2015.11.03 22:35:07 5: PMS:timelineListener: timeline sender 192.168.2.54 connected to 50895
2015.11.03 22:35:07 5: PMS:timelineListener:50895: close
2015.11.03 22:35:08 5: PMS:timelineListener: timeline sender 192.168.2.54 connected to 50896
2015.11.03 22:35:08 5: PMS:timelineListener:50896: close
2015.11.03 22:35:09 5: PMS:timelineListener: timeline sender 192.168.2.54 connected to 50897
2015.11.03 22:35:09 5: PMS:timelineListener:50897: close
2015.11.03 22:35:10 5: PMS:timelineListener: timeline sender 192.168.2.54 connected to 50898
2015.11.03 22:35:10 5: PMS:timelineListener:50898: close
2015.11.03 22:35:10 5: PMS: from: 192.168.2.30
2015.11.03 22:35:10 5: PMS: M-SEARCH * HTTP/1.1


sowie

<Server name="PrecisionM4500" host="192.168.2.20" address="192.168.2.20" port="3005" machineIdentifier="fc921028-4da5-489d-bbe0-671e8c5a7895" version="1.4.1.469-47a90f01" protocol="plex" product="Plex Home Theater" deviceClass="HTPC" protocolVersion="1" protocolCapabilities="navigation,playback,timeline,mirror,playqueues" />
<Server name="Roku Stick - 2LA54K072729" host="192.168.2.54" address="192.168.2.54" port="8324" machineIdentifier="Plex2LA54K072729" version="4.0.5" protocol="plex" product="Plex for Roku" deviceClass="stb" protocolVersion="1" protocolCapabilities="timeline,playback,navigation,playqueues" />
</MediaContainer>

2015.11.03 22:35:01 5: Triggering fc9210284da5489dbbe0671e8c5a7895 (1 changes)
2015.11.03 22:35:01 5: Notify loop for fc9210284da5489dbbe0671e8c5a7895 presence: present
2015.11.03 22:35:01 3: PMS: client discovered: 192.168.2.54
2015.11.03 22:35:01 4: PMS: requesting http://192.168.2.54:8324/resources
2015.11.03 22:35:01 4: HttpUtils url=http://192.168.2.54:8324/resources
2015.11.03 22:35:01 4: http://192.168.2.30:32400/clients: HTTP response code 200
2015.11.03 22:35:01 4: HttpUtils http://192.168.2.30:32400/clients: Got data, length: 703
2015.11.03 22:35:01 5: PMS: received <?xml version="1.0" encoding="UTF-8"?>
<MediaContainer size="2">
<Server name="PrecisionM4500" host="192.168.2.20" address="192.168.2.20" port="3005" machineIdentifier="fc921028-4da5-489d-bbe0-671e8c5a7895" version="1.4.1.469-47a90f01" protocol="plex" product="Plex Home Theater" deviceClass="HTPC" protocolVersion="1" protocolCapabilities="navigation,playback,timeline,mirror,playqueues" />
<Server name="Roku Stick - 2LA54K072729" host="192.168.2.54" address="192.168.2.54" port="8324" machineIdentifier="Plex2LA54K072729" version="4.0.5" protocol="plex" product="Plex for Roku" deviceClass="stb" protocolVersion="1" protocolCapabilities="timeline,playback,navigation,playqueues" />
</MediaContainer>

2015.11.03 22:35:01 4: http://192.168.2.54:8324/resources: HTTP response code 200
2015.11.03 22:35:01 4: HttpUtils http://192.168.2.54:8324/resources: Got data, length: 304
2015.11.03 22:35:01 5: PMS: received <MediaContainer><Player platformVersion="6.2 build 6005" version="4.0.5" protocolVersion="1" machineIdentifier="Plex2LA54K072729" protocolCapabilities="timeline,playback,navigation,playqueues" deviceClass="stb" title="Roku Stick - 2LA54K072729" platform="Roku" product="Plex for Roku" /></MediaContainer>
2015.11.03 22:35:01 4: PMS:timelineListener: adding timeline subscription for 192.168.2.54
2015.11.03 22:35:01 4: PMS: requesting http://192.168.2.54:8324/player/timeline/subscribe?protocol=http&port=59339&commandID=1
2015.11.03 22:35:01 4: HttpUtils url=http://192.168.2.54:8324/player/timeline/subscribe?protocol=http&port=59339&commandID=1
2015.11.03 22:35:01 5: PMS: from: 192.168.2.20
2015.11.03 22:35:01 5: PMS: M-SEARCH * HTTP/1.1

2015.11.03 22:35:01 5: PMS:timelineListener: timeline sender 192.168.2.54 connected to 50888
2015.11.03 22:35:01 5: PMS:timelineListener:50888: close
2015.11.03 22:35:01 4: http://192.168.2.54:8324/player/timeline/subscribe?protocol=http&port=59339&commandID=1: HTTP response code 200
2015.11.03 22:35:01 4: HttpUtils http://192.168.2.54:8324/player/timeline/subscribe?protocol=http&port=59339&commandID=1: Got data, length: 0
2015.11.03 22:35:01 4: HttpUtils http://192.168.2.54:8324/player/timeline/subscribe?protocol=http&port=59339&commandID=1: Zero length data, header follows:
2015.11.03 22:35:01 4:   Date: Tue, 3 NOV 2015 14:35:0 GMT
2015.11.03 22:35:01 4:   Server: Plex
2015.11.03 22:35:01 4:   Connection: close
2015.11.03 22:35:01 4:   Content-Length: 0
2015.11.03 22:35:01 4:   Content-Type: text/html
2015.11.03 22:35:01 4:   Accept-Ranges: bytes
2015.11.03 22:35:01 5: PMS: received
2015.11.03 22:35:02 5: PMS:timelineListener: timeline sender 192.168.2.54 connected to 50889
2015.11.03 22:35:02 5: PMS:timelineListener:50889: close
2015.11.03 22:35:03 5: PMS:timelineListener: timeline sender 192.168.2.54 connected to 50890
2015.11.03 22:35:03 5: PMS:timelineListener:50890: close
2015.11.03 22:35:04 5: PMS:timelineListener: timeline sender 192.168.2.54 connected to 50891
2015.11.03 22:35:04 5: PMS:timelineListener:50891: close
2015.11.03 22:35:04 4: http://192.168.2.20:3005/resources: HTTP response code 200
2015.11.03 22:35:04 4: HttpUtils http://192.168.2.20:3005/resources: Got data, length: 373
2015.11.03 22:35:04 5: PMS: received <?xml version="1.0" encoding="utf-8" ?>


Der Roku Stick scheint also soweit zu funkionieren, aber er wird halt nicht erstellt.

Was mit aufgefallen ist, dass der machineIdentifier beim Stick zu fehlen scheint. ein get clients gibt folgendes:

from discovery:
              ip            updatedAt  name                 machineIdentifier
    192.168.2.54  2015-11-03 22:35:01  Roku Stick - 2LA54K072729
    192.168.2.20  2015-11-03 22:35:04  PrecisionM4500       fc921028-4da5-489d-bbe0-671e8c5a7895


get <player> timeline get nicht weil der device nicht erstellt/angezeigt wird. Hoffe das hilft.

maddhin

Zitat von: justme1968 am 02 November 2015, 22:51:35

zeig mal bitte die ausgabe von 'get <plex> <ip> resources' bei den devices die die timeline meldung bringen.

ist dein pms auf dem port 32400 zu erreichen?

vom Roku

$VAR1 = {
          'Server' => [],
          'Player' => [
                        {
                          'title' => 'Roku Stick - 2LA54K072729',
                          'machineIdentifier' => 'Plex2LA54K072729',
                          'port' => '8324',
                          'protocolCapabilities' => 'timeline,playback,navigation,playqueues',
                          'deviceClass' => 'stb',
                          'product' => 'Plex for Roku',
                          'platformVersion' => '6.2 build 6005',
                          'version' => '4.0.5',
                          'protocolVersion' => '1',
                          'platform' => 'Roku'
                       }
                      ]
        };


Ports sollten intern alle 32400 sein. Der 192.168.2.30 hat extern 32402 (Portfreigabe 32402 -> 32400) . Aber das sollte nicht relevant sein.

Mit PHT scheint alles es zu funktionieren. Da kommt mehr "timeline" info wie key, location, etc.

justme1968

der stick scheint sich zu connecten aber schickt keine daten. sehr seltsam.

wenn es kein player device gibt kannst du get <pms> <ip> timeline verwenden.


kannst du mir das ding mal ausliehen? das wäre vermutlich das aller einfachste.

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

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

maddhin

das get <pms> <ip> timeline bekomme ich nicht hin. Ich gebe get PMS 192.168.2.54 timeline ein -> Unknown argument 192.168.2.54, choose one of clients servers

ggf. hilft das, das kam als ich den Roku nach längerer Pause wieder benutzt habe

2015.11.04 00:18:13 1: PERL WARNING: Use of uninitialized value in string ne at ./FHEM/37_plex.pm line 1384.
2015.11.04 00:18:48 1: PERL WARNING: Use of uninitialized value in string eq at ./FHEM/37_plex.pm line 1078.


Generell ist mir der Roku nicht so wichtig, ich habe mir nur darauf konzentriert, weil der in Europa wohl eher selten ist. In den USA ist der allerdings ziemlich populär. Ausleihen ist schwierig, bin höchstwahrscheinlich ~8000km gen Osten von Dir entfernt:)

Von mir aus ist es kein Problem sich erstmal auf Grundlegendes zu konzentrieren, als mit dem Roku Zeit zu verlieren. Aber ggf. hilft die Sache mit dem Roku generelle Dinge zu finden/erklären.

Nebenbei und wahrscheinlich ne Anfängerfrage: wie kann ich den Status abfragen - z.B. "spielt Video/Musik" ab oder ist anwesend etc?

justme1968

ok. das ausleihen wird wirklich umständlich :)

laut plex sollte es mit dem roku stick genau so gehen wir mit allen anderen playern.

kannst du ein mal eine verbindung zwischen handy app im remote modus und dem stick per wireshark mitschneiden?

app starten, auf remote umschalten einen film wählen und abspielen. dann pause und stop.

der ganze status steht in readings sobald das mit der timeline funktioniert.

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

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

maddhin

Das Wireshark werde ich versuchen - wird aber etwas dauern bis ich das zum Laufen bekommen habe. Frühestens morgen.
Von App auf Roku geht im Moment nicht - da gibt es wohl ein Plex-internes Problem. Vielleicht liegt das Ganze dann auch an Plex per se?


Mit Status meinte ich eher wie ich den Status in einem notify nutzen kann -> wenn PHT etwas (bestimmtes) abspielt, mache das Licht aus, etc. Das wäre super.


Gesendet von iPhone mit Tapatalk