Module für XBMC

Begonnen von Dennis B., 06 Januar 2013, 22:32:24

Vorheriges Thema - Nächstes Thema

Johannes_B

Zitat von: vbs am 27 Dezember 2014, 12:36:20
Benutzt du die Version hier aus dem Thread oder die "offizielle" aus fhem? Ich meine, ich hatte diese fork-Geschichte schonmal behoben in der Thread-Version. Bitte einmal damit testen... Da XBMC keinen Maintainer mehr hat, werden Bugs leider nicht mehr im fhem-Repo gefixt. Sämtliche Anfragen von mir dazu blieben leider bislang unbeantwortet.

@Johannes:
Also die Grobfassung ist so:
Wenn kein fork verwendet wird, dann wird versucht die Verbindung im Hauptthread mit Timeout aufzumachen (blockierend). Easy.

Wenn fork verwendet wird:
Beim ersten Aufruf von Ready wird der Prozess geforkt. Bei allen weiteren Aufrufen wird nur geguckt, ob der geforkte Prozess noch lebt. Wenn er noch lebt, dann wird nichts gemacht (also weiterhin Ready aufgerufen). Wenn er nicht mehr lebt, dann ist das das Zeichen, dass der geforkte Prozess die Verbindung öffnen konnte (und sich beendet hat). Nun wird im Hauptprozess die Verbindung normal (blockierend) geöffnet.
Der Fork-Prozess versucht einfach nur in einer Schleife, die Verbindung aufzubauen. Wenn es geklappt hat, dann schließt er sie jedoch sofort wieder und beendet sich. Das Beenden ist das Zeichen für den Hauptthread, dass er es jetzt versuchen soll.

Weiß nicht, ob ich das jetzt verständlich rüberbringen konnte :D


Aaaaah,
jetzt hab ich es verstanden, danke für die Erklärung...  ;D
Wäre vielleicht gut das im Quelltext zu kommentieren.

Mittlerweile habe ich auch rausgefunden, dass anscheinend nicht das Modul, sondern irgendwas anderes an dem Freeze Schuld sein muss.
Das selbe passiert nämlich auch mit dem Sonos-Modul, wenn das den Sub-Process selbst erstellt.
Erstelle ich ihn dagegen selbst (Mac - LaunchDaemon), funktioniert alles bestens.

Was seltsam ist: Wenn ich mittels dtruss in den Kindprozess gucke, arbeitet der gemütlich weiter, der Elternprozess allerdings nicht, da passiert gar nichts mehr. :o

Jemand eine Idee?


Gruß,

Johannes
FHEM Control - an iOS app - available on the App Store:
https://itunes.apple.com/app/id936674170

vbs

Hat schon mal jemand nachgeguckt, ob dieses Play-Event-Feuerwertk in Helix behoben wurde? Das wäre wirklich ein Grund für mich, möglichst bald umzusteigen.

Bei mir sieht das Event-Log unter Gotham normalerweise so aus, wenn ich ein Video *einmal* starte :( Ist doch unter Gotham ein bekanntes Problem, oder?

2015.01.07 19:21:32.142 3: onXbmcChange: wz_xbmc - playStatus: paused
2015.01.07 19:21:32.169 3: onXbmcChange: wz_xbmc - playStatus: playing
2015.01.07 19:21:33.324 3: onXbmcChange: wz_xbmc - playStatus: paused
2015.01.07 19:21:33.811 3: onXbmcChange: wz_xbmc - playStatus: playing
2015.01.07 19:21:33.864 3: onXbmcChange: wz_xbmc - playStatus: paused
2015.01.07 19:21:34.408 3: onXbmcChange: wz_xbmc - playStatus: playing

P.A.Trick

Zitat von: vbs am 07 Januar 2015, 19:24:45
Hat schon mal jemand nachgeguckt, ob dieses Play-Event-Feuerwertk in Helix behoben wurde? Das wäre wirklich ein Grund für mich, möglichst bald umzusteigen.

Bei mir sieht das Event-Log unter Gotham normalerweise so aus, wenn ich ein Video *einmal* starte :( Ist doch unter Gotham ein bekanntes Problem, oder?

2015.01.07 19:21:32.142 3: onXbmcChange: wz_xbmc - playStatus: paused
2015.01.07 19:21:32.169 3: onXbmcChange: wz_xbmc - playStatus: playing
2015.01.07 19:21:33.324 3: onXbmcChange: wz_xbmc - playStatus: paused
2015.01.07 19:21:33.811 3: onXbmcChange: wz_xbmc - playStatus: playing
2015.01.07 19:21:33.864 3: onXbmcChange: wz_xbmc - playStatus: paused
2015.01.07 19:21:34.408 3: onXbmcChange: wz_xbmc - playStatus: playing


Ist weg unter Helix!

2015-01-07 21:18:40.449 XBMC wz_KODI playStatus: playing
2015-01-07 21:18:40.485 Text2Speech MyTTS tts 'Licht wurde gedimmt!'
2015-01-07 21:18:40.522 XBMC wz_KODI time: 00:00:00.158
Cubietruck,RPI,QNAP Ts-419p+, FS20, FRITZ!DECT200, 7 MAX! Thermostate, 3 MAX! Fensterkontakte, Kodi, CUL V3.3, EM1000S, LW12, LD382, HUE, HM-CFG-USB-2, 1x HM-LC-SW1-FM, 2x HM-LC-SW2-FM, 2x HM-LC-Sw1PBU-FM, 3xHM-LC-Bl1PBU-FM,HM-SEC-RHS, 2xHM-SEC-SD,HM-WDS30-T-O, 3x HM-LC-Dim1TPBU-FM, RPI+AddOn

vbs

Sehr gut, danke! Dann werde ich das Upgrade wohl bald mal angehen...

blabliblu

Hallo zusammen,

könnte mir bitte jemand bestätigen, dass das Modul mit Plex funktioniert?

Ich frage weil ich das Beispiel "Lichtsteuerung mit KODI und Plex" von http://www.fhemwiki.de/wiki/XBMC ausprobiere, aber irgendwas läuft wohl nicht wie es laufen sollte :-) laut Event-Monitor erhalte ich wohl nichts und das Licht bleibt an...

Mein Setup: FHEM 5.6; Plex 0.9.9.14.5  auf Qnap NAS; Samsung D-Serie, ausgeführt mit der Plex-App, als auch über DLNA

define Plex XBMC xxx.xxx.xxx.xxx:32400 tcp
attr Plex compatibilityMode plex
attr Plex devStateIcon opened:rc_GREEN:on disconnected:rc_RED:off Initialized:m$
attr Plex verbose 5


Der State ist opened. Das erhöhte Log-Level hilft aber leider beim debuggen nicht wirklich weiter, denn außer diesen zyklischen Ausgaben ist nichts weiter zu sehen:

disconnected, waiting to reappear (Plex)
reappeared (Plex)


Würde mich freuen wenn jemand mit Rat weiterhelfen kann.

Gruß

P.A.Trick

Zitat von: blabliblu am 09 Januar 2015, 21:25:58
Hallo zusammen,

könnte mir bitte jemand bestätigen, dass das Modul mit Plex funktioniert?

Ich frage weil ich das Beispiel "Lichtsteuerung mit KODI und Plex" von http://www.fhemwiki.de/wiki/XBMC ausprobiere, aber irgendwas läuft wohl nicht wie es laufen sollte :-) laut Event-Monitor erhalte ich wohl nichts und das Licht bleibt an...

Mein Setup: FHEM 5.6; Plex 0.9.9.14.5  auf Qnap NAS; Samsung D-Serie, ausgeführt mit der Plex-App, als auch über DLNA

define Plex XBMC xxx.xxx.xxx.xxx:32400 tcp
attr Plex compatibilityMode plex
attr Plex devStateIcon opened:rc_GREEN:on disconnected:rc_RED:off Initialized:m$
attr Plex verbose 5


Der State ist opened. Das erhöhte Log-Level hilft aber leider beim debuggen nicht wirklich weiter, denn außer diesen zyklischen Ausgaben ist nichts weiter zu sehen:

disconnected, waiting to reappear (Plex)
reappeared (Plex)


Würde mich freuen wenn jemand mit Rat weiterhelfen kann.

Gruß

Schau mal in den FHEM Event Monitor und starte einen Film!
Cubietruck,RPI,QNAP Ts-419p+, FS20, FRITZ!DECT200, 7 MAX! Thermostate, 3 MAX! Fensterkontakte, Kodi, CUL V3.3, EM1000S, LW12, LD382, HUE, HM-CFG-USB-2, 1x HM-LC-SW1-FM, 2x HM-LC-SW2-FM, 2x HM-LC-Sw1PBU-FM, 3xHM-LC-Bl1PBU-FM,HM-SEC-RHS, 2xHM-SEC-SD,HM-WDS30-T-O, 3x HM-LC-Dim1TPBU-FM, RPI+AddOn

justme1968

im plex client ist der port für das json api per default nur von localhost aus erreichbar.

du musst im guisettings.xml file den zugriff von extern erst erlauben:<esallinterfaces>true</esallinterfaces>

in dem file findest du auch den tcp port den plex verwendet. ich glaube der knoten heisst esport.

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

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

blabliblu

Vielen Dank für die schnelle Hilfe!
@P.A.Trick: Im Event-Monitor wurde nichts gelistet
@justme1968: Das hat mir sehr weitergeholfen! Funktioniert jetzt einwandfrei, top!

Noch ein paar Tipps für Plex
- Die guisettings.xml in Windows, OS X und Linux ist hier zu finden:
Windows: %APPDATA%\Plex Home Theater\userdata\guisettings.xml
OS X: ~/Library/Application Support/Plex Home Theater/userdata/guisettings.xml
Linux: ~/.plexht/temp/userdata/guisettings.xml
(https://support.plex.tv/hc/en-us/articles/201806858-Reporting-issues-with-Plex-Home-Theater)
- Der TCP Port ist 9090 und esport hatte damit nichts zu tun
(https://support.plex.tv/hc/en-us/articles/201806858-Reporting-issues-with-Plex-Home-Theater) )

Sobald ich dazukomme werde ich mich auch für das FHEM-Wiki registrieren und diese Infos zum XBMC-Eintrag hinzufügen...


siggi85

Ich hätte mal ein Feature Request. Das wurde hier zwar schon mal besprochen und ich habe mich daran versucht, allerdings ist mir die Readingerstellung noch nicht so ganz klar.  ::)

- Löschen der nicht mehr benötigten Readings, wenn eine neue Art von Media abgespielt wird (zB. löschen des Readings "currentAlbum" wenn ein neuer Film gestartet wird)

fhainz

Hallo!

Ich verwende das XBMC Modul im Plex Mode schon seit einiger Zeit ohne Probleme. Vor ein paar Tagen ist mir aufgefallen das XBMC/Plex keine Sendungs Info Readings mehr generiert. Folgendes liefert der Event Monitor beim zB Serien Start.

Zitat2015-01-12 18:19:11.103 XBMC plex playStatus: playing
2015-01-12 18:19:11.103 XBMC plex type: episode
2015-01-12 18:19:11.103 XBMC plex type: episode
2015-01-12 18:19:11.103 XBMC plex id: 1562
2015-01-12 18:19:11.132 XBMC plex totaltime: 00:20:16.969
2015-01-12 18:19:11.132 XBMC plex time: 00:00:00.195
2015-01-12 18:19:11.132 XBMC plex playStatus: playing
2015-01-12 18:19:11.132 XBMC plex speed: 1
2015-01-12 18:19:11.132 XBMC plex shuffle: off
2015-01-12 18:19:11.132 XBMC plex repeat: off

list plex:
Internals:
   DEF        10.0.0.40 tcp
   DeviceName 10.0.0.40:9090
   FD         109
   Host       10.0.0.40
   LAST_PING  1421083245.08167
   LAST_PONG  1421083245.08347
   NAME       plex
   NR         233
   PARTIAL
   Port       9090
   Protocol   tcp
   STATE      opened
   TYPE       XBMC
   Pendingevents:
   Pendingplayercmds:
     835569
     207930:
       method     Player.GetProperties
       Params:
         properties:
           time
           totaltime
           repeat
           shuffled
           speed
     414945:
       method     Player.GetProperties
       Params:
         properties:
           time
           totaltime
           repeat
           shuffled
           speed
     97295:
       method     Player.GetProperties
       Params:
         properties:
           time
           totaltime
           repeat
           shuffled
           speed
   Readings:
     2015-01-03 18:29:00   currentShowtitle -
     2015-01-03 18:29:00   currentTitle    -
     2015-01-03 18:29:00   episode         -
     2015-01-12 18:15:10   fullscreen      on
     2015-01-11 17:05:10   gui             screensaveractivated
     2015-01-12 18:19:11   id              1562
     2015-01-12 18:15:10   mute            off
     2015-01-12 18:15:10   name            XBMC
     2015-01-03 12:37:50   partymode       -
     2015-01-12 18:19:32   playStatus      paused
     2015-01-12 18:19:04   playlist        add
     2015-01-12 18:19:11   repeat          off
     2015-01-03 18:29:00   season          -
     2015-01-12 18:19:11   shuffle         off
     2015-01-12 18:15:10   skin            Plex(skin.plex)
     2015-01-12 18:19:11   speed           1
     2015-01-12 18:15:10   state           opened
     2015-01-12 18:15:10   system          wake
     2015-01-12 18:19:11   time            00:00:00.195
     2015-01-12 18:19:11   totaltime       00:20:16.969
     2015-01-12 18:19:11   type            episode
     2015-01-12 18:15:10   version         12.2 stable
     2015-01-12 18:15:10   volume          62
     2015-01-03 18:29:00   year            -
Attributes:
   compatibilityMode plex
   room       5.1 Multimedia



Jemand eine Idee?


@siggi
Ich hab mir zum Rücksetzen der Readings folgendes notify definiert:
DEF:
plex.(playStatus:.stopped|system:.quit) {
  my $hash = $main::defs{"plex"};
 
  readingsBeginUpdate($hash);
    readingsBulkUpdate($hash, "currentShowtitle", "-" );
    readingsBulkUpdate($hash, "currentTitle", "-" );
    readingsBulkUpdate($hash, "episode", "-" );
    readingsBulkUpdate($hash, "season", "-" );
    readingsBulkUpdate($hash, "shuffle", "-" );
    readingsBulkUpdate($hash, "repeat", "-" );
    readingsBulkUpdate($hash, "playlist", "-" );
    readingsBulkUpdate($hash, "speed", "-" );
    readingsBulkUpdate($hash, "time", "-" );
    readingsBulkUpdate($hash, "totaltime", "-" );
    readingsBulkUpdate($hash, "type", "-" );
    readingsBulkUpdate($hash, "year", "-" );
    readingsBulkUpdate($hash, "mute", "-" ) if( $EVENT =~ /system:.quit/ );
    readingsBulkUpdate($hash, "skin", "-" ) if( $EVENT =~ /system:.quit/ );
    readingsBulkUpdate($hash, "fullscreen", "-" ) if( $EVENT =~ /system:.quit/ );
    readingsBulkUpdate($hash, "gui", "-" ) if( $EVENT =~ /system:.quit/ );
    readingsBulkUpdate($hash, "name", "-" ) if( $EVENT =~ /system:.quit/ );
    readingsBulkUpdate($hash, "partymode", "-" ) if( $EVENT =~ /system:.quit/ );
    readingsBulkUpdate($hash, "playStatus", "-" ) if( $EVENT =~ /system:.quit/ );
    readingsBulkUpdate($hash, "version", "-" ) if( $EVENT =~ /system:.quit/ );
    readingsBulkUpdate($hash, "volume", "-" ) if( $EVENT =~ /system:.quit/ );
  readingsEndUpdate($hash, 1);
}



Grüße

siggi85

Zitat von: fhainz am 12 Januar 2015, 18:24:13
@siggi
Ich hab mir zum Rücksetzen der Readings folgendes notify definiert:
DEF:
plex.(playStatus:.stopped|system:.quit) {
  my $hash = $main::defs{"plex"};
 
  readingsBeginUpdate($hash);
    readingsBulkUpdate($hash, "currentShowtitle", "-" );
    readingsBulkUpdate($hash, "currentTitle", "-" );
    readingsBulkUpdate($hash, "episode", "-" );
    readingsBulkUpdate($hash, "season", "-" );
    readingsBulkUpdate($hash, "shuffle", "-" );
    readingsBulkUpdate($hash, "repeat", "-" );
    readingsBulkUpdate($hash, "playlist", "-" );
    readingsBulkUpdate($hash, "speed", "-" );
    readingsBulkUpdate($hash, "time", "-" );
    readingsBulkUpdate($hash, "totaltime", "-" );
    readingsBulkUpdate($hash, "type", "-" );
    readingsBulkUpdate($hash, "year", "-" );
    readingsBulkUpdate($hash, "mute", "-" ) if( $EVENT =~ /system:.quit/ );
    readingsBulkUpdate($hash, "skin", "-" ) if( $EVENT =~ /system:.quit/ );
    readingsBulkUpdate($hash, "fullscreen", "-" ) if( $EVENT =~ /system:.quit/ );
    readingsBulkUpdate($hash, "gui", "-" ) if( $EVENT =~ /system:.quit/ );
    readingsBulkUpdate($hash, "name", "-" ) if( $EVENT =~ /system:.quit/ );
    readingsBulkUpdate($hash, "partymode", "-" ) if( $EVENT =~ /system:.quit/ );
    readingsBulkUpdate($hash, "playStatus", "-" ) if( $EVENT =~ /system:.quit/ );
    readingsBulkUpdate($hash, "version", "-" ) if( $EVENT =~ /system:.quit/ );
    readingsBulkUpdate($hash, "volume", "-" ) if( $EVENT =~ /system:.quit/ );
  readingsEndUpdate($hash, 1);
}



Grüße

Ah alles klar. Eine Implementierung im Modul wäre natürlich eleganter, aber ich werde das Notify demnächst mal testen. Danke dafür schon mal! :)

vbs

Argh, bei mir ist das mit Helix immer noch so, wenn ich einen Film startet :(

2015-01-13 22:31:37.354 XBMC wz_xbmc playStatus: playing
2015-01-13 22:31:37.954 XBMC wz_xbmc playStatus: paused
2015-01-13 22:31:39.211 XBMC wz_xbmc playStatus: playing
2015-01-13 22:31:39.250 XBMC wz_xbmc playStatus: paused
2015-01-13 22:31:39.884 XBMC wz_xbmc playStatus: playing


Jemand eine Idee?

P.A.Trick

Zitat von: vbs am 13 Januar 2015, 22:32:24
Argh, bei mir ist das mit Helix immer noch so, wenn ich einen Film startet :(

2015-01-13 22:31:37.354 XBMC wz_xbmc playStatus: playing
2015-01-13 22:31:37.954 XBMC wz_xbmc playStatus: paused
2015-01-13 22:31:39.211 XBMC wz_xbmc playStatus: playing
2015-01-13 22:31:39.250 XBMC wz_xbmc playStatus: paused
2015-01-13 22:31:39.884 XBMC wz_xbmc playStatus: playing


Jemand eine Idee?

Ah jetzt ja....versuche einfach mal ein "event-on-change-reading .*"
Cubietruck,RPI,QNAP Ts-419p+, FS20, FRITZ!DECT200, 7 MAX! Thermostate, 3 MAX! Fensterkontakte, Kodi, CUL V3.3, EM1000S, LW12, LD382, HUE, HM-CFG-USB-2, 1x HM-LC-SW1-FM, 2x HM-LC-SW2-FM, 2x HM-LC-Sw1PBU-FM, 3xHM-LC-Bl1PBU-FM,HM-SEC-RHS, 2xHM-SEC-SD,HM-WDS30-T-O, 3x HM-LC-Dim1TPBU-FM, RPI+AddOn

vbs

Hm, kann mir nicht denken, dass es hilft, da es ja tatsächlich ständig "changt" zwischen pause und play... Aber ich versuch es gleich trotzdem mal, bin ja für alles offen :)

P.A.Trick

Zitat von: vbs am 13 Januar 2015, 22:49:17
Hm, kann mir nicht denken, dass es hilft, da es ja tatsächlich ständig "changt" zwischen pause und play... Aber ich versuch es gleich trotzdem mal, bin ja für alles offen :)

Glaube mir, es wird klappen :D
Cubietruck,RPI,QNAP Ts-419p+, FS20, FRITZ!DECT200, 7 MAX! Thermostate, 3 MAX! Fensterkontakte, Kodi, CUL V3.3, EM1000S, LW12, LD382, HUE, HM-CFG-USB-2, 1x HM-LC-SW1-FM, 2x HM-LC-SW2-FM, 2x HM-LC-Sw1PBU-FM, 3xHM-LC-Bl1PBU-FM,HM-SEC-RHS, 2xHM-SEC-SD,HM-WDS30-T-O, 3x HM-LC-Dim1TPBU-FM, RPI+AddOn