Module für XBMC

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

Vorheriges Thema - Nächstes Thema

dennisb

Zitat von: justme1968 am 12 Januar 2014, 22:56:56
noch ein paar kleinigkeiten:

- wir hatten es ja ganz am anfang schon mal damit das plex scheinbar manchmal -1 als player zurück liefert. die änderung dafür kannst du vielleicht wieder ins modul übernehmen: in XBMC_PlayerUpdate sollte der player nur mit geschickt werden wenn er > 0 ist (zeile 158)

- plex hat keine .*Library.Get.*Details methoden sondern schickt die entsprechenden daten direkt beim Player.OnPlay in $obj->{params}->{data}->{item} gleich mit. dafür gibt es kein $obj->{params}->{data}->{item}->{id}. ich weiss nicht ob es bei xmbc auch den fall gibt das die id nicht mit geschickt wird. falls nein könnte man das zur unterscheidung verwenden.

- vielleicht kann man die readings die einen bestimten type betreffen löschen sobald ein anderer type gespielt wird? also z.b. currentAlbum, currentArtist und currentTrack löschen wenn kein lied sondern ein film oder eine serie gespielt wird.

- vielleicht kannst du bei getProperties zusätzlich zu totaltime auch noch time abfragen oder es sogar konfigurierbar machen. plex hat keinen parymode.

mit den änderungen aus 1.+2. läuft es ansonsten perfekt mit plex. 3.+4. wäre nice to have.

gruss
  andre

Moin Andre,

hoffe 1,2,4 und das Problem mit dem Versionsfeld hab ich gelöst. Hab ein Attribute compatibiltyMode eingefügt. Setz das bitte auf "plex". Dann wird Partymode rausgenommen und es werden keine Get*Details-Aufrufe mehr gestartet (so zumindest der Plan). Leider weiß ich nicht, was für Felder Plex mitsendet, daher frag ich jetzt einfach mal alle ab, die so da drin sein könnten (siehe Zeile 247 bis 255). Eventuell kannst du ja mal schauen, ob das jetzt funktioniert.
Idee 3 find ich auch gut, hab mich bisher nur noch nicht damit beschäftigt, wie man Readings am besten löscht. Hast du nen Plan, wie da die Best Practice ausschaut?

Die angepasste Version ist im Anhang. Wenn ich Rückmeldung dazu hab, wandert die ins SVN.

justme1968

klasse. das war ja schnell. probiere ich spätestens heute abend aus.

zur frage was mitgeschickt wird: jeweils genau das was xbmc im passenden get details auch antworten würde.

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

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

dennisb

Im Idealfall sollte es dann klappen. XBMC sendet Informationen zu Artist, Album etc nur mit, wenn die Library ausgeschaltet ist und selbst dann gibt's die Informationen nur für Music, weil die Daten aus den ID3-Tags entnommen werden können.

Gruß
Dennis

strauch

Zitat von: Dennis B. am 15 Januar 2014, 08:42:37
Kannst du mal per SSH auf deinen FHEM-Server connecten und schauen, ob da irgendwelche Fehler von PERL geworfen werden? Die werden in den STDOUT geschrieben und wenn man ne SSH-Session auf hat, sollte man die sehen.

Danke, werde ich gerne machen, allerdings muss ich noch ein paar doofe Fragen absondern. Ich kann mich per SSH mit meinem Raspi verbinden, da bekomme ich nichts angezeigt. Ich kann mich per Telnet mit dem FHEM Server verbinden aber auch da sehe ich nichts. Per SSH direkt mit dem FHEM geht nicht bzw. bekomme ich nicht hin.
Da müsstest du mir mal auf die Sprünge helfen. Das STDOUT sollte ja immer die Ausgabe zum Terminal oder SSH sein oder?

Danke
FHEM 5.6 VMware mit Debian. 1 CUL für FS20 und HMLAN für Homematic, HM-CC-RT-DN, HM-LC_Sw1PBU-FM, HM-LC-Bl1PBU-FM,  HM-SEC-SC, HM-SEC-SC-2, HM-LC-Sw1-Pl2, HM-Sec-RHS, ASH2200, FHT80B, S20KSE, Sonos, XBMC, FB_Callmonitor, SMLUSB, Arduino Firmata, uvm.

justme1968

wegen dem löschen der readings: ich meine es reicht das reading jeweils mit dem wert undef zu schreiben.

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

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

d0np3p3

#95
@ Strauch ob du dich per telnet oder ssh mit fhem verbindest macht keinen Unterschied,  interessant ist ob was ausgeworfen wird wenn du mit ssh oder telnet direkt mit dem raspberry verbunden bist.
Welche Version von fhem benutzt du,  und wie ist die remote bei dir definiert?

Mein define sieht so aus:
define rcxbmc remotecontrol
attr rcxbmc group X
attr rcxbmc rc_iconpath icons/remotecontrol
attr rcxbmc rc_iconprefix black_btn_
attr rcxbmc room Remote
attr rcxbmc row00 showosd:MENU,up:UP,home:HOMEsym,exec volumeup:VOLUP
attr rcxbmc row01 left:LEFT,select:OK,right:RIGHT,mute:MUTE
attr rcxbmc row02 info:INFO,down:DOWN,back:RETURN,exec volumedown:VOLDOWN
attr rcxbmc row03 exec stepback:REWIND,playpause:PLAY,stop:STOP,exec stepforward:FF
define notify_rcxbmc notify rcxbmc set XBMC $EVENT


(ohne Code Tags tapatalk unterstützt das wohl nicht)


Gesendet von meinem Nexus 4 mit Tapatalk

FHEM: Raspberry Pi (COC) & Fritz 7270 (freetz FHEM2FHEM)
IT (Elro AB440 AB600D) - Max! (6*regler 1*Thermostat 5*Fenster) Hue Bridge mit Bulbs - 2*Living-white Adapter - Iris
XBMC (Zbox) 4*SqueezeRadios 3*squeezelite dbox
AndFhem (Nexus4)

strauch

Hi,

kann ich denn irgendwie eine Ausgabe erzwingen um zu testen ob was ausgeworfen wird? Ich hab FHEM 5.5 und hab gestern noch ein Update eingespielt. Ich hab testhalber einfach mal per Weboberfläche {fhem ("set schlagmichtot on")} gemacht, da wird aber nichts ausgegeben oder liegt das daran das dann die Weboberfläche die Ausgabe ist?
Ich teste da noch mal was. Meine Remote sieht so aus:
define wz_XBMC_remote remotecontrol
attr wz_XBMC_remote group XBMC
attr wz_XBMC_remote rc_iconpath icons/remotecontrol
attr wz_XBMC_remote rc_iconprefix black_btn_
attr wz_XBMC_remote room Wohnzimmer
attr wz_XBMC_remote row00 showosd:MENU,up:UP,home:HOMEsym,exec volumeup:VOLUP
attr wz_XBMC_remote row01 left:LEFT,select:OK,right:RIGHT,mute:MUTE
attr wz_XBMC_remote row02 info:INFO,down:DOWN,back:RETURN,exec volumedown:VOLDOWN
attr wz_XBMC_remote row03 exec stepback:REWIND,playpause:PLAY,stop:STOP,exec stepforward:FF

define notify_wz_XBMC_remote notify wz_XBMC_remote set wz_XBMC $EVENT
attr notify_wz_XBMC_remote group XBMC
attr notify_wz_XBMC_remote room _Notify


Wenn du in Tapatalk [code][\/code] schreibst geht das
FHEM 5.6 VMware mit Debian. 1 CUL für FS20 und HMLAN für Homematic, HM-CC-RT-DN, HM-LC_Sw1PBU-FM, HM-LC-Bl1PBU-FM,  HM-SEC-SC, HM-SEC-SC-2, HM-LC-Sw1-Pl2, HM-Sec-RHS, ASH2200, FHT80B, S20KSE, Sonos, XBMC, FB_Callmonitor, SMLUSB, Arduino Firmata, uvm.

strauch

Also wenn ich per Telnet den Befehl absetzte kommt nur:
set wz_XBMC play all
Connection closed by foreign host.


Kann ich vielleicht irgendwas mit Logleveln ändern?
FHEM 5.6 VMware mit Debian. 1 CUL für FS20 und HMLAN für Homematic, HM-CC-RT-DN, HM-LC_Sw1PBU-FM, HM-LC-Bl1PBU-FM,  HM-SEC-SC, HM-SEC-SC-2, HM-LC-Sw1-Pl2, HM-Sec-RHS, ASH2200, FHT80B, S20KSE, Sonos, XBMC, FB_Callmonitor, SMLUSB, Arduino Firmata, uvm.

d0np3p3

Ich kann das gerade nicht testen, mal ein anderer Ansatz, welche XBMC Version hast Du im Einsatz?
FHEM: Raspberry Pi (COC) & Fritz 7270 (freetz FHEM2FHEM)
IT (Elro AB440 AB600D) - Max! (6*regler 1*Thermostat 5*Fenster) Hue Bridge mit Bulbs - 2*Living-white Adapter - Iris
XBMC (Zbox) 4*SqueezeRadios 3*squeezelite dbox
AndFhem (Nexus4)

strauch

#99
Ich hab XBMC 12.3 im Einsatz. Der Rechner ist ein Macmini mit CoreDuo und OSX 10.6. Der ist bei den versuchen aber auch gar nicht angeschaltet.

Danke fürs helfen.
FHEM 5.6 VMware mit Debian. 1 CUL für FS20 und HMLAN für Homematic, HM-CC-RT-DN, HM-LC_Sw1PBU-FM, HM-LC-Bl1PBU-FM,  HM-SEC-SC, HM-SEC-SC-2, HM-LC-Sw1-Pl2, HM-Sec-RHS, ASH2200, FHT80B, S20KSE, Sonos, XBMC, FB_Callmonitor, SMLUSB, Arduino Firmata, uvm.

dennisb

Setz das Loglevel mal auf 5:
attr global verbose 5
Dann führ nen XBMC command aus und häng die Log an deinen nächsten Post dran. Bisher logge ich noch nicht großartig was in dem XBMC modul (sollte ich noch ändern), aber vielleicht geht's ja auch ein anderen Stelle schief.

dennisb

Hmm... hab gerade mal was geändert. Eventuell löst das das Problem. Probier mal bitte die Datei im Anhang.

strauch

Bingo das war es, er stürzt nicht mehr ab. Dankeschön. Verbose 5 hatte auch nichts weiteres gebracht.


2014.01.15 17:19:27 5: Cmd: >set wz_XBMC play all<
2014.01.15 17:19:30 1: XBMC_HTTP_Request http://192.168.200.15:80/jsonrpc: Can't connect to http://192.168.200.15:80<


und dann kommt mein Reboot:
2014.01.15 17:19:59 1: Including fhem.cfg
2014.01.15 17:19:59 5: Cmd: >attr global autoload_undefined_devices 1<
FHEM 5.6 VMware mit Debian. 1 CUL für FS20 und HMLAN für Homematic, HM-CC-RT-DN, HM-LC_Sw1PBU-FM, HM-LC-Bl1PBU-FM,  HM-SEC-SC, HM-SEC-SC-2, HM-LC-Sw1-Pl2, HM-Sec-RHS, ASH2200, FHT80B, S20KSE, Sonos, XBMC, FB_Callmonitor, SMLUSB, Arduino Firmata, uvm.

justme1968

grad getestet und noch zwei kleine fehler bemerkt:

- bei meiner perl version meckert er wegen: Type of arg 1 to push must be array (not hash element) at ./FHEM/70_XBMC.pm line 160, near "'partymode') "
das lässt sich natürlich beheben:push(@{$obj->{params}->{properties}}, 'partymode') if(AttrVal($hash->{NAME},'compatibilityMode','xbmc') eq 'xbmc');

- das zweite ist das dir scheinbar beim kopieren ein paar fehler passiert sind. da taucht ein paar mal zu viel 'file' auf. wenn ich das jeweils passend ersetze geht es einwandfrei.

klasse!

gruss
  andre

ach ja: und noch ein vorschlag: vielleicht könnte man wenn gerade etwas gespielt wird alle x sekunden (z.b. 30) time anfragen und das reading aktualisieren.
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

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

dennisb

Moin andre,

hab die Fehler behoben und das ganze direkt ein bisschen generischer gemacht. Ich iteriere jetzt einfach über alle Felder im item-Field. D.h. selbst wenn ich welche vergessen hab, werden die jetzt passend gesetzt. In dem Zusammenhang ist mir aufgefallen, dass teilweise auch die falschen Readings erzeugt wurden (betraf nur XBMC). Das hab ich direkt mitbehoben. Kannst du eventuell noch einmal testen, ob das mit Plex alles funktioniert? Dann würd ich das heut abend einchecken.
Die Aktualisierung alle 30 Sekunden werde ich einbauen, allerdings komme ich da heute nicht mehr zu. In dem Zusammenhang denke ich eventuell auch nochmal über Polling für HTTP nach.
Was das Löschen der Felder angeht, muss ich mir nochmal was überlegen. Weil alle am Anfang zu löschen, ist vermutlich der falsche Ansatz, weil das das Attribut event-on-change aushebeln würde. Dementsprechend muss ich alle Felder löschen, denen kein neuer Wert zugewiesen wurde. Hoffe ich komme am Wochenende dazu.

Gruß
Dennis