Hallo zusammen,
da ich den Einstieg in FHEM und Perl finden wollte, hab ich mir als erstes Ziel gesetzt gehabt, ein Module zur Kontrolle von XBMC zu erstellen. Nach recht kurzer Zeit konnte ich erste Befehle absetzen. Dann ist mir aufgefallen, dass XBMC auch Notifications versenden kann, was in mir den Ehrgeiz geweckt hat, diese auch innerhalb von FHEM benutzen zu können. Herausgekommen ist bei der ganzen Sache das angehangene Modul. Es bietet die Möglichkeit einige Befehle (play, pause, stop, mute, next, previous und andere) an XBMC zu senden. Es lassen sich auch Infoboxen im XBMC anzeigen. Damit könnte man über Anrufe informieren. Des Weiteren werden Events erzeugt, wenn XBMC eine Notification versendet. Eine ausführlichere Erläuterung des Moduls habe ich in die Modul-Datei geschrieben.
Vielleicht ist das Modul ja für den ein oder anderen interessant. Bitte nicht wundern, falls der Code komisch aussieht. Das Modul ist effektiv das erste was ich in Perl geschrieben habe und da ich meist Java programmiere, hab ich auf angehangene Ifs verzichtet. :)
Solltet ihr Fehler finden oder Anregungen haben, einfach melden. Es würde mich nicht wundern, wenn das Modul noch ein paar Fehler enthält. Um das Modul zu benutzen wird, benötigt man das JSON::RPC::Client Perl-Modul. Falls man nur die TCP-Connection nutzt, kann es sein, dass es ausreicht, nur das Modul JSON::XS zu installieren.
Eine Frage bezüglich der Modul-Präfixe hätte ich. Haben die Zahlen (bis auf 99) irgendeine spezielle Bedeutung? Habe jetzt 70 gewählt, weil ich mich ursprünglich an dem Modul für Samsung TVs orientiert hatte.
Gruß
Dennis
hallo,
habe dein modul gerade gefunden und ausprobiert. ganz klasse das es das gibt.
ich verwende aber statt xbmc plex das in der neuesten entwicklerversion inzwischen auch das xbmc api kann. es scheint aber noch unterschiede zu geben da nur ein paar kommandos funktionieren msg und mute z.b. aber alles was mit abspielen zu tun hat nicht. und zur zeit nur mit http. tcp geht nicht. ich weiss aber noch nicht ob das eventuell noch deaktiviert ist.
ich werde da noch ein wenig probieren. hättest du Interesse das modul zu erweitern das es auch mit plex funktioniert? es gibt auch eine ganze lange reihe funktionen die noch nicht eingebaut sind. vielleicht wäre es gut wenn man die liste der Kommandos leichter erweiterbar machen könnte ohne das jeweils der Kommando parser erweitre und neue Funktionen geschrieben werden müssen. als fern ziel vielleicht sogar per introspect.
gruss
andre
Hey,
habe Plex noch nie verwendet, aber wenn die wirklich die XBMC JSON RPC API unterstützen, dann müssen die wohl nachbessern :)
Konnte leider keine Informationen zur Unterstützung der XBMC API finden. Wo hast du die Informationen her?
Ein Modul zur Unterstützung der Plex HTTP API sollte nicht so schwer sein. Wollte bei Gelegenheit mal ein Modul zur Nutzung der Dreambox HTTP API schreiben. Wenn das fertig ist, kann man Teile davon bestimmt auch nutzen, um die HTTP API von Plex anzusprechen.
Konnte nichts dazu finden, dass Plex, ähnlich wie XBMC, Notifications verschickt. Falls die das nicht tun, könnte man Events höchstens über Polling genieren und das ist mir zu nervig, um das implementieren zu wollen :)
Das Einbauen weiterer XBMC Commands ist mehr oder weniger nur noch Fleißarbeit. Die Liste der Commands und auch Notifications ist lang und ich hatte am Wochenende schlichtweg keine Lust mehr darauf. Werde das in nächster Zeit ausbauen.
Gruß
Dennis
Hi Dennis,
coole Idee - vielen Dank für das Modul!
Hab eben versucht es auf meiner FB7390 einzurichten. Nach reload 70_XBMC.pm kommt
Can't locate JSON/RPC/Client.pm
Mit JSON::XS befürchte ich dann dasselbe - gibt's nicht auf der FritzBox.
Ohne geht's nicht, oder?
LG, Uli
Kann man auf der Fritzbox keine Perl-Module nachinstallieren?
Um die Abhängigkeit von den Modulen loszuwerden, müsste ich das Umwandeln von Hashes in JSON (und zurück) selbst implementieren. Ich schau mir mal an, wie viel Aufwand das ist. Solltest du im Internet zufällig über die eine Implementation davon stolpern, kannst du ja mal Bescheid sagen.
Kannst du mal testen, ob URI::Escape auf der Fritzbox vorhanden ist?
Gruß
Dennis
Zitat von: Dennis B. schrieb am Mo, 07 Januar 2013 19:43Kannst du mal testen, ob URI::Escape auf der Fritzbox vorhanden ist?
So wird erfolgreich geladen:
use URI::Escape;
#use JSON::RPC::Client;
#use JSON::XS;
use Data::Dumper;
use DevIo;
also...
- tcp scheint nicht zu gehen weil port 9090 scheinbar zur zeit nur für localhost offen ist.
- ansonsten sollte es für die events auch noch die möglichkeit per websockets geben. ich weiss aber nicht ob das von perl aus geht.
- ich hab gerade gefunden warum die meisten kommandos nicht gingen :)... die playerid muss 1 sein für video und 0 für musik. nicht wie bei dir 0. mach doch erst mal ein attribut draus. und irgendwann am besten per { "jsonrpc": "2.0", "method": "Player.GetActivePlayers", "params": {}, "id": 0 } den aktiven player abfragen.
- zumindest unter plex bekommt man alle Kommandos per {"jsonrpc":"2.0","method":"JSONRPC.Introspect","id":"introspect", "getdescriptions": true, "filterbytransport": true } raus. und ja. das ist eine verdammt lange liste :)
Zitattcp scheint nicht zu gehen weil port 9090 scheinbar zur zeit nur für localhost offen ist.
Bin mir gerade nicht sicher, ob du über Plex oder XBMC redest, aber in den XBMC Einstellungen kann man das auch für andere erlauben. Siehe http://wiki.xbmc.org/index.php?title=JSON-RPC_API#Enabling_JSON-RPC (//wiki.xbmc.org/index.php?title=JSON-RPC_API#Enabling_JSON-RPC)
Zitatansonsten sollte es für die events auch noch die möglichkeit per websockets geben. ich weiss aber nicht ob das von perl aus geht.
Hab keine vernünftige Websocket implementation für Perl gefunden und selbst programmieren wollte ich die Unterstützung nicht. Wüsste auch nicht, was der Vorteil gegenüber TCP ist. Sehe ehr unnützen Overhead im Vergleich zu TCP.
Zitatich hab gerade gefunden warum die meisten kommandos nicht gingen :)... die playerid muss 1 sein für video und 0 für musik. nicht wie bei dir 0. mach doch erst mal ein attribut draus. und irgendwann am besten per { "jsonrpc": "2.0", "method": "Player.GetActivePlayers", "params": {}, "id": 0 } den aktiven player abfragen.
letzteres werde ich machen. Irgendwo im Code hatte ich sogar geschrieben, dass ich die PlayerID vermutlich nicht hardcoded da reinpacken sollte :)
Zitatzumindest unter plex bekommt man alle Kommandos per {"jsonrpc":"2.0","method":"JSONRPC.Introspect","id":"introspect", "getdescriptions": true, "filterbytransport": true } raus. und ja. das ist eine verdammt lange liste :)
schaue mir die Liste am Wochenende eventuell mal an. Vorher hab ich keine Zeit mir Plex anzuschauen.
@UliM
habe mal probiert ein paar Abhängigkeiten loszuwerden. Falls es das JSON Modul auf der Fritzbox gibt, könnte es funktionieren. Bitte teste mal die Datei im Anhang.
ZitatBin mir gerade nicht sicher, ob du über Plex oder XBMC redest, aber in den XBMC Einstellungen kann man das auch für andere erlauben. Siehe http://wiki.xbmc.org/index.php?title=JSON-RPC_API#Enabling_JSON-RPC (//wiki.xbmc.org/index.php?title=JSON-RPC_API#Enabling_JSON-RPC)
ja. ich weiss. nur gibt es die oberfläche in plex so nicht und ich hab noch nicht rausgefunden wie der parameter im config file heißen muss.
Zitatletzteres werde ich machen. Irgendwo im Code hatte ich sogar geschrieben, dass ich die PlayerID vermutlich nicht hardcoded da reinpacken sollte :)
das habe ich gesehen :) wenn du das einbaust solltest du das nicht nur am anfang einmal machen sondern ich vermute vor jedem kommando weil sich die player id ändert wenn man z.b. von video nach musik wechselt.
Zitatschaue mir die Liste am Wochenende eventuell mal an. Vorher hab ich keine Zeit mir Plex anzuschauen.
keine hektik. das ist auch nicht auf die schnelle möglich. du müsstest client und server installieren (jeweils software) aber die entwickler version mit der das api erstmals geht ist noch nicht öffentlich. aber das mit dem introspect sollte mit xbmc genau so gehen.
Zitat von: Dennis B. schrieb am Mo, 07 Januar 2013 22:08@UliM
habe mal probiert ein paar Abhängigkeiten loszuwerden. Falls es das JSON Modul auf der Fritzbox gibt, könnte es funktionieren. Bitte teste mal die Datei im Anhang.
Hi Dennis,
hat leider noch nicht gereicht:
Can't locate
JSON.pm=8-)
Vielen Dank für dein Modul!
Ich nutze XBMC als "Zweitsoftware" neben MediaPortal.
Deshalb wäre es schön, wenn das Plugin berücksichtigt, ob die Anwendung überhaupt erreicht werden kann.
Erste Erfahrungen (LAN, TCP):
- generell funktioniert alles, was implementiert ist
- ein "set <xmbc> quit" wird zwar korrekt ausgeführt, aber nach dem Beenden von XBMC stirbt auch FHEM
- wenn FHEM gestartet wird, während XBMC nicht läuft, scheinen einige Aufrufe zu blocken: Das Webinterface hat ständig sekundenlange Verzögerungen und einige HMLAN-Befehle werden (vermutlich timingbedingt) mit "Missing ACK" quittiert. Wenn ich die XBMC Definition lösche ist sofort wieder alles fix.
das einschalten vom tcp port für alle interfaces geht in plex mit dem gleichen parameter <esallinterfaces>true</esallinterfaces>
wie bei xbmc. damit geht es jetzt auch per tcp und die events kommen zurück.
So ich habe mal ein wenig gebastelt und eventuell einen Großteil der Probleme gelöst (wie viele neue ich geschaffen habe, wird sich noch herausstellen) :)
Direkt zu Beginn forke ich jetzt den FHEM-Prozess und checke in dem geforkten Prozess, ob XBMC erreichbar ist. Dadurch sollte FHEM nicht ausgebremst werden. Der geforkte Prozess beendet sich automatisch, wenn eine connection zu XBMC möglich ist oder wenn der Hauptprozess nicht mehr läuft. Der Hauptprozess probiert nur dann eine Verbindung zu XBMC aufzubauen, wenn der Kindprozess nicht mehr läuft. Bei mir sieht es stark danach aus, als würde dies das Problem mit dem nicht reagierenden FHEM lösen.
@rtv: Vielleicht kannst du das ja auch noch einmal bei dir testen.
Zitatein "set <xmbc> quit" wird zwar korrekt ausgeführt, aber nach dem Beenden von XBMC stirbt auch FHEM
Den Fehler habe ich gefunden und behoben. Bei mir geht's jetzt wunderbar.
Für alle Commands die den Player betreffen, kann man nun angeben, welcher Player gestoppt werden soll. Beispielsweise stoppt "set <XBMC_device> stop audio" den Musikplayer. Falls kein Player angegeben ist, wird probiert alle aktiven Player zu stoppen. Solange nur ein Player aktiv ist, funktioniert das auch recht gut. Falls man aber Musik hört und Bilder anschaut, dann werden zwar zwei Commands zum Stoppen der Player geschickt, aber XBMC reagiert nur auf einen. Das Ganze scheint ein Bug in XBMC zu sein.
ZitatCan't locate JSON.pm
Hast du mal probiert http://search.cpan.org/CPAN/authors/id/M/MA/MAKAMAKA/JSON-2.53.tar.gz (//search.cpan.org/CPAN/authors/id/M/MA/MAKAMAKA/JSON-2.53.tar.gz) herunterzuladen und in den FHEM-Ordner zu entpacken (da wo auch die Module sind)?
Das normale JSON Modul hat keine weiteren Abhängigkeiten und ist, soweit ich das in Erfahrung bringen konnte, in pure perl geschrieben. Eventuell geht's auf diese Art schon.
Hey Dennis,
mich würde mal interessieren ob du es auch hinbekommen könntest von XBMC direkt zu streamen , ins FHEM , hauptsächlich in den Floorplan.
Normalerweise soweit ich informiert bin , wäre dies über JSON machbar ...
Hallo Jumbo,
habe ich leider keine Ahnung, wie man das machen kann. Ist auch nicht mein vorrangiges Ziel. Eventuell lassen sich per JSON die notwendigen URLs fürs Streaming beschaffen (was ich jetzt spontan auch nicht in der API gesehen habe), aber dann fehlen noch Player für das FHEM-Webinterface.
Gruß
Dennis
Zitat von: Dennis B. schrieb am Di, 08 Januar 2013 23:27So ich habe mal ein wenig gebastelt und eventuell einen Großteil der Probleme gelöst (wie viele neue ich geschaffen habe, wird sich noch herausstellen) :)
@rtv: Vielleicht kannst du das ja auch noch einmal bei dir testen.
Astrein - funktioniert jetzt ohne Verzögerungen!
Zitat von: Dennis B. schrieb am Di, 08 Januar 2013 23:27Zitatein "set <xmbc> quit" wird zwar korrekt ausgeführt, aber nach dem Beenden von XBMC stirbt auch FHEM
Den Fehler habe ich gefunden und behoben. Bei mir geht's jetzt wunderbar.
Danke, klappt :)
Eine Kleinigkeit bei msg: Wenn ich z.B.
set XBMC msg "Eingehender Anruf" "555-1234567890" 10000 info
absetze, dann werden die mittleren String-Delimiter nicht richtig erkannt.
Kann das gerade hier nicht testen, aber ich tippe darauf, dass der erste Part der Regex zu greedy ist. Hab das mal auf non-greedy gestellt. Bitte teste mal die angehangene Version.
Wunderbar - funktioniert ;-)
Freut mich, dass es jetzt funktioniert! Hast du nebem dem Anzeigen von Anrufen schon konkrete Use Cases?
Hatte mal überlegt, dass man mit dem Modul vom Prinzip auch seine Playliste zur Laufzeit filtern könnte. Wenn man komplexe Events an hat, bekommt man ja Artist und Musiktitel im Event, die man per Regex filtern könnte. Bei nicht gewollten Titel könnte man ein "set <XBMC_device> next" absetzen. Allerdings weiß ich nicht, ob die Verzögerung nicht eventuell zu groß ist. Wäre ja blöd, wenn man immer erst 3 sek vom nächsten Titel hört (eventuell bekommt man das aber auch mit Crossfade hin).
Zitat von: Dennis B. schrieb am Di, 08 Januar 2013 23:27Für alle Commands die den Player betreffen, kann man nun angeben, welcher Player gestoppt werden soll. Beispielsweise stoppt "set <XBMC_device> stop audio" den Musikplayer. Falls kein Player angegeben ist, wird probiert alle aktiven Player zu stoppen. Solange nur ein Player aktiv ist, funktioniert das auch recht gut. Falls man aber Musik hört und Bilder anschaut, dann werden zwar zwei Commands zum Stoppen der Player geschickt, aber XBMC reagiert nur auf einen. Das Ganze scheint ein Bug in XBMC zu sein.
Habe den Bug von XBMC gemeldet, er wurde behoben. In der nächsten XBMC Version sollte es möglich sein, dass man alle Player per "set <XBMC_device> stop" stoppen kann.
Ich hab auf einem meiner RPis open ELEC laufen, was soweit okay ist (war mitunter etwas langsam, was die Reaktionszeiten anging).
Gestern sind meine nachbestellten RPis gekommen, und wie zu erwarten, waren das die Modelle mit dem 4G Chip (=512 MB RAM).
Meine "alten" Typ-B RPis haben noch den 2G Chip (=256 MB Ram).
Frage: macht das bei XBMC einen Unterschied und wenn ja, müsste ich da den Memory-Split irgendwie umstellen?
VG
Ralf
Zitat von: Dennis B. schrieb am Di, 08 Januar 2013 23:27ZitatCan't locate JSON.pm
Hast du mal probiert http://search.cpan.org/CPAN/authors/id/M/MA/MAKAMAKA/JSON-2.53.tar.gz herunterzuladen und in den FHEM-Ordner zu entpacken (da wo auch die Module sind)?
Das normale JSON Modul hat keine weiteren Abhängigkeiten und ist, soweit ich das in Erfahrung bringen konnte, in pure perl geschrieben. Eventuell geht's auf diese Art schon.
Hi,
hab's mal entpackt nach
/var/InternerSpeicher/fhem/lib/perl5/site_perl/5.12.2/JSON-2.53
fhem shutdown
startfhem
-> selbe Meldung:
Can't locate JSON.pm in @INC
Schade.
Gruß,
Uli
Zitat von: UliM schrieb am Do, 10 Januar 2013 20:22-> selbe Meldung:
Can't locate JSON.pm in @INC
bin grad zu faul zum nachsehen:
wenn die JSON erweiterung ein einzelnes file ist, dann pack es mal unter FHEM/lib (also das lib-Verzeichnis innerhalb von $modpath).
gruss martin
Danke, funktioniert bei mir jetzt auch! Wichtig ist, update development[/courier] auszuführen, sonst gibt es Undefined subroutine &main::readingsSingleUpdate called at ./FHEM/70_XBMC.pm line 243.
Ich habe damit jetzt eine Variante von http://www.fhemwiki.de/wiki/Sonos_Anwendungsbeispiel#Beispiel_f.C3.BCr_eine_Verst.C3.A4rkerschaltung_auf_Basis_des_Player-Zustands (//www.fhemwiki.de/wiki/Sonos_Anwendungsbeispiel#Beispiel_f.C3.BCr_eine_Verst.C3.A4rkerschaltung_auf_Basis_des_Player-Zustands) laufen (wobei das delete ggbf. zu einem delete Medienplayer_Wohnzimmer_aus_timer : Please define Medienplayer_Wohnzimmer_aus_timer first im Log führt, aber damit kann ich leben).
Was natürlich noch schöner wäre, wäre ein generisches UPnP-Modul was dann unter anderem auch mit XBMC geht. Ich war ja drauf und dran mich an sowas ranzusetzen (obwohl Perl auch nicht meine Sprache ist), bin aber etwas zurückgeschreckt weil Net::UPnP nicht so aussieht als ob es die notwendigen Events liefern würde (und auch sonst offenbar nur blocking arbeitet) und http://perlupnp.sourceforge.net/ (//perlupnp.sourceforge.net/) (was auch das Sonos-Modul im Wiki benutzt) offenbar seit 9 Jahren unmaintained ist.
Daher: Danke für dein XBMC-Modul, das nehme ich jetzt als prima Provisorium (die ja bekanntlich immer am längsten halten).
ZitatHast du mal probiert http://search.cpan.org/CPAN/authors/id/M/MA/MAKAMAKA/JSON-2.53.tar.gz (//search.cpan.org/CPAN/authors/id/M/MA/MAKAMAKA/JSON-2.53.tar.gz) herunterzuladen und in den FHEM-Ordner zu entpacken
Ich kann
Bestätigen dass es auf einer Fritzbox läuft wenn man sich die benötigten Dateien unter oben genanten Link besorgt und dann die Datei JSON.pm ins richtige Verzeichnis packt: /fhem/lib/perl5/site_perl/5.12.2/mips-linux ebenfalls wird der Ordner JSON (beinhaltet u.a. backportPP.pm) mit Unterordner an diesem Ort benötigt.
Dann FHEM neustarten mit Shutdown Restart und danach läd das Modul mit reload 70_XBMC.pm problemlos und XBMC kann gesteuert werden.
Vielen Dank für das schöne Modul!
Eine Frage hätte ich allerdings auch: Wie kann man sich die aktuell gespielten Titel in FHEM anzeigen lassen? Und kann man in den Messages an XBMC auch Variablen reinschreiben (z.B. die Nummer eines Anrufers vom Callmonitor-Script)?
[quote title=Emil schrieb am So, 14 April 2013 02:55]
ZitatEine Frage hätte ich allerdings auch: Wie kann man sich die aktuell gespielten Titel in FHEM anzeigen lassen? Und kann man in den Messages an XBMC auch Variablen reinschreiben (z.B. die Nummer eines Anrufers vom Callmonitor-Script)?
Wenn Du freetz auf der Fritte hast, dann könnte das hier ein Lösungsansatz sein...
http://www.xbmcnerds.com/index.php?page=Thread&threadID=24656 (//www.xbmcnerds.com/index.php?page=Thread&threadID=24656)
Cheers, Stefan.
Wenn ich das richtig lese. Kann ich "nur" Play pause etc und Messages.
Ich kann aber nicht Pfeiltasten drücken nachstellen, richtig?
Oder Titel oder Ordner auswählen und Play drücken.
Puh wenn dann wartet als Neuling ein haufen Arbeit auf mich.
Gruß
Andre
Ich hab JSON.pm versucht einzubringen.
Scheitere aber an der Meldung:
Can't locate JSON/backportPP.pm in @INC (@INC contains: /etc/perl /usr/local/lib/perl/5.14.2 /usr/local/share/perl/5.14.2 /usr/lib/perl5 /usr/share/perl5 /usr/lib/perl/5.14 /usr/share/perl/5.14 /usr/local/lib/site_perl . ./FHEM) at (eval 68) line 2. at ./FHEM/70_XBMC.pm line 70 Compilation failed in require at ./FHEM/70_XBMC.pm line 70. BEGIN failed--compilation aborted at ./FHEM/70_XBMC.pm line 70.
da fehlt das Modul JSON:backportPP als Voraussetzung.
Das war früher Bestandteil von JSON, ist aber seit Perl 5.14 ein eigenes Modul.
-----
Hallo Betateilchen,
okay, frage von einem Anfänger, wo kann ich das herbekommen?
Ich hab wohl 2 Perl versionen auf dem PI
5.14 und 5.14.2
Danke für deine Hilfe.
JSON funktioniert auf dem Raspi aber ohne diese Klimmzüge.
Wie hast Du denn versucht, JSON zu installieren? Am einfachsten geht das mit "apt-get install libjson-perl"
Ich hab nur die JSON.pm kopiert ;)
Vllt. war das der Fehler.
Danke.
Ich hab kein normales Wheezy drauf. Sondern raspbmc.
Ich weiß nicht wie weit das abgespeckt ist. Mein Ziel war es XBMC und FHEM auf dem Pi laufen zu lassen.
Kennst du dich mit dem 70_XBMC Modul aus?
Mich interessiert ob ich eine Datei direkt aufrufen kann. In der beschreibung steht ich kann nur Stop Play Pause volume shutdown etc.
Wenn das XBMC-Modul richtig läuft dann werd ich mal einiges versuchen.
Im sourcecode hab ich was gefunden, was evtl. direkt aufrufen könnte. Bin mir aber nicht sicher. Kopiere gleich mal den code raus.
Das XBMC Modul kenne ich nicht, aber die Installation von JSON sollte auch bei raspbmc identisch funktionieren.
Hallo Betateilchen,
ich weiß das du dich mit dem Modul nicht auskennst, aber ich weiß das du mir sagen kannst ob es das tut was es soll.
;)
Laut definition http://wiki.xbmc.org/index.php?title=JSON-RPC_API/v4#Player.GoTo (//wiki.xbmc.org/index.php?title=JSON-RPC_API/v4#Player.GoTo)
kann ich damit doch direkt eine Position in der Playlist anspringen richtig? Ausschnitt aus der XBMC.pm
sub XBMC_Set_Goto($$$)
{
my ($hash,$direction,$player) = @_;
my $obj = {
'method' => 'Player.GoTo',
'params' => {
'to' => $direction,
'playerid' => -1 #will be replaced with the active player
}
};
return XBMC_PlayerCommand($hash,$obj,$player);
Edit meint.
Ich sollte mich noch für die hilfe mit JSON bedanken.
Das hat geklappt. Kein Kompilierungsfehler mehr.
DANKE
Hallo zusammen,
ich hab jetzt fast alles laufen.
RASPBMC und FHEM auf dem PI,
Kommunikation zwischen PI und XBMC läuft.
Ich kann Bilder weiter und zurückblättern.
Mit Goto komme ich noch nicht weiter...
Was für einen Befehl muss ich dafür absetzen? Aus dem Quellcode werde ich nur so halb schlau.
Probieren brachte mich bisher nicht zum Erfolg.
Kann mir evtl. jemand einen Hinweis geben?
set XBMC Goto
Welche Parameter muss ich mitgeben?
Player.GoTo -> Parameter: Next, Previous, Nummer des Liedes (Musik)
Info: JSON-RPC_API (//wiki.xbmc.org/?title=JSON-RPC_API/v6#Player.GoTo)
Next und Prev funktioniert auch bei Bildern.
So bei mir ist das mit XBMC defined.
set XBMC Goto picture 8
set XBMC Goto picture8
set XBMC Goto 8
set XBMC Goto8
set XBMC 8 Goto picture
funktioniert z.B. alles nicht.
Obowohl es in der XBMC.pm Goto gibt.
Okay, mein Fehler - dieses Modul unterstützt kein "Springe zur Position in der Wiedergabeliste".
Kannst einfach in der Subroutine XBMC_Set:
nach:
elsif($cmd eq 'prev') {
return XBMC_Set_Goto($hash,'previous', @args);
}
elsif($cmd eq 'next') {
return XBMC_Set_Goto($hash,'next', @args);
}
einfügen:
elsif($cmd eq 'goto') {
return XBMC_Set_Goto($hash, $args[0] - 1, $args[1]);
}
mit folgenden Aufruf:
set <name> goto 8
springt XBMC bei der Musikwiedergabe direkt zur Position 8 in der Wiedergabeliste.
Grüßle
Hi, hast du das getestet?
Erstmal danke.
Ich hab leider keine Musik. Ich versuche gerade noch vergebens eine Smartplaylist mit Videos einzurichten. Leider bin ich anscheinend zu blöd.
Das Problem liegt darin das die Daten nicht lokal liegen sondern auf einem Nas. Vorallem sind das Bilder zu einem Video konvertiert. Ergo Sie entsprechen auch keinem Genre. Grml.
Bei Bildern klappt das leider nicht mit Goto. Hätte ja klappen können ;) So wie prev und next.
Gruß Andre
Hallo,
ich bin mir nicht sicher, ob ich Dich folgen kann.
Du möchtest mit dem Befehl was tun ?
Auf ein bestimmtes Bild zugreifen ?
Grüßle
Ganz genau das ist mein Plan.
Ich möchte einen Ordner mit Bildern in einer Diashow wiedergeben.
Wenn Event X eintritt soll z.b. Bild 8 in der Playlist "angesprungen" werden.
Mit Videos funktioniert der neue Befehl goto. Danke dafür ;)
Jetzt war meine Überlegung für jedes Bild ein 5sec. Video zu machen. Geht aber nicht weil, die Ladezeit echt lang ist.
Ich glaube laut Definition Thema Playlist und Bilder schließen sich gegenseitig aus.
Praktisch lässt sich über JSON-RPC Slideshow eines vorgegebenen Verzeichnisses starten (inkl. Random, Repeat usw.), aber nur die Befehle Prev/Next sind zulässig.
Hier wäre Beispiel für die Anzeige eines Bildes:
nach dem Code:
elsif($cmd eq 'stop') {
return XBMC_Set_Stop($hash, @args);
}
einfügen:
elsif($cmd eq 'picture') {
return XBMC_Set_Picture($hash, @args);
}
paar Zeile später vor dem Aufruf:
sub XBMC_Set_Message($@)
neue Routine einfügen:
sub XBMC_Set_Picture($@)
{
my ($hash,$url,$filename) = @_;
$url = $1 if ($url =~ /^['"](.*)['"]$/);
$filename = $1 if ($filename =~ /^['"](.*)['"]$/);
my $obj = {
'method' => 'Player.Open',
'params' => {
'item' => {
'file' => $url . $filename
}
}
};
return XBMC_Call($hash,$obj);
}
Jetzt kannst Du einzelnes Bild anzeigen mit:
set <name> picture url dateiname
z.B. set wzXBMC picture 'Benutzer:Passwort@smb://192.168.1.11/fotos/FHEM' '001.JPG'
Hoffe soweit geholfen zu haben.
Grüßle
Sorry das ich mich jetzt erst melde. Bissel viel um die Ohren. Ich werde das versuchen.
1000000 Dank für deine Hilfe!!
Ich hab das nun eingebaut. Leider scheint mit dem Pfadaufruf was nicht zu stimmen, oder es wird falsch übergeben. Leider hab ich kein Log was ich einsehen kann.
Er macht ein schwarzes Bild, was ja schonmal drauf hindeutet das er den Befehl so halb annimmt.
Vermute er kann das Bild von dem Pfad nicht lesen.
Hast du das mal Probiert? Ich bekomme es nicht hin. Ich habe jetzt 2 Quellen genommen, bei beiden kommt nur ein schwarzes Bild. Einmal eine linux Quelle und einmal eine windows Quelle. Leider in einer Domäne.
Hi,
die Quellen sind im XBMC eingebunden ?
Falls ja, versuche bitte die URL aufzubauen ohne "Benutzer:Passwort@" z.B.:
set wzXBMC picture 'smb://192.168.1.11/fotos/FHEM' '001.JPG'
Die API-Schnittstelle liefert kein ReturnCode wenn Pfad nicht angesprochen werden kann.
Und wie Du selber erkennen konntest, XBMC liefert nur schwarzes Bild, dabei wird kein Eintrag im XBMC Log erzeugt.
Deswegen ist eine Fehleranalyse an sich absolut schwer, meistens liegt es an der Berechtigung zwischen einzelnen Instanzen.
Grüßle
Hallo,
eine Frage zum Modul:
Ist es irgendwie möglich einen Radiostream, welcher als Playlist vorliegt,
über FHEM zu starten bzw. zu stoppen?
Gruß
Dieter
Hi Dieter,
was du als Test versuchen könntest, wäre direkt mit deinem XBMC über Browser zu kommunizieren:
PlaylistID "1" starten:
http://XBMC_IP:PORT/jsonrpc?request={"jsonrpc":"2.0","id":1,"method":"Player.Open","params":{"item":{"playlistid":1},"options":{"repeat":"all"}}}
Playlist stoppen:
http://XBMC_IP:PORT/jsonrpc?request={"jsonrpc":"2.0","id":1,"method":"Player.Stop"}
Falls beide Befehle funktionieren sollten, dann würde ich die bestehende Funktion erweitert bzw. verbessern.
Grüßle
Hi,
danke für die Antwort.
Momentan kann ich die Playlist folgendermaßen starten:
http://XBMC_IP/jsonrpc?request={"jsonrpc": "2.0", "method": "Player.Open", "params": { "item": { "file": "special://profile/playlists/music/xxx.m3u" } }, "id": 1}
Bzw. wieder stoppen:
http://XBMC_IP/jsonrpc?request={"jsonrpc":"2.0","id":1,"method":"Player.Stop","params":{"playerid":0}}
Wenn ich dies URL-Encode, kann ich über GetHttpFile die entsprechende Playlist starten.
{GetHttpFile("XBMC_IP", "/jsonrpc?request=%7B%22jsonrpc%22%3A+%222.0%22%2C+%22method%22%3A+%22Player.Open%22%2C+%22params%22%3A+%7B+%22item%22%3A+%7B+%22file%22%3A+%22special%3A%2F%2Fprofile%2Fplaylists%2Fmusic%2Fxxx.m3u%22+%7D+%7D%2C+%22id%22%3A+1%7D")}
Grüße
Dieter
Hallo zusammen.
Ich hab FHEM auf WindowsXP portiert.
Da in Zukunft wohl noch mehr dazu kommen wird.
1. Jetzt bekomm ich den Fehler das ppid nicht gefunden werden kann.
Ist auch klar.
sub XBMC_Ready
Versucht wohl den Prozess abzufragen. Den gibt es unter Windows nicht.
Die Sub rausgenommen, plus $hash->{ReadyFn} = "XBMC_Ready";
Klappt leider nicht. Status nur Initialized. Auch wenn ich die Windows-Firewall abschalte.
Anpingen kann ich XBMC. Mit anderer FHEM version auf Wheezy läufts. Finde den Fehler nicht.
Danke für die Hilfe.
Hallo,
ich muss da jetzt auch noch mal was blödes fragen.
Ich hab ne fritzbox mit einem USB Stick dran (8gb) wo ich meine Musick draufspiele.
kann mir jemand sagen wie ich das mit xbmc am besten anstelle oder geht das nicht.
ich habe jetzt schon diesen Befehl ausprobiert
set AppleTV play http//192.168.178.1:49200/AUDIO/DLNA-1-0/General-USBFlashDisk-01/Musick
weil das ist der dateiname in XBMC funktioniert aber nicht
Gruß RedOne
@AK-868: Da ich XBMC bei mir nicht immer am laufen hatte, musste ich einen Weg finden, damit FHEM nicht blockiert, wenn XBMC aus ist... Wenn XBMC nicht läuft, dann kommt es bei der Suche nach XBMC zu einem Timeout der FHEM blockiert. Daher hab ich die Suche in einen seperaten Prozess ausgelagert. Ich könnte das Ausbauen, damit du das Modul auch unter Windows benutzen kannst, aber das macht nur Sinn, wenn du XBMC immer am laufen hast.
Habe mich mal drangesetzt und das Modul mal erweitert. Es werden jetzt deutlich mehr Commands unterstützt und ich habe auch ein Remotecontrol layout angelegt. Die Nutzung des Moduls ist am Anfang der Datei beschrieben.
@AK-868: FHEM scheint nicht mehr zu blockieren, wenn XBMC nicht läuft, daher wird jetzt standardmäßig nicht mehr in einem separatem Prozess nach XBMC gesucht. Man kann das über ein Attribut aber wieder aktivieren. Im Idealfall funktioniert es jetzt auch mit Windows.
Was muss ein Modul eigentlich erfüllen, damit es in FHEM aufgenommen wird?
Zitat von: Dennis B. am 17 November 2013, 02:21:54
Was muss ein Modul eigentlich erfüllen, damit es in FHEM aufgenommen wird?
Hi,
1. Es muss funktionieren - das dürfte gegeben sein :) Auch sollten die development-guidelines eingehalten sein. Für Multimedia-Module gibt es zB eine Vereinbarung zu einem einheitlichen Befehlssatz. Siehe alles das in http://www.fhemwiki.de/wiki/DevelopmentIntroduction und http://www.fhemwiki.de/wiki/DevelopmentGuidelines
2. Das Modul muss commandref-Doku enthalten (pod) - das ist noch nicht der Fall. Bitte aus einem anderen Modul abkupfern und die html-Formatierung sauber einbauen (zB dürfen Module, die im Alphabet und damit in der commandref weiter hinten kommen, nicht weiter eingerückt sein, als XBMC selbst -> alle tags müssen wieder geschlossen ein
3. Es muss die Bereitschaft bestehen, das Modul aktiv zu supporten durch Mitlesen im Forum und beantworten von Fragen.
(ich hoffe ich hab nix vergessen :)
Wenn das alles gegeben ist, ne Mail an Rudi schreiben mit user-request für SVN, dann das Modul einchecken und abwarten :)
Gruß, Uli
ich benutze das modul schon seit der ersten version mit plex.
ich fände es klasse wenn du noch die set liste für 'set ?' einbaust um die möglichen kommandos direkt im web frontend zu haben und auch gleich den support für das remotecontroll modul mit einbaust. meine version schaut so aus:
sub
XBMC_RC_Layout() {
my $ret;
my @row;
$row[0]="play:PLAY,pause:PAUSE,prev:REWIND,next:FF,mute:MUTE";
$row[1]="attr rc_iconpath icons/remotecontrol";
$row[2]="attr rc_iconprefix black_btn_";
# unused available commands
return @row;
}
zusärzlich brauchst du in deinem initialize noch das hier:$data{RC_layout}{XBMCLayout} = "XBMC_RC_Layout";
wenn du in deine set liste noch 'remotecontrol:remotecontrol' einbaust dann kannst du z.b. mitattr webCmd remotecontrol plex_doc_remote
die remote controll buttons einblenden (siehe screenshot).
du kannst auch das hier noch probieren:sub
XBMC_summaryFn($$$$)
{
Log 3, "XBMC_summaryFn";
my ($FW_wname, $d, $room, $pageHash) = @_; # pageHash is set for summaryFn.
my $hash = $defs{$d};
my $name = $hash->{NAME};
return RC_attr2html($name);
}
zusärzlich brauchst du in deinem initialize noch das hier:$hash->{FW_summaryFn} = "XBMC_summaryFn";
dann bekommst du direkt die buttons direkt als device icon.
gruss
andre
Also ich bin zu doof eine Playlist mit Stream in meinem Userdata Verzeichnis aufzumachen. Selbst mit URL-Encoding und GetHTTP funktioniert es nicht. Aber auf der Commandline mit curl bzw. direkt aus dem Browser heraus startet der Stream.
edit. selbst wenn direkt das Beispiel von Dieter100 nehme kommt nur ein Parsing Error zurück :/
Verwendet eigentlich irgendjemand das Modul zum Starten von Playlists/Videos/was auch immer?
Hallo,
sorry, dass ich auf die Nachrichten nicht reagiert hab. Die E-Mail-Benachrichtigungen über neue Beiträge ist anscheinend mit Verschieben des Threads ausgegangen. Ist jetzt wieder an.
@drdownload: Da waren noch ein paar Fehler in dem Modul. Habe die jetzt behoben und das öffnen von Ordnern und Dateien/URLs funktioniert jetzt. Die neue Version des Moduls ist angehangen.
Zum Öffnen einer Datei/URL wird der open Befehl genutzt:
set <xbmc_device> open "URI/Pfad"
Ordner werden über opendir geöffnet:
set <xbmc_device> opendir "Pfad_zum_ordner"
@Uli: Danke für die Infos. Hab die einheitlichen Commands für Multimedia Module noch nicht gefunden (hab aber auch nicht sehr intensiv gesucht ;) ). Werde noch ein wenig am Modul basteln und dann probier ich euch das mal anzudrehen :D
@Andre: Danke für die Tipps. Ein etwas umfangreicheres RC_Layout hatte ich in die letzte Version schon eingebaut. Mein erster Versuch die summaryFn zu nutzen, war erfolglos. Weiß noch nicht so recht, wo der Fehler liegt, hatte an sich nur deinen Code kopiert. Werde mir das genauer ansehen, wenn ich an nem großen Monitor sitze und nicht an meinem Laptop. Irgendwie gab RC_attr2html nichts zurück.
Gruß
Dennis
wunderbar, jetzt funktioniert das starten von webstreams :) wenn allerdings die box im standby ist und daher xbmc nicht erreichbar schießt das fhemweb ab.
Oh, dass is ungünstig. Hab ne vermutung woran es liegen könnte. Gestern habe ich noch weiter am Modul gebastelt, dabei hab ich ein paar fehler behoben und die events verbessert. Die Doku sollte jetzt auch in commandref-Form sein. Die aktuelle Version befindet sich im Anhang. Im Idealfall tritt der Fehler damit nicht mehr auf. Falls dein FHEM mit der neuen Version immernoch abstürzt, müssen wir mal debuggen :) Bei mir funktioniert Stand-by auf jeden fall.
Hallo,
vielen Dank erstmal.
Ich habe das Modul jetzt auch ohne Fehler integriert,
wie bekomme ich nun die Doku in die Commandref,oder muß ich aufs einchecken warten?
gerade versuche ich mich an der Remote, und wie ich anzeigen lasse was gerade läuft.
Hi,
freut mich, dass das Modul funktioniert. Werde mal anfragen, ob das Modul ins SVN kann. Bis dahin müsstest du die commandref selbst erstellen. Dafür brauchste drei Dateien ausm SVN (http://sourceforge.net/p/fhem/code/HEAD/tree/trunk/fhem/):
contrib/commandref_join.pl
docs/commandref_frame.html
docs/commandref_frame_DE.html
Dann musste aus dem Ordner /opt/fhem/ folgenden Befehl ausführen perl contrib/commandref_join.pl
Die neu gebaute commandref kannste jetzt über dein Webinterface aufrufen.
Alternativ findest du die Doku am Ende der Modul-Datei (allerdings mit HTML-Code).
In der Doku zum Modul findest du auch eine Erklärung, wie du die Remote erstellst. Damit du nicht suchen musst, hier die Befehle:
define <rc_name> remotecontrol #adds the remote control
set <rc_name> layout XBMC_RClayout #sets the layout for the remote control
set <rc_name> makenotify <XBMC_device> #links the buttons to the actions
Wenn du anzeigen willst, was gerade abgespielt, musst du wie folgt vorgehen:
Wenn der Event player = play eintritt, kannst du basierend auf dem reading type bestimmen, in welchen Readings die Informationen über das aktuelle Media Item stehen:
Wenn type = song ist, stehen die Informationen in den Readings album, artist, file, title und track
Wenn type = musicvideo ist, stehen die Informationen in den Readings album, artist, file und title
Wenn type = episode ist, stehen die Informationen in den Readings episode, file, season, showtitle und title
Wenn type = movie ist, stehen die Informationen in den Readings originaltitle, file, title und year
Wenn type = picture oder type = unknown ist, stehen die Informationen im Reading: file
Anbei ist aktuelle Version. Habe die Events nochmal angepasst und die Doku erweitert.
Gruß
Dennis
Update: Die aktuelle Modul-Datei befindet sich hier: http://forum.fhem.de/index.php/topic,10075.msg115973.html#msg115973
Super mit der commandref hat geklappt, und die Remote klappt jetzt auch.
Ich weiß nicht ob es an meinem fhem liegt, ich hatte dieses Problem:
set <rc_name> makenotify <XBMC_device>
legt folgende Zeile in der Config an:
define notify_rc_name notify <rc_name> set <XBMC_device> remoteControl $EVENT
Ich mußte das "remoteControl" löschen damit die Befehle von meinem XBMC angenommen werden.
Vielleicht liegt es an dieser Zeile in der 70_XBMC.pm
fhem("define $nname notify $nam set $ndev remoteControl ".'$EVENT',1);
Ich hoffe das war hilfreich, danke für die Arbeit, ich wünsche mir mal die Zeit mich da richtig einarbeiten, so ein Modul wünsche ich mir für die Squeezeboxen.
Nett wäre auch ein Cover im Floorplan (dazu muß ich aber erstmal mit dem Floorplan vorran kommen...)
Guten Morgen,
hast recht mit dem makeNotify. Hab das entsprechend behoben. Neue Datei ist im Anhang.
Gruß
Dennis
Hallo,
ich habe mich heute mal mal mit den Modul und dem Squeezebox Modul beschäftigt, da ist mir aufgefallen, das es schön wäre, hier die Befehle per dropdown Menu einzubinden.
dann muß man nicht z.B. "set xbmc videolibary scan" eingeben.
Mit dem Cover bin ich noch nicht weit gekommen, mal sehen ob ich da die Tage noch was finde...
Hallo zusammen,
das XBMC Module ist jetzt im SVN und sollte dann demnächst über den Update-Mechanismus ausgeliefert werden. Im Vergleich zur letzten Version haben sich einige Sachen geändert.
- Die Befehle sind jetzt alle über das DropDown Menü verfügbar.
- Die Befehle wurden an die AV-Guidelines angepasst.
- Folgende Readings haben sich geändert: player -> playStatus, artist -> currentArtist, album -> currentAlbum, track -> currentTrack, file -> currentMedia, title -> currentTitle, shuffled -> shuffle, muted -> mute
- Die Befehle videolibary<scan|update> und audiolibary <scan|update> werden jetzt korrekt geschrieben, entsprechend heißen sie jetzt videolibrary <scan|update> und audiolibrary <scan|update>
- Der Befehl playpause hat jetzt nur noch die Art des Players als Parameter.
- Die Werte für die readings mute, shuffle, fullscreen und partymode sind nicht mehr true/false sondern on/off
- Es gibt jetzt Befehle um den Repeat- und Shufflemode zu ändern.
Viele der Änderungen waren nötig, um den AV-Guidelines zu entsprechen. Ich hoffe die Änderungen bereiten keinem (große) Probleme.
Gruß
Dennis
Hi Dennis,
vielen Dank für die Arbeit die du dir da jetzt gemacht hast.
Freue mich schon auf die Funktion !
Auch von mir Danke
Auch von mir ein dickes Danke für das Modul. Toll!. Jetzt kann neben Sonos auch der Xbmc auf meine Tür und Telefon reagieren.
Hi,
bei meinem XBMC ist noch kein JSON RPC aktiviert, das führt dazu das die Verbindung fehl schlägt und sich FHEm aufhängt, ich vermute er wartet das irgendwas passiert. Gab es da vor kurzem nicht eine Änderung in fhem?
letzter Eintrag im Log
2014.01.09 13:57:16 1: XBMC_HTTP_Request http://192.168.200.15:80/jsonrpc: Can't connect to http://192.168.200.15:80
Vielleicht ist da irgendwie ein timeout notwendig?
OT: Kann man für fhem eigentlich keine Tickets erstellen wie das sonst bei svn / Github (oder per trac) möglich ist?
die ticketfunktion ist bei sourceforge nicht eingeschaltet
Also auch wenn mein xbmc aus ist hängt sich fhem mit der Fehlermeldung auf. Wenn es möglichkeiten gibt genauer zu schauen was da losist, muss mir einer sagen wie :-)
Gesendet von meinem GT-P7310 mit Tapatalk
Zitat von: UliM am 07 Januar 2013, 19:17:01
Hi Dennis,
coole Idee - vielen Dank für das Modul!
Hab eben versucht es auf meiner FB7390 einzurichten. Nach reload 70_XBMC.pm kommt
Can't locate JSON/RPC/Client.pm
Mit JSON::XS befürchte ich dann dasselbe - gibt's nicht auf der FritzBox.
Ohne geht's nicht, oder?
LG, Uli
Habs gerade auf der Fritzbox (zumindest mit tcp) zum Laufen bekommen.
Dazu muss man aus einer anderen perl-Version mit JSON den Ordner JSON und die Datei JSON.pm auf die Fritzbox nach lib/perl5/5.12.2 kopieren.
Zitat von: Dennis B. am 08 Januar 2014, 20:43:48
Hallo zusammen,
das XBMC Module ist jetzt im SVN und sollte dann demnächst über den Update-Mechanismus ausgeliefert werden. Im Vergleich zur letzten Version haben sich einige Sachen geändert.
Ich habe die neuste Version aus dem SVN mit meiner fhem 5.5 Version genommen und die remote funktioniert nicht, weil ein problem mit Groß-Kleinscheirbung besteht.
notify_MediacenterXbmcRC return value: Unknown argument RIGHT, choose one of off play:all,audio,video,picture playpause:all,audio,video,picture pause:all,audio,video,picture prev:all,audio,video,picture next:all,audio,video,picture goto stop:all,audio,video,picture open opendir shuffle:toggle,on,off repeat:one,all,off volumeUp:noArg volumeDown:noArg back:noArg contextmenu:noArg down:noArg home:noArg info:noArg left:noArg right:noArg select:noArg send exec:left,right,up,down,pageup,pagedown,select,highlight,parentdir,parentfolder,back,previousmenu,info,pause,stop,skipnext,skipprevious,fullscreen,aspectratio,stepforward,stepback,bigstepforward,bigstepback,osd,showsubtitles,nextsubtitle,codecinfo,nextpicture,previouspicture,zoomout,zoomin,playlist,queue,zoomnormal,zoomlevel1,zoomlevel2,zoomlevel3,zoomlevel4,zoomlevel5,zoomlevel6,zoomlevel7,zoomlevel8,zoomlevel9,nextcalibration,resetcalibration,analogmove,rotate,rotateccw,close,subtitledelayminus,subtitledelay,subtitledelayplus,audiodelayminus,audiodelay,audiodelayplus,subtitleshiftup,subtitleshiftdown,subtitlealign,audionextlanguage,verticalshiftup,verticalshiftdown,nextresolution,audiotoggledigital,number0,number1,number2,number3,number4,number5,number6,number7,number8,number9,osdleft,osdright,osdup,osddown,osdselect,osdvalueplus,osdvalueminus,smallstepback,fastforward,rewind,play,playpause,delete,copy,move,mplayerosd,hidesubmenu,screenshot,rename,togglewatched,scanitem,reloadkeymaps,volumeup,volumedown,mute,backspace,scrollup,scrolldown,analogfastforward,analogrewind,moveitemup,moveitemdown,contextmenu,shift,symbols,cursorleft,cursorright,showtime,analogseekforward,analogseekback,showpreset,presetlist,nextpreset,previouspreset,lockpreset,randompreset,increasevisrating,decreasevisrating,showvideomenu,enter,increaserating,decreaserating,togglefullscreen,nextscene,previousscene,nextletter,prevletter,jumpsms2,jumpsms3,jumpsms4,jumpsms5,jumpsms6,jumpsms7,jumpsms8,jumpsms9,filter,filterclear,filtersms2,filtersms3,filtersms4,filtersms5,filtersms6,filtersms7,filtersms8,filtersms9,firstpage,lastpage,guiprofile,red,green,yellow,blue,increasepar,decreasepar,volampup,volampdown,channelup,channeldown,previouschannelgroup,nextchannelgroup,leftclick,rightclick,middleclick,doubleclick,wheelup,wheeldown,mousedrag,mousemove,noop showcodec:noArg showosd:noArg up:noArg msg mute:toggle,on,off volume:slider,0,1,100 quit:noArg eject:noArg hibernate:noArg reboot:noArg shutdown:noArg suspend:noArg videolibrary:scan,clean audiolibrary:scan,clean
Bei mir geht es, ich habe die Remote aber schon länger erstellt
hier die row mit Rechts:
row01 left:LEFT,select:OK,right:RIGHT,mute:MUTE
ich verwende dein modul ja mit plex und da scheint es bei der version kein $value->{revision} zu geben.
vielleicht kannst du das abfangen so das nicht jedes mal ein fehler geloggt wird beim reading erzeugen?
gruss
andre
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
So ich hab noch mal das Handbuch gelesen.... klassischer RTFM Fehler:
Zitatfork
If XBMC does not run all the time it used to be the case that FHEM blocks because it cannot reach XBMC (only happened if TCP was used). If you encounter problems like FHEM not responding for a few seconds then you should set attr <XBMC_device> fork enable which will move the search for XBMC into a separate process.
Wobei ich mich frage, ob das nicht grundsätzlich sinn macht. Reicht dann ja schon ein Absturz des XBMC und man legt die ganze Heimautomation lahm.
ich habe gestern fhem gestartet ohne das plex lief und es gab keine probleme.
es sollte also eigentlich möglich sein ohne fork auszukommen.
gruss
andre
Bei mir läuft es ohne fork auch sauber
Gesendet von meinem Nexus 4 mit Tapatalk
Also bei mir läuft es so lange bis er versucht mit dem xbmc Kontakt aufzunehmen. Also z.B. wenn das Telefon klingelt und ein Notify Pause machen soll.
Das teste ich gleich mal, vielleicht kann man das auch lösen indem nur Befehle an den xbmc geschickt werden wenn der state nicht disconnected ist
Gesendet von meinem Nexus 4 mit Tapatalk
das sollte das modul aber intern wissen.
gruss
andre
Mhh ich sehe gerade ich hab immer nur ein set wz_xbmc pause
geschickt, vielleicht ist er auch deswegen abgeschmiert, sehe gerade im Interdace das es ein set wz_xbmc pause all
heißen müsste. Ich teste das heute Abend noch mal.
Hallo,
ich versuche aktuell mit opendir die Audio-Dateien eines von XBMC per nfs gemounteten Verzeichnisses abzuspielen.
Wenn ich open verwende kann ich problemlos eine einzelne Audio-Datei (mp3) abspielen.
opendir scheint aber nicht zu funktionieren.
Beide Funktionen open und opendir rufen soweit ich im Quellcode gesehen habe die XBMC JSON API Player.Open auf. Bei XBMC ist dokumentiert, dass diese Funktion folgendes kann:
http://wiki.xbmc.org/index.php?title=JSON-RPC_API/v6#Player.Open
"Start playback of either the playlist with the given ID, a slideshow with the pictures from the given directory or a single file or an item from the database."
Funktioniert opendir überhaupt?
Bin ich vielleicht nur zu doof das Verzeichnis korrekt einzugeben?
Ich versuche folgenden Befehl:
funktioniert problemlos für einzelne mp3-Datei:
...{fhem "set XBMCInstanz open nfs://IP-Server/nfs/musik/Bandname/Lied1.mp3"}
funktioniert nicht, keine Reaktion von XBMC:
...{fhem "set XBMCInstanz opendir nfs://IP-Server/nfs/musik/Bandname/"}
funktioniert ebenfalls nicht:
...{fhem "set XBMCInstanz opendir nfs://IP-Server/nfs/musik/Bandname"}
Kann mir einer auf die Sprünge helfen wo hier mein Fehler ist?
DANKE
Gruß
kkbs
Also ich hab noch mal getestet mein fhem schmiert ab sobald ich irgendwie mit meinem xbmc kommunizieren will. 2014.01.14 22:21:25 1: XBMC_HTTP_Request http://192.168.200.15:80/jsonrpc: Can't connect to http://192.168.200.15:80
Hab den Fehler gefunden..... Gleich mehr
Gesendet von meinem Nexus 4 mit Tapatalk
Das Problem tritt auf wenn ich eine Verbindung mit http mache aber keinen port angebe.
define wz_XBMC XBMC 192.168.200.15 http user pass
attr wz_XBMC fork enable
attr wz_XBMC group XBMC
attr wz_XBMC room Wohnzimmer
attr wz_XBMC webCmd eject
Gesendet von meinem Nexus 4 mit Tapatalk
Moin zusammen,
hat sich ja wieder einiges getan. Irgendwie hab ich wieder keine Benachrichtigungen bekommen. Nagut schauen wir mal, dass wir ein paar Sachen noch vor der Arbeit gelöst bekommen :)
Zitat von: bmaehr am 11 Januar 2014, 19:32:20
Ich habe die neuste Version aus dem SVN mit meiner fhem 5.5 Version genommen und die remote funktioniert nicht, weil ein problem mit Groß-Kleinscheirbung besteht.
notify_MediacenterXbmcRC return value: Unknown argument RIGHT, choose one of off play:all,audio,video,picture ...
hast du ein ganz normales FHEM 5.5 oder ein volles Update auf die Entwickler-Version?
Habe gerade bei mir ein neues XBMC device samt Remote angelegt und alle Buttons funktionieren. Der Befehl, der gesendet werden sollte, ist auch nicht "RIGHT" sondern "right". Das "RIGHT" gibt eigentlich an, welcher Button angezeigt werdem sollte. Eventuell liegt das Problem daher ehr an einem älteren Remote-Control-Module?
Zitat von: strauch am 14 Januar 2014, 22:48:50
Das Problem tritt auf wenn ich eine Verbindung mit http mache aber keinen port angebe.
define wz_XBMC XBMC 192.168.200.15 http user pass
attr wz_XBMC fork enable
attr wz_XBMC group XBMC
attr wz_XBMC room Wohnzimmer
attr wz_XBMC webCmd eject
Hi,
hab bei mir das Device auf dieselbe Art erstellt (auch ohne Portangabe) und bei mir stürzt FHEM nicht ab. Bekomme lediglich denselben Logeintrag wie du, was ja auch richtig ist, weil wenn XBMC nicht da ist, kann er natürlich nicht connecten. Die Angabe des Fork-Attributes ist nur für TCP connections wichtig. Im HTTP-Modus ist das uninteressant, weil jeder Befehl einen HTTP-Request nach sich zieht.
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.
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.
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
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
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
wegen dem löschen der readings: ich meine es reicht das reading jeweils mit dem wert undef zu schreiben.
gruss
andre
@ 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
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
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?
Ich kann das gerade nicht testen, mal ein anderer Ansatz, welche XBMC Version hast Du im Einsatz?
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.
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.
Hmm... hab gerade mal was geändert. Eventuell löst das das Problem. Probier mal bitte die Datei im Anhang.
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<
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.
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
ich schaue es mir wieder heute abend an.
man müsste vermutlich alles löschen das nicht zum aktuellen typ gehört. um nicht aus versehen zu viel zu löschen könnte man pro typ merken welche readings behalten werden sollen und dann alle typen durchgehen und für jedem typ der nicht der eigene ist diese readings löschen.
mir ist eben noch etwas aufgefallen: kannst du $readingFnAttributes an die AttrList anängen? dann geht automatisch event-on-change-reading & co.
gruss
andre
ps: ich hab gerade readingGroup um icons und links/kommandos erweitert. damit kann man sich dann eine übersicht definieren und auch dynamische icons haben. das geht in remotecontroll leider noch nicht. das icon und 'paused' auf dem screenshots sind jeweils anklickbar und wechseln je nach zustand.
Hey das ist super. Danke für eure Arbeit.
Gesendet von meinem Nexus 4 mit Tapatalk
hab eben die version von heute morgen probiert und mir ist nichts aufgefallen. schaut gut aus.
gruss
andre
Hab $readingFnAttributes noch angehangen und das Module dann ins SVN geladen.
Auf der Todo steht jetzt bei mir noch:
- presence reading (wobei ich noch nicht weiß, wie ich damit im http mode umgehen soll)
- time polling während des playbacks
- Wake-On-Lan support
- löschen nicht mehr aktueller readings
- Device summary ausbauen
- eventuell: HTTP polling
Gruß
Dennis
Hallo,
ich versuche aktuell mit opendir die Audio-Dateien eines von XBMC per nfs gemounteten Verzeichnisses abzuspielen.
Wenn ich open verwende kann ich problemlos eine einzelne Audio-Datei (mp3) abspielen.
opendir scheint aber nicht zu funktionieren.
Beide Funktionen open und opendir rufen soweit ich im Quellcode gesehen habe die XBMC JSON API Player.Open auf. Bei XBMC ist dokumentiert, dass diese Funktion folgendes kann:
http://wiki.xbmc.org/index.php?title=JSON-RPC_API/v6#Player.Open
"Start playback of either the playlist with the given ID, a slideshow with the pictures from the given directory or a single file or an item from the database."
Funktioniert opendir überhaupt?
Bin ich vielleicht nur zu doof das Verzeichnis korrekt einzugeben?
Ich versuche folgenden Befehl:
funktioniert problemlos für einzelne mp3-Datei:
...{fhem "set XBMCInstanz open nfs://IP-Server/nfs/musik/Bandname/Lied1.mp3"}
funktioniert nicht, keine Reaktion von XBMC:
...{fhem "set XBMCInstanz opendir nfs://IP-Server/nfs/musik/Bandname/"}
funktioniert ebenfalls nicht:
...{fhem "set XBMCInstanz opendir nfs://IP-Server/nfs/musik/Bandname"}
Kann mir einer auf die Sprünge helfen wo hier mein Fehler ist?
DANKE
Gruß
kkbs
Hi,
schaue mir das Problem an, vermutlich werd ich das aber erst am Wochenende schaffen. sorry.
Gruß
Dennis
Kann es sein das opendir nur für slideshows von bildern gedacht ist?
Gesendet von meinem Nexus 4 mit Tapatalk
Ich habe mir jetzt einen Workaround für das "opendir-Problem" gebastelt:
Alle mp3-Dateien eines Verzeichnisses werden in eine pls-Playlist-Datei aufgenommen.
Mit Hilfe von open starte ich dann das Abspielen der pls-Playlist-Datei.
Das funktioniert.
Natürlich muss dann aber für jedes Verzeichnis eine eigene pls-Playlist erstellt werden.
PS:
Mit m3u-Playlist hat der Workaround nicht funktioniert, nur mit pls!
Gruß
kkbs
Hey ich wollte einfach mal Danke sagen für das Modul.
Habs heute in Betrieb genommen, und nach dem ich den Port in der cfg weggelassen habe, funktioniert es prima!
Danke
Owel
Mir ist heute aufgefallen, dass das XBMC Modul sofern XBMC aus ist, teilweise fhem blockiert.
Wenn ich die "apptime" richtig interpretiere, dauert die Status Abfrage bei mir bis zu 3 Sekunden.
Kann man hier die Abfrage anders gestalten, wenn XBMC nicht eingeschaltet ist?
hast du fork gesetzt ?
gruss
andre
Nein! Stellt das die Abfrage in einen eigenen Prozess?
zumindest einen teil. siehe commandref.
gruss
andre
Klasse Danke fuer den Tipp werde ich mal beobachten!
Leider kann ich den Status von XBMC nicht abfragen, da das XBMC state Reading scheinbar nicht richtig gesetzt wird.
Kann man das ändern?
Abfrage wie folgt:
ReadingsVal("wz_XBMC","state","")
Ich habe das Problem, dass die verschiedenen Status (langes U :P) bzw. Readings nicht immer zueinander passen bzw. nicht der Realität entsprechen. Zum Beispiel steht im Moment im Reading "system" "sleep" drin. Obwohl XBMC an ist und auch STATUS auf "opened" steht.
Ich habe XBMC gestern runtergefahren (in Standby). Dann stand bis eben auch korrekt STATUS auf "disconnected" auf "system" auf "sleep". Jetzt hab ich XBMC wieder eingeschaltet und STATUS ist auf "openend" gegangen, aber "system" steht nach wie vor auf "sleep". Obwohl schon mehrere Readings upgedatet wurden auch auch rot geworden sind.
Ist das ein Bug oder verstehe ich da etwas nicht?
EDIT:
Hab da eine Theorie: Und zwar wird "system" korrekt wieder auf "wake" gesetzt, wenn ich XBMC nur kurz in Standby fahre. Dabei bemerkt STATUS nichtmal, dass XBMC weg war. Kann es sein, dass es ein Problem ist, wenn ich XBMC zu lange in Standby setzt und dadurch die TCP-Verbindung timeoutet und fhem dann nicht sofort beim Aufwachen von XBMC ein Event bekommt, sondern erst nach einer Minute eine neue Verbindung aufmacht und dann das Event verpasst hat?
Anbei ein Patch der Folgendes macht:
-manuelles Setzen des Readings "system" auf "wake" sobald eine Verbindung erfolgreich aufgebaut wurde, da dieses Reading nicht beim Verbinden vom XBMC abgefragt wird
-Nutzung von DevIO_Expect, um zu erkennen, wenn XBMC in Standby geht, so dass auch wieder erfolgreich eine Verbindung aufgebaut werden kann, wenn XBMC wieder kommt
Wäre toll, wenn das jemand reviewen könnte bzw. sogar einchecken könnte, wenn es keine Probleme gibt.
Zitat von: vbs am 06 Mai 2014, 22:31:30
Anbei ein Patch der Folgendes macht:
-manuelles Setzen des Readings "system" auf "wake" sobald eine Verbindung erfolgreich aufgebaut wurde, da dieses Reading nicht beim Verbinden vom XBMC abgefragt wird
-Nutzung von DevIO_Expect, um zu erkennen, wenn XBMC in Standby geht, so dass auch wieder erfolgreich eine Verbindung aufgebaut werden kann, wenn XBMC wieder kommt
Wäre toll, wenn das jemand reviewen könnte bzw. sogar einchecken könnte, wenn es keine Probleme gibt.
Hat das schon jemand getestet?
Nochmal ein kleines Update:
-Wenn "fork" benutzt wird, dann werden in dem geforkten Prozess nun alle File-Handles geschlossen, so dass es keine Probleme mehr mit fork geben sollte
-Formatierung verbessert
Mein fhem scheint damit abzustürzen!
pmalformed JSON string, neither array, object, number, string or atom, at character offset 0 (before "Library.OnRemove","p...") at ./FHEM/70_XBMC.pm line 238. Can't use an undefined value as a symbol reference at FHEM/Blocking.pm line 129. Can't use an undefined value as a symbol reference at FHEM/Blocking.pm line 129.
Das scheint in den grundlegenden Funktionen zu passieren, in denen die empfangenen Daten geparst werden. Hab ich eigentlich nix dran gemacht, aber ich werd gern mal reingucken wenn du mir sagen kannst, wie ich das reproduzieren kann. Ein komplettes Logfile könnte auch helfen.
Also ich habe die Fork Funktion aktiviert und das XBMC hat nach einen Audio Library Scan gemacht. Mit deaktivierter Fork Funktion stürzt es nicht mehr ab!
Im Log hatte ich nicht mehr gesehen und hatte es schon gelöscht....sorry!
Hm kein Problem. Bei mir passierts hier leider nicht, also ich kann das so nicht nachstellen. Könntest du vielleicht nochmal probieren, ob das mit fork wieder auftritt bei dir?
Fork halte ich für wichtig, da sonst fhem im Main-Thread versucht einmal pro Minute eine Verbindung aufzubauen. Wenn XBMC ausgeschaltet ist, läuft er dann immer in den Timeout rein (ich glaub 3 Sekunden) und fhem ist dann in der Zeit nicht ansprechbar.
Ok ist auch ohne Fork abgenippelt :-/
Die letzten Einträge sagen nicht wirklich etwas aus!
2014.06.01 16:24:28 3: XBMC_Read: Decoding JSON message. Length: 112 Content: {"jsonrpc":"2.0","method":"AudioLibrary.OnRemove","params":{"data":{"id":435433,"type":"song"},"sender":"xbmc"}}
2014.06.01 16:24:28 3: XBMC_Read: Decoding JSON message. Length: 112 Content: {"jsonrpc":"2.0","method":"AudioLibrary.OnRemove","params":{"data":{"id":435434,"type":"song"},"sender":"xbmc"}}
2014.06.01 16:24:28 3: XBMC_Read: Tail:
2014.06.01 16:24:28 3: XBMC_Read: PARTIAL:
2014.06.01 16:24:37 1: Perfmon: possible freeze starting at 16:24:34, delay is 3.069
2014.06.01 16:24:37 3: XBMC_Read: Received Buffer: Library.OnUpdate","params":{"data":{"id":607257,"type":"song"},"sender":"xbmc"}}{"id":320122,"jsonrpc":"2.0","result":"pong"}
2014.06.01 16:24:37 3: XBMC_Read: Decoding JSON message. Length: 79 Content: Library.OnUpdate","params":{"data":{"id":607257,"type":"song"},"sender":"xbmc"}
Ich setze jetzt mal ein verbose 5 auf das Modul!
Auf der Console habe ich noch die Meldung erhalten!
malformed JSON string, neither array, object, number, string or atom, at character offset 0 (before "sult":"pong"}{") at ./FHEM/70_XBMC.pm line 238.
Danke, das hilft schon etwas. So richtig erklären kann ich es mir nicht, aber man sieht in deinem Log in der vorletzten Zeile, dass da zwei JSON-Nachrichten vermischt werden. Ich hab da so eine Theorie und mich mal an einem Fix versucht, ist aber nur ein Schuss ins Blaue. Wäre super, wenn du das mal testen könntest. Wenn es weiterhin crasht, dann wäre auch nochmal ein Log auf "verbose 5" sehr interessant, da ich nochmal ein paar weitere Logausgaben eingebaut habe. Dann müsste man zumindest genau sehen können, welche Daten von XBMC geschickt wurden.
Ok ich lasse es gerade laufen..mal sehen was passiert!
2014.06.01 20:34:48 3: XBMC_Read: Received Buffer: {"jsonrpc":"2.0","method":"AudioLibrary.OnUpdate","params":{"data":{"id":614019,"type":"song"},"sender":"xbmc"}}
2014.06.01 20:34:48 3: XBMC_Read: Decoding JSON message. Length: 112 Content: {"jsonrpc":"2.0","method":"AudioLibrary.OnUpdate","params":{"data":{"id":614019,"type":"song"},"sender":"xbmc"}}
2014.06.01 20:34:48 3: XBMC_Read: Tail:
2014.06.01 20:34:48 3: XBMC_Read: PARTIAL:
2014.06.01 20:34:49 3: XBMC_Read: Received Buffer: {"jsonrpc":"2.0","method":"AudioLibrary.OnUpdate","params":{"data":{"id":614020,"type":"song"},"sender":"xbmc"}}
2014.06.01 20:34:49 3: XBMC_Read: Decoding JSON message. Length: 112 Content: {"jsonrpc":"2.0","method":"AudioLibrary.OnUpdate","params":{"data":{"id":614020,"type":"song"},"sender":"xbmc"}}
2014.06.01 20:34:49 3: XBMC_Read: Tail:
2014.06.01 20:34:49 3: XBMC_Read: PARTIAL:
2014.06.01 20:34:50 3: CUL_HM set EG.GT.LED.Dekoleuchte on
2014.06.01 20:34:53 3: set pushmsg msg 'fhem' '20:34:50: [info] Automatische Dämmerungsschaltung (Garten LED) eingeschaltet!' '' 0 '' : OK
2014.06.01 20:34:53 5: XBMC_Call: Sending: {"params":{"displaytime":10000,"title":"fhem","image":"info","message":"20:34:50: [info] Automatische Dämmerungsschaltung (Garten LED) eingeschaltet!"},"jsonrpc":"2.0","method":"GUI.ShowNotification"}
2014.06.01 20:34:53 5: SW: 7b22706172616d73223a7b22646973706c617974696d65223a31303030302c227469746c65223a226668656d222c22696d616765223a22696e666f222c226d657373616765223a2232303a33343a35303a205b696e666f5d204175746f6d617469736368652044c383c2a46d6d6572756e6773736368616c74756e67202847617274656e204c4544292065696e6765736368616c74657421227d2c226a736f6e727063223a22322e30222c226d6574686f64223a224755492e53686f774e6f74696669636174696f6e227d
2014.06.01 20:34:56 3: XBMC_Read: Received Buffer: {"jsonrpc":"2.0","method":"AudioLibrary.OnUpdate","params":{"data":{"id":614021,"type":"song"},"sender":"xbmc"}}{"jsonrpc":"2.0","method":"AudioLibrary.OnUpdate","params":{"data":{"id":614022,"type":"song"},"sender":"xbmc"}}{"jsonrpc":"2.0","method":"Audio
2014.06.01 20:34:56 3: XBMC_Read: Decoding JSON message. Length: 112 Content: {"jsonrpc":"2.0","method":"AudioLibrary.OnUpdate","params":{"data":{"id":614021,"type":"song"},"sender":"xbmc"}}
2014.06.01 20:34:56 3: XBMC_Read: Decoding JSON message. Length: 112 Content: {"jsonrpc":"2.0","method":"AudioLibrary.OnUpdate","params":{"data":{"id":614022,"type":"song"},"sender":"xbmc"}}
2014.06.01 20:34:56 3: XBMC_Read: Tail: {"jsonrpc":"2.0","method":"Audio
2014.06.01 20:34:56 3: XBMC_Read: PARTIAL: {"jsonrpc":"2.0","method":"Audio
2014.06.01 20:34:57 1: Perfmon: possible freeze starting at 20:34:51, delay is 6.017
2014.06.01 20:34:58 5: SW: 7b226a736f6e727063223a22322e30222c226964223a3936313837392c226d6574686f64223a224a534f4e5250432e50696e67227d
2014.06.01 20:34:58 3: XBMC_Read: Received Buffer: {"jsonrpc":"2.0","method":"Audioa":{"id":444531,"type":"song"},"sender":"xbmc"}}{"jsonrpc":"2.0","method":"AudioLibrary.OnRemove","params":{"data":{"id":444532,"type":"song"},"sender":"xbmc"}}{"id":961879,"jsonrpc":"2.0","result":"pong"}
2014.06.01 20:34:58 3: XBMC_Read: Decoding JSON message. Length: 79 Content: {"jsonrpc":"2.0","method":"Audioa":{"id":444531,"type":"song"},"sender":"xbmc"}
Da ist es wieder passiert!
Auf der Console war noch das zu sehen!
, or } expected while parsing object/hash, at character offset 34 (before ":{"id":444531,"type"...") at ./FHEM/70_XBMC.pm line 238.
Hm *am Kopf kratz* Ist das wirklich der Stand aus meinem letzten Post? Hast du evtl. vergessen, fhem neu zu starten?
Auf verbose 5 hast du es ja scheinbar, denn man sieht ja 5er-Meldungen.
Normalerweise müssen da jetzt ständig solche Meldungen kommen:
2014.06.01 20:47:09 5: XBMC_ProcessRead
2014.06.01 20:47:09 5: No PARTIAL buffer
2014.06.01 20:47:09 5: XBMC_Read: Incoming data: {"jsonrpc":"2.0","method":"Player.OnPause","params":{"data":{"item":{"id":1375,"type":"episode"},"player":{"playerid":1,"speed":0}},"sender":"xbmc"}}
2014.06.01 20:47:09 3: XBMC_Read: Received Buffer: {"jsonrpc":"2.0","method":"Player.OnPause","params":{"data":{"item":{"id":1375,"type":"episode"},"player":{"playerid":1,"speed":0}},"sender":"xbmc"}}
2014.06.01 20:47:09 3: XBMC_Read: Decoding JSON message. Length: 149 Content: {"jsonrpc":"2.0","method":"Player.OnPause","params":{"data":{"item":{"id":1375,"type":"episode"},"player":{"playerid":1,"speed":0}},"sender":"xbmc"}}
r
Ja hatte neu gestartet! Scheinbar haengt es mit der Last auf meinem Fhem Server zusammen. Sobald ich mit dem Webfrontend arbeite
oder eine Aktion durchgeführt wird, semmelt das fhem ab.
Argh, sorry, mein Fehler. Ich hab die falsche (alte) Version gepostet :/
Hier nun die richtige...
2014.06.01 21:11:43 5: XBMC_ProcessRead
2014.06.01 21:11:43 5: No PARTIAL buffer
2014.06.01 21:11:43 5: XBMC_Read: Incoming data: {"jsonrpc":"2.0","method":"AudioLibrary.OnUpdate","params":{"data":{"id":615011,"type":"song"},"sender":"xbmc"}}
2014.06.01 21:11:43 3: XBMC_Read: Current processing buffer (PARTIAL + incoming data): {"jsonrpc":"2.0","method":"AudioLibrary.OnUpdate","params":{"data":{"id":615011,"type":"song"},"sender":"xbmc"}}
2014.06.01 21:11:43 3: XBMC_Read: Decoding JSON message. Length: 112 Content: {"jsonrpc":"2.0","method":"AudioLibrary.OnUpdate","params":{"data":{"id":615011,"type":"song"},"sender":"xbmc"}}
2014.06.01 21:11:43 3: XBMC_Read: Tail:
2014.06.01 21:11:43 3: XBMC_Read: PARTIAL:
2014.06.01 21:11:50 1: Perfmon: possible freeze starting at 21:11:44, delay is 6.992
2014.06.01 21:11:51 5: XBMC_ProcessRead
2014.06.01 21:11:51 5: No PARTIAL buffer
2014.06.01 21:11:51 5: XBMC_Read: Incoming data: {"jsonrpc":"2.0","method":"AudioLibrary.OnUpdate","params":{"data":{"id":615012,"type":"song"},"sender":"xbmc"}}{"jsonrpc":"2.0","method":"AudioLibrary.OnUpdate","params":{"data":{"id":615013,"type":"song"},"sender":"xbmc"}}{"jsonrpc":"2.0","method":"Audio
2014.06.01 21:11:51 3: XBMC_Read: Current processing buffer (PARTIAL + incoming data): {"jsonrpc":"2.0","method":"AudioLibrary.OnUpdate","params":{"data":{"id":615012,"type":"song"},"sender":"xbmc"}}{"jsonrpc":"2.0","method":"AudioLibrary.OnUpdate","params":{"data":{"id":615013,"type":"song"},"sender":"xbmc"}}{"jsonrpc":"2.0","method":"Audio
2014.06.01 21:11:51 3: XBMC_Read: Decoding JSON message. Length: 112 Content: {"jsonrpc":"2.0","method":"AudioLibrary.OnUpdate","params":{"data":{"id":615012,"type":"song"},"sender":"xbmc"}}
2014.06.01 21:11:51 3: XBMC_Read: Decoding JSON message. Length: 112 Content: {"jsonrpc":"2.0","method":"AudioLibrary.OnUpdate","params":{"data":{"id":615013,"type":"song"},"sender":"xbmc"}}
2014.06.01 21:11:51 3: XBMC_Read: Tail: {"jsonrpc":"2.0","method":"Audio
2014.06.01 21:11:51 3: XBMC_Read: PARTIAL: {"jsonrpc":"2.0","method":"Audio
2014.06.01 21:11:51 5: XBMC_ProcessRead
2014.06.01 21:11:51 5: XBMC_Read: PARTIAL: {"jsonrpc":"2.0","method":"Audio
2014.06.01 21:11:51 5: XBMC_Read: Incoming data: Library.OnUpdate","params":{"data":{"id":615014,"type":"song"},"sender":"xbmc"}}{"jsonrpc":"2.0","method":"AudioLibrary.OnUpdate","params":{"data":{"id":615015,"type":"song"},"sender":"xbmc"}}{"jsonrpc":"2.0","method":"AudioLibrary.OnUpdate","params":{"dat
2014.06.01 21:11:51 3: XBMC_Read: Current processing buffer (PARTIAL + incoming data): {"jsonrpc":"2.0","method":"AudioLibrary.OnUpdate","params":{"data":{"id":615014,"type":"song"},"sender":"xbmc"}}{"jsonrpc":"2.0","method":"AudioLibrary.OnUpdate","params":{"data":{"id":615015,"type":"song"},"sender":"xbmc"}}{"jsonrpc":"2.0","method":"AudioLibrary.OnUpdate","params":{"dat
2014.06.01 21:11:51 3: XBMC_Read: Decoding JSON message. Length: 112 Content: {"jsonrpc":"2.0","method":"AudioLibrary.OnUpdate","params":{"data":{"id":615014,"type":"song"},"sender":"xbmc"}}
2014.06.01 21:11:51 3: XBMC_Read: Decoding JSON message. Length: 112 Content: {"jsonrpc":"2.0","method":"AudioLibrary.OnUpdate","params":{"data":{"id":615015,"type":"song"},"sender":"xbmc"}}
2014.06.01 21:11:51 3: XBMC_Read: Tail: {"jsonrpc":"2.0","method":"AudioLibrary.OnUpdate","params":{"dat
2014.06.01 21:11:51 3: XBMC_Read: PARTIAL: {"jsonrpc":"2.0","method":"AudioLibrary.OnUpdate","params":{"dat
2014.06.01 21:11:51 5: XBMC_ProcessRead
2014.06.01 21:11:51 5: XBMC_Read: PARTIAL: {"jsonrpc":"2.0","method":"AudioLibrary.OnUpdate","params":{"dat
2014.06.01 21:11:51 5: XBMC_Read: Incoming data: a":{"id":615016,"type":"song"},"sender":"xbmc"}}{"jsonrpc":"2.0","method":"AudioLibrary.OnUpdate","params":{"data":{"id":615017,"type":"song"},"sender":"xbmc"}}{"jsonrpc":"2.0","method":"AudioLibrary.OnUpdate","params":{"data":{"id":615018,"type":"song"},"
2014.06.01 21:11:51 3: XBMC_Read: Current processing buffer (PARTIAL + incoming data): {"jsonrpc":"2.0","method":"AudioLibrary.OnUpdate","params":{"data":{"id":615016,"type":"song"},"sender":"xbmc"}}{"jsonrpc":"2.0","method":"AudioLibrary.OnUpdate","params":{"data":{"id":615017,"type":"song"},"sender":"xbmc"}}{"jsonrpc":"2.0","method":"AudioLibrary.OnUpdate","params":{"data":{"id":615018,"type":"song"},"
2014.06.01 21:11:51 3: XBMC_Read: Decoding JSON message. Length: 112 Content: {"jsonrpc":"2.0","method":"AudioLibrary.OnUpdate","params":{"data":{"id":615016,"type":"song"},"sender":"xbmc"}}
2014.06.01 21:11:51 3: XBMC_Read: Decoding JSON message. Length: 112 Content: {"jsonrpc":"2.0","method":"AudioLibrary.OnUpdate","params":{"data":{"id":615017,"type":"song"},"sender":"xbmc"}}
2014.06.01 21:11:51 3: XBMC_Read: Tail: {"jsonrpc":"2.0","method":"AudioLibrary.OnUpdate","params":{"data":{"id":615018,"type":"song"},"
2014.06.01 21:11:51 3: XBMC_Read: PARTIAL: {"jsonrpc":"2.0","method":"AudioLibrary.OnUpdate","params":{"data":{"id":615018,"type":"song"},"
2014.06.01 21:11:51 5: XBMC_ProcessRead
2014.06.01 21:11:51 5: XBMC_Read: PARTIAL: {"jsonrpc":"2.0","method":"AudioLibrary.OnUpdate","params":{"data":{"id":615018,"type":"song"},"
2014.06.01 21:11:51 5: XBMC_Read: Incoming data: sender":"xbmc"}}{"jsonrpc":"2.0","method":"AudioLibrary.OnUpdate","params":{"data":{"id":615019,"type":"song"},"sender":"xbmc"}}
2014.06.01 21:11:51 3: XBMC_Read: Current processing buffer (PARTIAL + incoming data): {"jsonrpc":"2.0","method":"AudioLibrary.OnUpdate","params":{"data":{"id":615018,"type":"song"},"sender":"xbmc"}}{"jsonrpc":"2.0","method":"AudioLibrary.OnUpdate","params":{"data":{"id":615019,"type":"song"},"sender":"xbmc"}}
2014.06.01 21:11:51 3: XBMC_Read: Decoding JSON message. Length: 112 Content: {"jsonrpc":"2.0","method":"AudioLibrary.OnUpdate","params":{"data":{"id":615018,"type":"song"},"sender":"xbmc"}}
2014.06.01 21:11:51 3: XBMC_Read: Decoding JSON message. Length: 112 Content: {"jsonrpc":"2.0","method":"AudioLibrary.OnUpdate","params":{"data":{"id":615019,"type":"song"},"sender":"xbmc"}}
2014.06.01 21:11:51 3: XBMC_Read: Tail:
2014.06.01 21:11:51 3: XBMC_Read: PARTIAL:
2014.06.01 21:11:52 5: XBMC_ProcessRead
2014.06.01 21:11:52 5: No PARTIAL buffer
Ich habe mal im Webfrontend das Dashboard und dann das Logfile anzeigen geklickt. SCheinbar verschluckt er sich dann und füllt PARTIAL! Was heißt das denn genau?
Immerhin ist fhem bisher noch nicht abgestürzt!
UPDATE
Läuft schon 15 Minuten! Sieht gut aus! :-)
PARTIAL ist erstmal nix Schlimmes. Ist ein interner Zwischenpuffer. Es kann immer sein, dass eine Nachricht in zwei (oder mehr) Teilen von XBMC kommt. Da fhem die Nachricht erst verarbeiten kann, wenn alle Teile eingegangen sind, sammelt fhem alle Teile in PARTIAL bis der letzte Teil der Nachricht eingetroffen ist und verarbeitet sie dann.
Es ist nur wichtig, DASS alle übrigen Teile irgendwann eintreffen und PARTIAL danach wieder leer ist. Wenn da drin irgendwelche Reste verbleiben, dann ist das schlecht...
Klingt ja erstmal gut, ich hoffe, es bleibt stabil ;)
Lief gestern ein paar Stunden durch - ich denke das Stabilitätsproblem können wir abhaken!
Nun zur Apptime Analyse - schaue dir mal den Screenshot an!
Ich hätte gedacht, dass solche "Delays" nicht mehr auftauchen, oder?
Wow, sehr interessante Sache. Das kannte ich noch nicht. Weißt du zufällig, was der Unterschied zwischen "max" und "maxDly" ist? Bzw was MaxDly generell bedeutet?
Anyway, die Funktion "CheckConnection" ist neu und wird 1x pro Minute aufgerufen um zu gucken, ob XBMC noch da ist (nur wenn es denn läuft). Die Funktion wird jedoch synchron, also direkt im fhem-Thread aufgerufen. Also wenn die Funktion mal hängt, dann hängt auch fhem.
Werde mal versuche, diese Funktion im Hintergrund aufzurufen, aber ich hab so spontan noch keine richtig gute Idee dazu.
Muss mir jetzt erstmal dieses "apptime" besorgen... Danke für den Tip.
vielleicht habt ihr lust mal das sandbox konzept von hier: http://forum.fhem.de/index.php/topic,18275.msg173732.html#msg173732
zu probieren.
damit könnte man ein xbmc deivce komplett in einen eigenen prozess auslagern und muss sich um nichts weiter kümmern:define [sandbox] xbmc XBMC ...
gruss
andre
Sehr sehr interessante Sache dieses apptime 8)
@P.A.Trick
Also aus deinen Werten werde ich gar nicht schlau, ehrlich gesagt. Du hast ja bei allen Funktionen maximale Ausführungszeiten jenseits von 10 Sekunden gehabt :o Sieht für mich etwas fishy aus...
Zu XBMC: Also XBMC hat eigentlich *fast* kein Verzögerung. Es gibt jedoch genau einen Moment, wo es für mehrere Sekunden hängt: Und zwar wenn man XBMC auschaltet und dann in dem Momemt, in dem fhem das merkt. Fhem schickt einen Ping an XBMC und wartet 3 Sekunden auf Antwort. Ich glaub, er versucht es sogar zweimal, so dass man in dem Moment auf 6 Sekunden Verzögerung kommt.
Ob das schlimm ist, weiss ich nicht, da es wirklich nur einmalig auftritt, wenn man XBMC ausschaltet.
Hab jedoch eben diesen ganzen Mechanismus nochmal etwas umgebaut. Damit ist auch dieser 6-Sekunden-Hänger besser, liegt jedoch immer noch bei 1 Sekunde. Aber besser bekomm ichs nicht hin, denk ich. Ist aber auch ok, ist mehr so der sportliche Ehrgeiz :D Der Haken ist, dass das Erkennen von dem XBMC Shutdown nun bis zu zwei (anstatt einer) Sekunde dauern kann. Das kann aber mit dem Attribut "pingInterval" noch getunt werden.
Hab die Version mal angehängt, ist aber noch sehr wenig getestet. Kann also auch ins Auge gehen...
Bei mir sieht das Ganze übrigens so aus:
name function max count total average maxDly
tmr-XBMC_CheckConnection HASH(0x93ba6a8) 1021 41 1564 38.15 13 HASH(0x93ba6a8)
nty_wz_xbmcAll notify_Exec 1013 19 1020 53.68 0 HASH(0x9a62150); HASH(0x93ba6a8)
wz_tv STV_Set 1005 6 1005 167.50 0 HASH(0x8f2d558); wz_tv; POWEROFF
HMLAN0 HMLAN_Read 602 184 1136 6.17 0 HASH(0x9032078)
FileLog_wz_hmTcWeather FileLog_Get 126 2 176 88.00 0 HASH(0x99e0e48); FileLog_wz_hmTcWeather; CURRENT; INT; 2014-06-03_00:00:00; 2014-06-04_00:00:01; 4:wz_hmTcWeather.humidity\x3a::; 4:wz_hmTcWeather.temperature\x3a::
FileLog_wz_hmRt FileLog_Get 68 2 115 57.50 0 HASH(0x98411f0); FileLog_wz_hmRt; CURRENT; INT; 2014-06-03_00:00:00; 2014-06-04_00:00:01; 4:wz_hmRt.actuator\x3a::; 4:wz_hmRt.measured-temp\x3a::; 4:wz_hmRt.desired-temp\x3a::
WEB FW_Read 68 211 7134 33.81 0 HASH(0x8c45bd8)
Also XBMC_CheckConnection liegt normalerweise so um die 40 ms. Jedoch hat einen Ausreißer von 1 Sekunde. Das war der Moment also ich XBMC ausgeschaltet habe.
@justme1968
Auch eine sehr interessante Sache, danke! Werd ich mir mit Sicherheit bei Gelegenheit mal näher zur Gemüte führen...
So ich habe mal eben installiert und teste nun. Vielen Dank für deine Mühe vbs!
Edit:
Was mich eigentlich schon eine ganze Weile stört ist die (scheinbar) fehlende UTF-8 Unterstützung.
Kannst du da auch etwas dran ändern vbs?
Zitat von: justme1968 am 03 Juni 2014, 00:22:47
vielleicht habt ihr lust mal das sandbox konzept von hier: http://forum.fhem.de/index.php/topic,18275.msg173732.html#msg173732
zu probieren.
damit könnte man ein xbmc deivce komplett in einen eigenen prozess auslagern und muss sich um nichts weiter kümmern:define [sandbox] xbmc XBMC ...
gruss
andre
Andre, ich bin schon richtig "heiß" auf das Modul. Werde ich danach testen!
Sorry, hab so spontan nicht so die Ideen wegen der UTF-8-Sache. Gibt es andere Module die Unicode-Zeichen erfolgreich auf der Webseite anzeigen? Ich könnte mal reingucken, wie die das machen...
der erste schritt ist erst mal rauszufinden in welchem encoding die daten an kommen.
falls es latin1 ist gibt es ein latin1ToUtf8 in fhem.pl das du verwenden kannst.
GDS ist ein modul das du dir anschauen kannst.
gruss
andre
Hatte mir das schon im Wireshark angesehen und ich war der Meinung dort von XBMC UTF-8 gesehen zu haben. Wäre dann die Frage, wo es auf der Strecke bleibt... D.h. eigentlich sollte das alles schon gehen, wenn von XBMC korrekt UTF-8 käme?
zeig mal so einen mitschnitt.
Sieht dann so aus:
(https://dl.dropboxusercontent.com/u/24641738/xbmcutf.png)
das ist tatsächlich ein unicode ö.
nimm mal statt decode($ret)
ein JSON->new->utf8(0)->decode($ret);
oder sogar JSON->new->utf8->decode(encode('UTF-8', $ret))
und schau ob das encoding damit stimmt. das ist zumindest das was ich im netatmo und wittings modul tun muss damit es richtig ist.
gruss
andre
Zitat von: justme1968 am 06 Juni 2014, 23:27:07
JSON->new->utf8->decode(encode('UTF-8', $ret))
Also prinzipiell klappt das damit. Die Strings sind dann UTF-8. Werden jedoch in Chrome falsch angezeigt (als zwei Sonderzeichen). Klappt erst nachdem ich nochmal händisch in Chrome die Kodierung auf UTF-8 gestellt habe (die aber vorher eh schon auf UTF-8 stand).
Die HTML-Seite selber hat keine Encoding-Angaben, aber die Angabe "UTF-8" kommt als HTTP-Header mit... Seltsam, scheint eine Chrome-Macke zu sein? Hat aber bei anderen Webseiten keine Probleme.
EDIT:
PS. Die Version im Anhang... P.A.Trick? Magst ma testen bei dir?
Ähm beim Neustart viel mir diese Meldung auf!
2014.06.07 10:08:11 1: configfile: wz_XBMC: unknown attribute event-on-change-reading. Type 'attr wz_XBMC ?' for a detailed list.
Warum gibt's kein on-change Event mehr?
Jetzt klappt es bei mir mit der UTF-8 Kodierung!
Klasse - Danke!
Zitat von: P.A.Trick am 07 Juni 2014, 10:09:45
Ähm beim Neustart viel mir diese Meldung auf!
2014.06.07 10:08:11 1: configfile: wz_XBMC: unknown attribute event-on-change-reading. Type 'attr wz_XBMC ?' for a detailed list.
Warum gibt's kein on-change Event mehr?
Kurz gesagt: Weil ich Scheisse baut hab ;D
Gibt jetzt dafür das Attribut "pingIntervalevent-on-change-reading"... Hab da wohl ein Leerzeichen vergessen, sorry.
Korrigierte Version im Anhang...
Danke - Fehler ist weg!
Hier nochmal ein Update, dass einen problemlosen Betrieb mit DbLog ermöglicht wenn man die fork-Option verwendet.
Das kann ich leider nicht testen, da ich kein dblog habe!
BTW: In der voherigen Version ist mir das noch auf der Konsole aufgefallen!
Use of uninitialized value $data in concatenation (.) or string at ./FHEM/70_XBMC.pm line 263.
Use of uninitialized value $data in concatenation (.) or string at ./FHEM/70_XBMC.pm line 265.
Super, danke fürs Melden! Gefixt im Anhang.
Die Meldungen sind nun weg! Danke!
Hallo,
ich habe gelesen das nur Frodo unterstützt wird von diesem Modul.
Ich benutze nun aber schon Gotham.
Einzige Besonderheit die mir aufgefallen ist Gotham öffnet den JSON TCP Port nur noch mit IPv6.
Das Modul meckert nicht rum wenn ich ihm als IP [::1]:9090 mitgebe, aber verbinden kann es sich auch nicht.
Liegt es am Script oder an mir das es nicht funktioniert?
Gruß,
EssKaa
Also bei mir klappt das wunderbar mit IPv4 auch mit Gotham (OpenELEC).
Ich glaube ich habe meine Antwort selbst gefunden:
https://github.com/xbmc/xbmc/issues/4344
Gotham macht den IPv4 Port nur auf wenn auch ANDERE Systeme den XBMC steuern dürfen, normalerweise läuft das bei mir alles nur über localhost.
IPv6 scheint aber trotzdem nicht zu funktionieren...
Ich habe wieder mein UTF-8 Problem. Hatten wir das nicht gefixt oder wurde nur das Modul noch nicht eingecheckt?
Ist nicht eingecheckt (leider).
Woran liegt's? Ist der Modulautor nicht greifbar?
Ich weiss nicht. Bisher keine Reaktion. Evtl. werde ich ihn mal direkt anschreiben bei Gelegenheit...
Ah ok - Danke für deine Mühe!
@vbs:
Wäre es möglich dass du dich mal diesem Thema annimmst? XBMC Übergabe des aktuellen Videos von einem XBMC zum nächsten (http://forum.fhem.de/index.php/topic,24741.0.html)
In meinem letzten Post habe ich beschrieben wie ich es (mit einer fest eingetragenen ID im Modulcode) hinbekommen habe. Der Entwickler des Moduls scheint ja momentan nicht erreichbar zu sein bzw. keine Zeit zu haben.
Falls nicht, wäre das natürlich auch ok. ;)
Anbei eine aktualisierte Version des XBMC Moduls (Quelle war die bereits editierte Version aus diesem Thread von vbs, als mit zusätzlichen Logfunktionen)
Neue Funktionen:
- openepisodeid oder openmovieid: startet den gewählten ID Eintrag aus der XBMC Datenbank. Kann aus dem Reading "episodeid" oder "movieid" abgelesen werden. Falls ein Resumepunkt vorhanden ist, wird die Wiedergabe automatisch ab diesem gestartet. Sollte keiner vorliegen, startet die Wiedergabe vom Start an.
set xbmc_device openepisodeid 123
- jsonraw: Hier können JSON Requests RAW abgesendet werden
set xbmc_device jsonraw {"params":{"item":{"episodeid":123},"options":{"resume":true}},"jsonrpc":"2.0","method":"Player.Open"}
Tester sind gerne willkommen.
EDIT: Getestet habe ich sowohl mit TCP als auch HTTP Konfigurationen.
Anbei eine aktualisierte Version des XBMC Moduls (Quelle war die Version aus dem vorherigen Post)
Neue Funktion:
- addon: Kann ein XBMC Addon mit einem Parameter ansteuern.
set xbmc_device addon ADDONID PARAMETERNAME PARAMETERVALUE
In meinem konkreten Fall möchte ich über dieses Addon (https://github.com/joshjowen/script.json-cec) meinen Fernseher im Schlafzimmer (nicht Netzwerkfähig, aber mittels OpenELEC auf Rpi via CEC steuerbar) in Standby versetzen und wieder an schalten.
Mit dieser Funktion können aber auch andere Addons angesteuert werden, solange man nur einen Parameter übergeben muss.
Beispiel:
set xbmc_device addon script.json-cec command activate
Macht es nicht Sinn, die Änderung in die offizielle Version des Moduls auf fhem.de zu übernehmen? Ich kann ja Dennis B. mal ne PN schicken.
Von mir aus natürlich gerne. :)
Zum Thema Übernahme ins SVN: Hast du Dennis schon eine PN gesendet?
Zum Thema XBMC Modul: Kommt von XBMC tatsächlich der Type "movie" zurückgesendet, wenn man ein YouTube Video anschaut? Ich habe mal den Quellcode vom FHEM Modul überflogen und es sieht so aus, als wenn diese Information tatsächlich von XBMC kommt. Ich hätte mir da eher was vorgestellt wie "addon" oder "stream"...
Mein Problem: Ich habe ein Notify welches beim Starten eines Films triggert (aktuelle Lichkonfiguration per LightScene speichern für das Pause|Stop Notify und die Lampen per LightScene in "Film Modus" bringen). Es ist jedoch nervig, wenn man abends ein paar YouTube Videos auf den Fernseher sendet und immer die Lampen dunkel werden. Ich habe auch kein anderes Reading ausmachen können, andem ich ein gestreamtes Video identifizieren könnte. Selbst das "currentMedia" Reading bleibt auf dem alten Stand (in meinem Fall der SMB Pfad des letzten Movies oder der letzten Episode). :(
Maximal könnte man versuchen anhand der Spieldauer zusätzlich zum Type "movie" zu referenzieren (ala: Trigger wenn Type Movie und Reading totaltime > 1Stunde) jedoch wäre das sicher nicht die sauberste Alternative...
Jemand eine elegantere Lösung für das Problem?
lass das modul mal mit verbose 5 laufen. eventuell musst du es global einschalten. dann wird die komplette nachricht die vom xbmc empfangen wird ins log geschrieben. vielleichts steht da noch etwas drin das noch nicht ausgewertet wird.
gruss
andre
Zitat von: justme1968 am 21 September 2014, 20:34:06
lass das modul mal mit verbose 5 laufen. eventuell musst du es global einschalten. dann wird die komplette nachricht die vom xbmc empfangen wird ins log geschrieben. vielleichts steht da noch etwas drin das noch nicht ausgewertet wird.
Gute Idee! Werde ich demnächst mal testen. :)
Zitat von: siggi85 am 21 September 2014, 20:11:01
Zum Thema Übernahme ins SVN: Hast du Dennis schon eine PN gesendet?
Achja da war ja was, jetzt ja :-).
Zitat von: justme1968 am 21 September 2014, 20:34:06
lass das modul mal mit verbose 5 laufen. eventuell musst du es global einschalten. dann wird die komplette nachricht die vom xbmc empfangen wird ins log geschrieben. vielleichts steht da noch etwas drin das noch nicht ausgewertet wird.
Ich habe heute morgen mal die JSON Meldungen des XBMC Moduls angeschaut und leider nichts entdeckt. Vielleicht müsste man in der Abfrage bei dem OnPlay Event einen weiteren Parameter abfragen, anhand dessen man eine Stream identifizieren kann. Ich werde demnächst mal in die Referenz der XBMC API schauen, ob es da was gibt. Je nachdem ob und was ich finde würde ich versuchen ein bestehendes Reading anzupassen (currentMedia?!) oder ein Neues hinzuzufügen.
Danke für die PN an Dennis. :)
was das anpassen der readings angeht gibt es noch einen punkt der noch offen und noch nicht ganz zuende gedacht ist.
es gab die idee das man alle readings die nicht zum aktuell abgespielten medium gehören entfernt. d.h. wenn ein film gespielt wird alles was tv serie oder musik betrifft löschen und jeweils umgekehrt und zusätzlich eine zusammenfassung in ein eigenes reading schreibt.
gruss
andre
Jetzt wo du es sagst, das ist mir am Anfang bei dem Modul auch aufgefallen. Mittlerweile habe ich gar nicht mehr darüber nachgedacht. :P
Dann würde (beim aktuellen Stand) das Attribut "currentMedia" nicht gefüllt sein, wenn es sich um einen Stream handelt. Und falls man das Attribut zukünftig bei einem Stream füllen möchte, dann könnte man ja auf den Inhalt prüfen. ( if smb.* then Lokal Else Stream)
Ist es mit diesem Modul auch möglich aus XBMC heraus FHEM zu steuern?
Konkret würde ich gerne freie Buttons IR Fernbedienung so belegen, dass ich damit das Licht im Wohnzimmer steuern kann oder die Steckdosenleiste, an der TV und Verstärker hängen, einschalten kann.
Oder bin ich hier falsch und das Modul funktioniert nur in die andere Richtung?
Ja das Modul hier funktioniert in die andere Richtung, damit kann ich per FHEM den XBMC Rechner steuern. Andersherum gibt es auch aber nicht so weit entwickelt. Deine Wünsche könnten aber über HTTP Links gehen. Wenn du kein Feedback von FHEM über den Zustand benötigst.
Naja, den Zustand könnte dieses Modul ja wieder liefern ;)
Ok, danke. Die Frage wie ich das mit den HTTP Links mit einer Fernbedienung verheiratet bekomme gehört dann denke ich eher in ein XBMC Forum, wa? :)
Zitat von: justme1968 am 22 September 2014, 14:35:21
was das anpassen der readings angeht gibt es noch einen punkt der noch offen und noch nicht ganz zuende gedacht ist.
es gab die idee das man alle readings die nicht zum aktuell abgespielten medium gehören entfernt. d.h. wenn ein film gespielt wird alles was tv serie oder musik betrifft löschen und jeweils umgekehrt und zusätzlich eine zusammenfassung in ein eigenes reading schreibt.
gruss
andre
Gibt es jemand der das umsetzen würde?
Ich habe schon mal über den Code geschaut, aber ich glaube ich stecke noch nicht so tief in der Entwicklermaterie, dass ich das umsetzen könnte.
Zitat von: LeoSum am 25 September 2014, 16:05:53
Naja, den Zustand könnte dieses Modul ja wieder liefern ;)
Ok, danke. Die Frage wie ich das mit den HTTP Links mit einer Fernbedienung verheiratet bekomme gehört dann denke ich eher in ein XBMC Forum, wa? :)
Ich glaube das wäre im XBMC besser aufgehoben. :)
Trotzdem: ich hätte jetzt auf Keymap (http://wiki.xbmc.org/index.php?title=keymap) getippt, aber beim Überfliegen habe ich nichts Richtung HTTP Requests entdecken können. Vielleicht findest du ja noch eine Lösung. Falls ja kannst du dich ja noch mal melden. :)
Ausgehend von http://wiki.xbmc.org/index.php?title=List_of_built-in_functions (http://wiki.xbmc.org/index.php?title=List_of_built-in_functions) habe ich mal in die keyboard.xml für Taste y eingefügt:
<y>System.Exec(mein_fhem_script.sh)</y>
#mein_fhem_script.sh
#!/bin/bash
echo "<mein_fhem_Befehl>" | nc -w5 <IP-Adresse_fhem> 7072
Leider minimiert sich XBMC(Gotham) mit System.Exec bei mir :(
Komfortabler:
<y>RunAddon(addon.fhem-commands)</y>
addon.fhem-commands:http://forum.fhem.de/index.php/topic,27074.msg200345.html#msg200345 (http://forum.fhem.de/index.php/topic,27074.msg200345.html#msg200345)
Es wird hier aber sehr OT,denke ich :)
Gruss
Hans
Ich habe es mit eventghost gelöst. Das ruft einfach per http fhem Befehle auf.
Ich bekomme beim shutdown von XBMC immer diese Meldung im Terminal:
Use of uninitialized value $data in concatenation (.) or string at ./FHEM/70_XBMC.pm line 265.
Use of uninitialized value $data in concatenation (.) or string at ./FHEM/70_XBMC.pm line 267.
md5summe der Datei:
e7a71d9e51b52255e9033c405349c398 FHEM/70_XBMC.pm
Einer einen Tipp was da schief laeuft?
Zitat von: justme1968 am 22 September 2014, 14:35:21
was das anpassen der readings angeht gibt es noch einen punkt der noch offen und noch nicht ganz zuende gedacht ist.
es gab die idee das man alle readings die nicht zum aktuell abgespielten medium gehören entfernt. d.h. wenn ein film gespielt wird alles was tv serie oder musik betrifft löschen und jeweils umgekehrt und zusätzlich eine zusammenfassung in ein eigenes reading schreibt.
Da die Frage ggf. untergegangen ist, hier nochmal :) : Gibt es jemanden, der dies implementieren könnte?
Zitat von: strauch am 22 September 2014, 12:43:48
Achja da war ja was, jetzt ja :-).
Kam hier schon eine Antwort, oder ist Dennis nicht mehr aktiv?!?
Ich hab bisher keine Antwort erhalten. Ich kann gerade nicht schauen aber ich meine er hätte das Forum immer noch besucht.
Hallo zusammen.
Ich bin noch recht neu in der FHEM Welt. Und direkt habe ich eine relativ spezielle Frage zum XBMC Modul.
Und zwar wird die Maskierung meiner Leinwand über einen Rolladenschalter, welcher in FHEM konfiguriert ist, gesteuert.
Da ja das XBMC Modul auch diverse Readings zur Verfügung stellt, wäre es jetzt total super, wenn ich das Seitenverhätnis (16:9 oder 21:9) mit FHEM aus XBMC auslesen könnte und dann mit einem notify meine Maskierung automatisch fahren lassen könnte.
Im XBMC Modul werden die Videoinformationen ja mit VideoLibrary.GetMovieDetails ausgelesen. Hier gibt es unter properties den Eintrag "streamdetails". Darin ist "aspect" versteckt und somit genau die Information, welche ich bräuchte.
Ich habe die letzte Version des XBMC Moduls aus diesem Faden hier mal versucht anzupassen. Dazu habe ich in Zeile 350 "streamdetails" hinzugefügt.
"properties" => ["title","file","year","originaltitle","streamdetails"]
Das entsprechende Reading taucht auch auf. Allerdings kann man damit nichts anfangen.
"Streamdetails" liefert nochmal drei Arrays - "audio" , "subtitle" , "video". Wie bekomm ich das jetzt hin, die Streamdetails und dann das video-Array noch zu zerlegen, dass ich den Zahlenwert in den Readings habe?
Vielleicht noch was im WEBGUI von FHEM zu sehen ist:
streamdetails HASH(0x1877848)
Und was über die jsonlist von FHEM rauskommt:
"streamdetails": {
"TIME": "2014-10-09 18:16:00",
"VAL": {
"audio": "ARRAY",
"subtitle": "ARRAY",
"video": "ARRAY"
}
Vielleicht kann mir ja jemand von euch weiter helfen. Das wäre echt super!
Schonmal Danke und Grüße,
Ingo
Hi Leute,
ich habe XBMC auf nem Odroid laufen. In FHEM die beiden .pm installiert (es ist doch richtig, dass sie mir danach nicht unter "Edit files" angezeigt werden? Wurden aber ohne Fehlermeldung angenommen. Naja jetzt zum Problem.
Der Status wird mir zuverlässig angezeigt (ob XBMC verbunden/ online oder nicht) Sieh auch Anhang
Jedoch kommt keiner meiner Befehle an, weder als Befehl in im Eingabefenster, noch im Skript einer Szene und auch leider nicht über die virtuelle Fernbedienung in FHEM sieh auch Anhang.
Ein Fehler wird mir im Log nicht ausgegeben, eher vermute ich, dass XBMC die Befehle nicht erhält bzw. nicht versteht oder ignoriert.
An JSON-RPC liegt es nicht, das ist drauf. Hat noch jemand eine Idee?
Ich dachte nicht, dass es so kompliziert wird.
Danke schon mal für die Hilfe
Zitat von: siggi85 am 27 September 2014, 09:17:33Vielleicht findest du ja noch eine Lösung. Falls ja kannst du dich ja noch mal melden. :)
Hab ich in der Tat!
Und zwar war der Tipp von Hans Franz Zielführend
Zitat von: Hans Franz am 27 September 2014, 12:28:08
[...] in die keyboard.xml für Taste y eingefügt:
<y>System.Exec(mein_fhem_script.sh)</y>
#!/bin/bash
echo "<mein_fhem_Befehl>" | nc -w5 <IP-Adresse_fhem> 7072
Leider minimiert sich XBMC(Gotham) mit System.Exec bei mir :(
Bei mir funktioniert es wunderbar, wenn die erste Zeile "#!/bin/bash" lautet und nicht "#mein_fhem_script.sh". Liegt es vielleicht da dran, dass es bei dir nicht funzt?
Naja jedenfalls habe ich mein Ziel erreicht und kann mir jetzt auf der Harmony Knöpfe einrichten, die bestimmte FHEM Befehle ausführen. Perfekt! Danke für eure Mithilfe!
ich raffs net...
ich bin connected mit xbmc... aber wenn ich die paar zeilen aus dem wiki nehme , bekomme ich ne fehlermeldung, aber ich weiss net von wo die kommt :
hier mein code :
define NUC XBMC 192.168.1.33 tcp xbmc xbmc
attr NUC devStateIcon opened:rc_GREEN:on disconnected:rc_RED:off Initialized:message_socket_disabled
attr NUC room 1._RDC
define notify_XBMC_status notify NUC:playStatus.* { if (ReadingsVal("NUC", "type", "") eq "movie"){
if (ReadingsVal("NUC", "playStatus", "") eq "playing"){
fhem("set Stuff1 0 0 7;;set Stuff2 0 0 7;;set Stuff3 off;;set Stuff4 off");
}
if (ReadingsVal("NUC", "playStatus", "") eq "paused"){
fhem("set Stuff1 100 0 10;;set Stuff2 100 0 10");
}
}
}
und hier die Fehlermeldung :
IF: no left bracket: { Unknown command fhem("set, try help. Unknown command }, try help. IF: no left bracket: { Unknown command fhem("set, try help. Unknown command }, try help. Unknown command }, try help. Unknown command }, try help.
kann mir da jemand helfen ?
danke ....
gib den code im frontend ein nach dem du auf DEF geklickt hast.
nicht von hand in ins config file schreiben.
gruss
andre
meinst du so ?
weil so klappt's auch net... :-(
nicht ins def de xbmc devices sondern ins notify.
ein notify anlegen durch eingabe von define notify_XBMC_status notify NUC:playStatus.* {}
in der command box oder per telnet und dann den den rest per DEF eintragen.
gruss
andre
ok
sorry dass ich so doof rumfrage aber mit dieser DEF box hatte ich bis jetzt nie was zu tun. dachte das würde einfach nur in die Config eingetragen werden.... Hat das nen bestimmten Grund dass das jetzt so ist ?
sieht jetzt dann so aus :
define NUC XBMC 192.168.1.33 tcp xbmc xbmc
attr NUC devStateIcon opened:rc_GREEN:on disconnected:rc_RED:off Initialized:message_socket_disabled
attr NUC room 1._RDC
define notify_XBMC_status notify NUC:playStatus.* {}
und im DEF :
192.168.1.33 tcp xbmc xbmc
if (ReadingsVal("NUC", "type", "") eq "movie"){
if (ReadingsVal("NUC", "playStatus", "") eq "playing"){
fhem("set Stuff1 0 0 7;;set Stuff2 0 0 7;;set Stuff3 off;;set Stuff4 off");
}
if (ReadingsVal("NUC", "playStatus", "") eq "paused"){
fhem("set Stuff1 100 0 10;;set Stuff2 100 0 10");
}
}
auf jeden fall hab ich nun keine fehlermeldung mehr im log
aber funtzen tut es trotzdem noch net :-(
2014.10.27 21:43:07.895 1: 192.168.1.33:9090 reappeared (NUC)
2014.10.27 21:43:15.613 3: notify_XBMC_status return value: HASH(0x42de660)
2014.10.27 21:43:24.716 3: notify_XBMC_status return value: HASH(0x42521e0)
2014.10.27 21:43:24.734 3: notify_XBMC_status return value: HASH(0x4046258)
2014.10.27 21:46:28.136 3: notify_XBMC_status return value: HASH(0x401b550)
2014.10.27 21:46:52.969 3: notify_XBMC_status return value: HASH(0x41ed978)
2014.10.27 21:46:52.987 3: notify_XBMC_status return value: HASH(0x4465270)
du hast das xbmc define und das notify DEF vermischt.
im DEF muss das hier stehen:NUC:playStatus.* { if (ReadingsVal("NUC", "type", "") eq "movie"){
if (ReadingsVal("NUC", "playStatus", "") eq "playing"){
fhem("set Stuff1 0 0 7;;set Stuff2 0 0 7;;set Stuff3 off;;set Stuff4 off");
}
if (ReadingsVal("NUC", "playStatus", "") eq "paused"){
fhem("set Stuff1 100 0 10;;set Stuff2 100 0 10");
}
}
}
wenn du etwas mehrzeiliges oder mit ; in die config einträgst musst du dich selber um das maskieren und verdoppeln bestimmter zeichen kümmern. wenn du das ins DEF einträgst macht fhem das für dich.
ausserdem muss fhem nicht neu gestartet werden um die config neu einzulesen.
gruss
andre
ps: wenn alles so ist wie du es willst save nicht vergessen.
entweder ich mach echt was falsch oder ich hab irgendwo den wurm drinne.....
so wie es jetzt in der config aussieht :
define notify_XBMC_status notify NUC:playStatus.* {}
define NUC XBMC 192.168.1.33 tcp xbmc xbmc\
NUC:playStatus.* { if (ReadingsVal("NUC", "type", "") eq "movie"){\
if (ReadingsVal("NUC", "playStatus", "") eq "playing"){\
fhem("set Stuff1 0 0 7;;;;set Stuff2 0 0 7;;;;set Stuff3 off;;;;set Stuff4 off");;\
}\
if (ReadingsVal("NUC", "playStatus", "") eq "paused"){\
fhem("set Stuff1 100 0 10;;;;set Stuff2 100 0 10");;\
}\
}\
}
attr NUC devStateIcon opened:rc_GREEN:on disconnected:rc_RED:off Initialized:message_socket_disabled
attr NUC room 1._RDC
das DEF folgendermassen :
192.168.1.33 tcp xbmc xbmc
NUC:playStatus.* { if (ReadingsVal("NUC", "type", "") eq "movie"){
if (ReadingsVal("NUC", "playStatus", "") eq "playing"){
fhem("set Stuff1 0 0 7;;set Stuff2 0 0 7;;set Stuff3 off;;set Stuff4 off");
}
if (ReadingsVal("NUC", "playStatus", "") eq "paused"){
fhem("set Stuff1 100 0 10;;set Stuff2 100 0 10");
}
}
}
und im log kommt das :
2014.10.27 22:12:09.338 3: notify_XBMC_status return value: HASH(0x35c3b68)
2014.10.27 22:12:09.354 3: notify_XBMC_status return value: HASH(0x4315330)
2014.10.27 22:12:21.782 3: notify_XBMC_status return value: HASH(0x4313b28)
192.168.1.33 tcp xbmc xbmc
gehört nicht ins DEF des notify. stand bei mir oben auch nicht drin...
gruss
andre
im wiki steht aber :
Einbindung in Fhem
Beispieldefinition
define wz_XBMC XBMC <IP-Adresse> tcp <USERNAME> <PASSWORT>
attr wz_XBMC devStateIcon opened:rc_GREEN:on disconnected:rc_RED:off Initialized:message_socket_disabled
Erfolgreich getestet unter den Versionen XBMC 12.3 (Frodo) und fhem 5.5.
und wenn ich das dann so define NUC XBMC 192.168.1.33 tcp xbmc xbmc in die config eingebe, dann wird es so im DEF aufgenommen : 192.168.1.33 tcp xbmc xbmc
das sind zwei getrennte defines. eines für das xbmc device und eines fürs notify. wie oben schon geschrieben schmeisst du gerade beide durcheinander und mischst sie zusammen.
OK !!!
ich hab's , ich hab den fehler gefunden !!! DANKE ... booah stand auf der leitung.
Allerdings nur noch kleinigkeit .
ich hab ja angegeben dass : set Stuff1 100 0 10;;set Stuff2 100 0 10 zum anmachen und set Stuff1 0 0 7;;set Stuff2 0 0 7 zum ausmachen . also Dimmen.
Allerdings gehen die LED's "nur" on und off , sie dimmen nicht. Was kann das sein ?
ausserdem was mir noch aufgefallen ist dass von den LED's , also Stuff1 usw.... er nur die erste an oder aus macht. die anderen nimmt er nicht mit in betracht.
ok das mit dem dimmen funzt jetzt.
NUC:playStatus.* { if (ReadingsVal("NUC", "type", "") eq "movie"){
if (ReadingsVal("NUC", "playStatus", "") eq "playing"){
fhem("set Stuff1,Stuff2 0 0 7 ;;set Stuff3, Stuff4 off");
}
if (ReadingsVal("NUC", "playStatus", "") eq "paused"){
fhem("set Stuff1,Stuff2 100 0 10");
}
if (ReadingsVal("NUC", "playStatus", "") eq "stopped"){
fhem("set Stuff1,Stuff2 100 0 10");
}
}
}
allerdings gehen hier Stuff3 und 4 nicht auf OFF fhem("set Stuff1,Stuff2 0 0 7 ;;set Stuff3,Stuff4 off");
Nabend,
bekomme gerade folgendes:
2014.11.01 20:42:13.803 1: reload: Error:Modul 70_XBMC deactivated:
Can't locate JSON.pm in @INC (@INC contains: /etc/perl /usr/local/lib/perl/5.14.2 /usr/local/share/perl/5.14.2 /usr/lib/perl5 /usr/share/perl5 /usr/lib/perl/5.14 /usr/share/perl/5.14 /usr/local/lib/site_perl . ./FHEM) at ./FHEM/70_XBMC.pm line 18, <> line 70.
BEGIN failed--compilation aborted at ./FHEM/70_XBMC.pm line 18, <> line 70.
2014.11.01 20:42:13.804 0: Can't locate JSON.pm in @INC (@INC contains: /etc/perl /usr/local/lib/perl/5.14.2 /usr/local/share/perl/5.14.2 /usr/lib/perl5 /usr/share/perl5 /usr/lib/perl/5.14 /usr/share/perl/5.14 /usr/local/lib/site_perl . ./FHEM) at ./FHEM/70_XBMC.pm line 18, <> line 70.
BEGIN failed--compilation aborted at ./FHEM/70_XBMC.pm line 18, <> line 70.
Hast du das JSON Perl Modul installiert? Sieht aus, als kann er es nicht finden.
Auszug aus der Commandref:
The Perl module JSON is required.
On Debian/Raspbian: apt-get install libjson-perl
Via CPAN: cpan install JSON To get it working on a Fritzbox the JSON module has to be installed manually.
Ja. Klar. Hätte ich selbst drauf kommen können.
Da das Modul aber vor kurzem noch ging hatte ich dies nicht in Erwägung gezogen.
Mit deiner Antwort kam mir dann aber auch, dass ich vor kurzem ja von einem Pi auf ein Cubietruck umgestiegen bin. Da war das Paket natürlich noch nicht installiert :-[
Zitat von: dancatt am 02 November 2014, 10:00:52
Ja. Klar. Hätte ich selbst drauf kommen können.
Manchmal sieht man den Wald vor lauter Bäumen nicht. Hauptsache es funktioniert jetzt. :)
Hallo
Ich habe heute bei meinem XBMC ein update gemacht (Openelec 14.0)
Jetzt heist es ja nicht mehr XBMC sonder Kodi und das Modul kann sich nicht mehr connecten.
Was kann ich denn da machen jetzt?
Meiner Meinung nach brauchen wir dringend einen neuen Maintainer für das XBMC-Modul. Soweit ich weiß, hat der jetzige Maintainer zum letzten mal im Januar etwas eingecheckt. Ich hatte ihm vor ein paar Monaten auch schonmal geschrieben und er wollte eigentlich ein paar Patches einchecken. Ist aber leider nicht passiert.
Hier im Thread sind ja auch noch einige Patches ausstehend, die in das Repo eingecheckt werden müssten.
Zitat von: vbs am 09 November 2014, 00:49:38
Meiner Meinung nach brauchen wir dringend einen neuen Maintainer für das XBMC-Modul.
Da hast du Recht!
Hallo!
Ich benutze das XBMC Modul im Plex Modus. Ab und zu spammt mir das Modul aber meinen Log zu.
2014.11.09 19:16:01.399 3: Discard Player.OnSeek event because it is irrelevant
2014.11.09 19:16:01.548 3: Discard Player.OnSeek event because it is irrelevant
2014.11.09 19:16:01.689 3: Discard Player.OnSeek event because it is irrelevant
2014.11.09 19:16:01.941 3: Discard Player.OnSeek event because it is irrelevant
2014.11.09 19:16:02.159 3: Discard Player.OnSeek event because it is irrelevant
2014.11.09 19:16:02.292 3: Discard Player.OnSeek event because it is irrelevant
2014.11.09 19:16:02.581 3: Discard Player.OnSeek event because it is irrelevant
2014.11.09 19:16:03.040 3: Discard Player.OnSeek event because it is irrelevant
2014.11.09 19:16:03.280 3: Discard Player.OnSeek event because it is irrelevant
2014.11.09 19:16:03.499 3: Discard Player.OnSeek event because it is irrelevant
2014.11.09 19:16:03.760 3: Discard Player.OnSeek event because it is irrelevant
2014.11.09 19:16:04.978 3: Discard Player.OnSeek event because it is irrelevant
2014.11.09 19:16:05.124 3: Discard Player.OnSeek event because it is irrelevant
2014.11.09 19:16:05.319 3: Discard Player.OnSeek event because it is irrelevant
2014.11.09 19:16:05.579 3: Discard Player.OnSeek event because it is irrelevant
2014.11.09 19:16:05.721 3: Discard Player.OnSeek event because it is irrelevant
2014.11.09 19:16:05.850 3: Discard Player.OnSeek event because it is irrelevant
2014.11.09 19:16:06.160 3: Discard Player.OnSeek event because it is irrelevant
2014.11.09 19:16:06.300 3: Discard Player.OnSeek event because it is irrelevant
2014.11.09 19:16:06.448 3: Discard Player.OnSeek event because it is irrelevant
2014.11.09 19:16:06.640 3: Discard Player.OnSeek event because it is irrelevant
2014.11.09 19:16:06.801 3: Discard Player.OnSeek event because it is irrelevant
2014.11.09 19:16:07.380 3: Discard Player.OnSeek event because it is irrelevant
2014.11.09 19:16:08.540 3: Discard Player.OnSeek event because it is irrelevant
2014.11.09 19:16:09.919 3: Discard Player.OnSeek event because it is irrelevant
2014.11.09 19:16:12.239 3: Discard Player.OnSeek event because it is irrelevant
2014.11.09 19:16:12.539 3: Discard Player.OnSeek event because it is irrelevant
2014.11.09 19:16:12.856 3: Discard Player.OnSeek event because it is irrelevant
2014.11.09 19:16:13.272 3: Discard Player.OnSeek event because it is irrelevant
2014.11.09 19:16:14.420 3: Discard Player.OnSeek event because it is irrelevant
2014.11.09 19:16:14.580 3: Discard Player.OnSeek event because it is irrelevant
2014.11.09 19:16:14.878 3: Discard Player.OnSeek event because it is irrelevant
2014.11.09 19:16:15.026 3: Discard Player.OnSeek event because it is irrelevant
2014.11.09 19:16:15.220 3: Discard Player.OnSeek event because it is irrelevant
Internals:
DEF 10.0.0.40 tcp
DeviceName 10.0.0.40:9090
FD 94
Host 10.0.0.40
NAME plex
NR 253
PARTIAL
Port 9090
Protocol tcp
STATE opened
TYPE XBMC
Pendingevents:
Pendingplayercmds:
109930
116017
727939
921871
Readings:
2014-11-09 20:35:20 currentShowtitle 24
2014-11-09 20:35:20 currentTitle Tag 8: 04:00 Uhr - 05:00 Uhr
2014-11-09 20:35:20 episode 13
2014-11-09 19:14:45 fullscreen off
2014-11-09 19:05:38 gui -
2014-11-09 20:42:56 mute off
2014-11-09 19:14:45 name XBMC
2014-11-09 19:05:38 partymode -
2014-11-09 20:35:20 playStatus playing
2014-11-09 20:35:15 playlist add
2014-11-09 20:35:20 repeat off
2014-11-09 20:35:20 season 8
2014-11-09 20:35:20 shuffle off
2014-11-09 19:14:45 skin Plex(skin.plex)
2014-11-09 20:35:20 speed 1
2014-11-09 19:05:38 system quit
2014-11-09 20:35:20 time 00:00:00.170
2014-11-09 20:35:20 totaltime 00:43:20.704
2014-11-09 20:35:20 type episode
2014-11-09 19:14:45 version 12.2 stable
2014-11-09 20:42:56 volume 69
2014-11-09 20:34:54 year -
Attributes:
compatibilityMode plex
room 1.2 Fernbedienung
verbose 4
Jemand eine Idee woran das liegt?
Grüße
Das OnSeek sind Events, die von XBMC gesendet werden. FHEM macht mit diesen Events aber nichts und ignoriert sie. Geloggt werden sie aber trotzdem... keine Ahnung warum...
elsif($obj->{method} eq "Player.OnSeek") {
#XBMC_PlayerUpdate($hash,$obj->{params}->{data}->{player}->{playerid});
Log3($name, 3, "Discard Player.OnSeek event because it is irrelevant");
}
elsif($obj->{method} eq "Player.OnSpeedChanged") {
#XBMC_PlayerUpdate($hash,$obj->{params}->{data}->{player}->{playerid});
Log3($name, 3, "Discard Player.OnSpeedChanged event because it is irrelevant");
}
Hi
ich habe gerade auf fhem 5.6. geupdated. Seitdem habe ich jetzt ein Problem mit dem XBMC Modul.
An sich funktioniert alles , ausser dass er mir anzeigt dass es disconnected ist !
Wenn ich aber meine Aktionen durchführe klappt alles. er zeigt an die Movies die ich spiele, Lieder usw...
Eine Ahnung was das sein kann ?
als Fehlermeldung , wenn überhaupt , sehe ich nur das hier :
2014.11.19 00:16:26.337 1: 192.168.1.33:9090 reappeared (NUC)
Zitat von: Jumbo am 19 November 2014, 00:20:10
An sich funktioniert alles , ausser dass er mir anzeigt dass es disconnected ist !
Kann ich bestätigen!
Zitat von: Jumbo am 19 November 2014, 00:20:10
An sich funktioniert alles , ausser dass er mir anzeigt dass es disconnected ist !
Ich hab das Problem auch. Verwende das XBMC Modul im Plex Mode.
Grüße
ZitatMeiner Meinung nach brauchen wir dringend einen neuen Maintainer für das XBMC-Modul.
@vbs
Magst du nicht mal Rudi diesbezüglich anschreiben?
Es wäre echt schick wenn sich wer um das Modul kümmern würde.
Hi,
ich habe verucht das xbmc Modul in Fhem zum laufen zu bringen, bekomme aber schon beim define diesen Fehler
Wollte es über ein
define XBMC XBMC 192.168.188.22 tcp
einbinden, allerdings bekomme ich dann diesen Fehler:
Cannot load module XBMC
Was ist hier noch falsch?
Danke
Vermutlich fehlt json.
Kann ich das auf der FB7390 nachinstallieren?
Ich denke ich hab in einem Wiki Artikel eine Anleitung gesehen. Müsstest du mal suchen.
könnte man auch die Lampen an und ausschalten mit der Harmony ?
ich hab jetzt mal so probiert aber das funzt nicht.
define Luchten_Kichen notify hub:currentActivity.* Luchten_Kichen.* {if (Value("Stuff1 param state") eq "on") {fhem("set Stuff1 on")};;;;\
{if (Value("Stuff1 param state") eq "off") {fhem("set Stuff1 off")}}}
So weit komme ich gar nicht :(
Nutze OpenElec Stable auf nem Raspberry:
Version 4.2.1 Build vom 4.10.2014
http://openelec.tv/get-openelec/download/viewcategory/10-raspberry-pi-builds
Die Steuerung über Netzwerk ist eingeschaltet.
Habe diese Version von XBMC-pm runtergeladen:
http://forum.fhem.de/index.php/topic,10075.msg186702.html#msg186702
Logfile:
Zitat von: Log52014.11.24 08:46:05 5: XBMC_Call: Sending: {"jsonrpc":"2.0","method":"Input.Select"}
2014.11.24 08:46:05 5: SW: 7b226a736f6e727063223a22322e30222c226d6574686f64223a22496e7075742e53656c656374227d
Allerdings ist der state disconnected, und eine Reaktion am XBMC sehe ich auch nicht. Readings gibt es auch keine.
Zitat von: listInternals:
DEF 192.168.5.33 tcp
DeviceName 192.168.5.33:9090
Host 192.168.5.33
NAME wz_XBMC
NEXT_OPEN 1416816046.02311
NR 80
PARTIAL
Port 9090
Protocol tcp
STATE disconnected
TYPE XBMC
Attributes:
pingInterval 60
room Wohnzimmer,Multimedia
verbose 5
Kannst du mal gucken ob port 9090 offen ist (telnet zb)?
Arghhh
Danke :)
Ein
apt-get install nmap
später:
Zitat von: nmap
Starting Nmap 6.00 ( http://nmap.org ) at 2014-11-24 09:55 CET
Nmap scan report for OpenELEC.fritz.box (192.168.5.33)
Host is up (0.0094s latency).
Not shown: 996 closed ports
PORT STATE SERVICE
22/tcp open ssh
80/tcp open http
111/tcp open rpcbind
445/tcp open microsoft-ds
MAC Address: B8:27:EB:A2:E3:C4 (Raspberry Pi Foundation)
Ist er nicht :(
Muss ich was auf OpenElec installieren oder einen anderen Port nehmen (welchen?)
Ok,
ich glaube ich hab den Fehler:
Außer dem Freischalten für die Netzwerksteuerung benötigt es noch einen reboot...
Jetzt ist 9090/tcp open zeus-admin
Jetzt ist der state auch auf "opened", und readings gibt es auch :)
Danke vbs!
Habs jetzt auch noch wie hier beschrieben versucht:
http://www.fhemwiki.de/wiki/Hue
ZitatMan lädt das JSON-Paket http://search.cpan.org/CPAN/authors/id/M/MA/MAKAMAKA/JSON-2.53.tar.gz, packt es aus und kopiert den Inhalt vom lib-Verzeichnis nach \fhem\lib\perl5\site_perl\5.12.2
Allerdings kommt dann bei
define XBMC XBMC 192.168.188.22 tcp
trotzdem der Fehler.
2014.11.24 09:59:04.360 1: PERL WARNING: Bareword found where operator expected at /mod/external/usr/share/fhem/lib/perl5/site_perl/5.12.2/mips-linux/JSON.pm line 6, near ""en" class"
2014.11.24 09:59:04.363 1: PERL WARNING: (Missing operator before class?)
2014.11.24 09:59:04.365 1: PERL WARNING: Bareword found where operator expected at /mod/external/usr/share/fhem/lib/perl5/site_perl/5.12.2/mips-linux/JSON.pm line 13, near "<title>JSON"
2014.11.24 09:59:04.367 1: PERL WARNING: (Missing operator before JSON?)
2014.11.24 09:59:04.370 1: reload: Error:Modul 70_XBMC deactivated:
Unrecognized character \xC2; marked by <-- HERE after at master <-- HERE near column 35 at /mod/external/usr/share/fhem/lib/perl5/site_perl/5.12.2/mips-linux/JSON.pm line 13.
Compilation failed in require at ./FHEM/70_XBMC.pm line 18.
BEGIN failed--compilation aborted at ./FHEM/70_XBMC.pm line 18.
2014.11.24 09:59:04.372 0: Unrecognized character \xC2; marked by <-- HERE after at master <-- HERE near column 35 at /mod/external/usr/share/fhem/lib/perl5/site_perl/5.12.2/mips-linux/JSON.pm line 13.
Compilation failed in require at ./FHEM/70_XBMC.pm line 18.
BEGIN failed--compilation aborted at ./FHEM/70_XBMC.pm line 18.
Ich hoffe es hat noch einer eine idee?
@Jumbo:
- hub:currentActivity.* Luchten_Kichen.* ist keine gültige regex für ein notify. das leerzeichen muss weg.
- "Stuff1 param state" ist kein device name
- wenn irgendetwas on ist schaltest du es on und wenn es schon off ist schaltest du off. bist du sicher das es das ist was du willst?
gruss
andre
ja sorry , hub:currentActivity.* Luchten_Kichen.* mein Fehler ,das habe ich schon verbssert , das ist hub:currentActivity.* Luchten.Kichen.*
das mit dem on off ändere ich .
wie müsste ich den Status bei Stuff1 dann checken ?
Danke !
P.S. geht das ganze mittlerweile auch OHNE eine Aktivität zu nehmen , sondern nur ein Dummy Gerät das nur On/Off macht in der Harmony ?
da ist immer noch ein leerzeichen :)
einfach nur Value("Stuff1") oder ReadingsVal("Stuff1", "state", "")
nur wenn das device teil einer activity ist ja.
gruss
andre
hmm,
wenn ich das hier probiere :
define Luchten_Kichen notify hub:currentActivity.*Kichen.* {if (Value("Stuff1") eq "off") {fhem("set Stuff1 on")};;;;\
{if (Value("Stuff1") eq "on") {fhem("set Stuff1 off")}}}
ok, das klappt jetzt.
danke ...
das ist aber irgendwie keine saubere lösung weil man auf dem Display den knopf drücken muss und dann um die LED''s aus zu machen oben links den schalter off.
ist da noch eine andere Möglichkeit das "WAF" freundlicher zu machen ?
nur mit einem zusätzlichen ir empfänger.
ok, das wäre ja noch das kleinste übel ... kann ich da was irgendwo nachlesen ?
Wir haben hier ja schon festgestellt, dass der eigentliche Maintainer des XBMC Moduls sich nicht mehr meldet. Also wird anscheinend ein neuer benötigt. Wäre jemand bereit diesen Job zu übernehmen?
Selbst falls sich momentan niemand findet, wäre für viele sicher schön, wenn die letzten Änderungen (von vbs und mir) ins offizielle Repo eingespielt werden könnten. Bisher gab es keine Rückmeldungen, dass es Probleme gibt.
Ich habe die mir letzte bekannte Version aus meinem letzten Beitrag mit Anhang (http://forum.fhem.de/index.php/topic,10075.165.html) mal hier hochgeladen.
Hi Siggi,
wenn du doch schonmal änderungen am Modul vorgenommen hast, könntest du es doch Maintainden ;)
Hab deine Version aus dem Anhang mal eingespielt, und dann versucht xbmc über
Zitatdefine XBMC XBMC 192.168.188.22 tcp
zu definfieren, aber auch dann bekomme ich
ZitatCannot load module XBMC
und im Log
2014.11.25 13:02:45.704 3: stacktrace:
2014.11.25 13:02:45.706 3: main::__ANON__ called by /mod/external/usr/share/fhem/lib/perl5/site_perl/5.12.2/mips-linux/JSON.pm (13)
2014.11.25 13:02:45.707 3: (eval) called by ./FHEM/70_XBMC.pm (18)
2014.11.25 13:02:45.708 3: main::BEGIN called by /mod/external/usr/share/fhem/lib/perl5/site_perl/5.12.2/mips-linux/JSON.pm (13)
2014.11.25 13:02:45.710 3: (eval) called by /mod/external/usr/share/fhem/lib/perl5/site_perl/5.12.2/mips-linux/JSON.pm (13)
2014.11.25 13:02:45.711 3: (eval) called by /mod/external/usr/share/fhem/fhem.pl (2003)
2014.11.25 13:02:45.712 3: (eval) called by /mod/external/usr/share/fhem/fhem.pl (2002)
2014.11.25 13:02:45.713 3: main::CommandReload called by /mod/external/usr/share/fhem/fhem.pl (1516)
2014.11.25 13:02:45.714 3: main::LoadModule called by /mod/external/usr/share/fhem/fhem.pl (1558)
2014.11.25 13:02:45.716 3: main::CommandDefine called by /mod/external/usr/share/fhem/fhem.pl (972)
2014.11.25 13:02:45.717 3: main::AnalyzeCommand called by /mod/external/usr/share/fhem/fhem.pl (851)
2014.11.25 13:02:45.718 3: main::AnalyzeCommandChain called by ./FHEM/01_FHEMWEB.pm (1922)
2014.11.25 13:02:45.720 3: main::FW_fC called by ./FHEM/01_FHEMWEB.pm (601)
2014.11.25 13:02:45.721 3: main::FW_answerCall called by ./FHEM/01_FHEMWEB.pm (393)
2014.11.25 13:02:45.722 3: main::FW_Read called by /mod/external/usr/share/fhem/fhem.pl (2928)
2014.11.25 13:02:45.724 3: main::CallFn called by /mod/external/usr/share/fhem/fhem.pl (598)
2014.11.25 13:02:45.732 1: reload: Error:Modul 70_XBMC deactivated:
Ich bin eher son kleiner Hobby Skripter als ein Programmierer. Ich versteh nicht wirklich alle Teile des Codes. :P Ansonsten hätte ich schon ein paar mehr Sachen eingebaut. :D
Mh, hab die Version direkt aus meinem letzten Post genommen. Sollte eigentlich die gleiche sein, die ich gerade verwende. Werde morgen mal die Version einspielen die gerade bei mir aktiv läuft, auch wenn das die gleiche sein sollte. ;)
Wie versprochen, hier die Version die gerade aktiv bei mir läuft.
EDIT: Ist anscheinend genauso groß wie die Version die ich aus meinem letzten Thread habe. Hat noch jemand mit dieser Version Schwierigkeiten? Bei mir läuft es seit damals einwandfrei mit 4 XBMC Instanzen.
Hi Siggi,
nachdem ich nun von der FB auf den CT umgestiegen bin, klappt auch das definieren von xbmc.
Jetzt muss ich die verbindung noch hinbekommen, da geb ich mich nachher mal dran.
Danke schonmal für die Hilfe
Zitat von: Tommy82 am 27 November 2014, 15:20:16
Hi Siggi,
nachdem ich nun von der FB auf den CT umgestiegen bin, klappt auch das definieren von xbmc.
Jetzt muss ich die verbindung noch hinbekommen, da geb ich mich nachher mal dran.
Danke schonmal für die Hilfe
Ja, ich will auch schon länger auf den Cubietruck umziehen. Da aber noch viele anderen Sachen auf meinem FHEM Rpi laufen (mitunter will ich auch daher umziehen), habe ich bis jetzt immer den Einmalaufwand gescheut. ::) Irgendwann ist es aber soweit. ;D
Freut mich, dass das Definieren nun funktioniert! :)
ZitatJetzt muss ich die verbindung noch hinbekommen
Ist einfach.
Unter Openelec (oder XBMC) musst du die Kommunikation über das Netzwerk erlauben, anschließend benötigt XBMC einen Neustart! Da bin ich einige Posts vorher drüber gestolpert ;)
Hab mir gestern mal dieses Problem angesehen, dass STATE immer auf disconnected steht. Das passiert, sobald XBMC einmal von connected auf disconnected wechselt. Lag nicht an dem XBMC-Modul selbst, sondern an Änderungen in DevIo. Rudi hat das heute morgen gefixt und ich habs gerade getestet:
http://forum.fhem.de/index.php/topic,29764.0.html
Hallo XBMC-Freunde,
das XBMC_modul läuft wunderbar bei mir, allerdings mit einem kleinen Haken: Es gibt keine readings zum TV (PVR-Add-on). Wenn TV läuft, zeigt mir FHEM z.B. immernoch den Titel der DVD die zuvor lief an. Ich habe mir die JSON-RPC-API noch nicht genauer angesehen, aber die sollte mir doch eigentlich auch Infos liefern können wie:
* laufendes TV-Programm
* nächste geplante Aufnahme
* ...
Hat sich darüber schonmal jemand Gedanken gemacht oder ist bei mir irgendwo noch ein Loch in der Konfiguration?
Danke,
Grüße,
Oli
Hi,
ich habe xbmc jetzt über ein define XBMC XBMC 192.168.188.22 tcp kodi
attr XBMC devStateIcon opened:rc_GREEN:on disconnected:rc_RED:off Initialized:message_socket_disabled
in fhem eingebunden und anschliessend wie in der commandref die
Remote control:
There is an simple remote control layout for XBMC which contains the most basic buttons. To add the remote control to the webinterface execute the following commands:
define <rc_name> remotecontrol #adds the remote control
set <rc_name> layout XBMC_RClayout #sets the layout for the remote control
set <rc_name> makenotify <XBMC_device> #links the buttons to the actions
definiert.
Nur wie spielich jetzt die Musik ab? Wo kann ich die Auswählen?
Danke
Zitat von: Tommy82 am 01 Dezember 2014, 11:36:32
Hi,
ich habe xbmc jetzt über ein define XBMC XBMC 192.168.188.22 tcp kodi
attr XBMC devStateIcon opened:rc_GREEN:on disconnected:rc_RED:off Initialized:message_socket_disabled
in fhem eingebunden und anschliessend wie in der commandref die
Remote control:
There is an simple remote control layout for XBMC which contains the most basic buttons. To add the remote control to the webinterface execute the following commands:
define <rc_name> remotecontrol #adds the remote control
set <rc_name> layout XBMC_RClayout #sets the layout for the remote control
set <rc_name> makenotify <XBMC_device> #links the buttons to the actions
definiert.
Nur wie spielich jetzt die Musik ab? Wo kann ich die Auswählen?
Danke
Die Auswahl von Items aus der XBMC Datenbank ist mit der aktuellen Version des Moduls nicht möglich.
Über "open" oder "opendir" kannst du direkt die Pfade von Dateien angeben, welche abgespielt werden sollen. Die Sytnax für die URL Angabe bei "open" kannst du dir aus dem Reading "file" abschauen.
Mit der Version von mir (siehe einige Posts oben) ist über die Set Befehle "openmovieid" und "openepisodeid" ein Abspielen über die ID in der XBMC Datenbank möglich (ablesbar aus den Readings "movieid" und "episodeid"). Allerdings habe ich das noch nicht für Lieder umgesetzt. Wenn das gewünscht ist, kann ich mich da noch mal ransetzen.
Zitat von: KernSani am 30 November 2014, 23:57:12
Hallo XBMC-Freunde,
das XBMC_modul läuft wunderbar bei mir, allerdings mit einem kleinen Haken: Es gibt keine readings zum TV (PVR-Add-on). Wenn TV läuft, zeigt mir FHEM z.B. immernoch den Titel der DVD die zuvor lief an. Ich habe mir die JSON-RPC-API noch nicht genauer angesehen, aber die sollte mir doch eigentlich auch Infos liefern können wie:
* laufendes TV-Programm
* nächste geplante Aufnahme
* ...
Hat sich darüber schonmal jemand Gedanken gemacht oder ist bei mir irgendwo noch ein Loch in der Konfiguration?
Danke,
Grüße,
Oli
Es existieren noch keine Readings für PVR, es liegt also nicht an dir. ;)
Die Tatsache, dass beim Starten einer neuen Wiedergabe die Readings von alten Wiedergaben bestehen bleiben ist ein Punkt, welcher im Modul noch geändert werden müsste. Normalerweise sollten die Readings "showtitle" oder "musicvideoid" verschwinden, wenn zB ein Film (type=movie) gestartet wird.
Ich habe mich da mal dran probiert, aber habe es auf Anhieb nicht hinbekommen. Wenn sich hier mal ein richtiger Entwickler ransetzen würde, wäre das klasse. :)
Hi Siggi, danke für die schnelle antwort. Werd ich nachher mal probieren. Also ich möchte über Fhem und xbmc im Moment primär Musik abspielen.
Ist natürlich nicht ganz so komfortabel wenn ich immer den Pfad angeben muss. Wäre schön wenn das einer der es kann vereinfachen könnte, so das z. B alles an Musik was xbmc kennt aufrufen könnte, und z.b sortieren nach Interpret etc. und dem entsprechen abspielen
Da hast du Recht, das würde definitiv komfortabler gehen.
Vielleicht findet sich noch ein fähiger Entwickler, der Lust hat das XBMC Modul zu erweitern. :)
::) hmm....XBMC hat doch ein eingebautes Webinterface, mit dem ich mich durchklickern kann, oder alternativ z.B. AWXi.
Für mobile Devices gibt's auch diverse Apps.
Den Sinn, das in FHEM nachzubauen, sehe ich noch nicht...dafür braucht man ohnehin was, was sich über den Bildschirm ausbreitet.
Und den Schnellzugriff auf ein Dutzend Lieblings-Alben oder -Playlists krieg ich über ne Readingsgroup auch noch hin.
Mit Bordmitteln kannste auch - analog zum TV-Programm-Thread - per HTTMOD das XBMC Webinterface auslesen und nochmal anders in FHEM darstellen :-X
Ich finde schon, dass dies einige Vorteile hätte.
1. Ist es angenehm alle Funktionen in einer Oberfläche zu haben, statt jedes Mal auf das jeweilige Web Interface zu wechseln.
2. Eine Funktion wie "set my_xbmc opentvshow Two and a half Men" ("Two and a Half Men" als DropDown) um die neueste ungesehene Folge anzuschauen oder ein "set my_xbmc openplaylist Favorits" (Favorits als DropDown) um eine Playlist zu starten.
Klar kann man dies auch im Webinterface von XBMC machen, aber halt nicht in Notifys, Floorplans,Dashboads etc. verwenden.
Für diese Dinge wäre halt eine Kopplung von FHEM und den Daten in der XBMC Datenbank notwendig. Ein "get" über TV Shows, Interpreten etc. könnte auch praktisch sein um sie ggf. in eigenen MyUtils Skripten zu nutzen.
Klar wäre manches in FHEM integriert etwas einfacher. Wenn man sich mit sqlite oder json auskennt, hat man das wahrscheinlich auch schnell realisiert (auch im eigenen MyUtils), nur musst Du's ggf. dann auch GUI-benutzbar machen.
Bei ein paar Favoriten ist ein Dropdown ja noch machbar; wenn Du auf eine größere Sammlung von Musik oder Filmen zugreifst, wird's schon komplexer, mal von Performance ganz zu schweigen. Meine Vermutung ist, dass ein typischer XBMC-Nutzer das Ding nicht hat, um nur 5 Musikalben und 3 Filme zu verwalten 8)
Nicht, dass das die schönste aller Lösungen wäre - ich hab mir schnell was zusammengebastelt, wo ich ein Array einlese (Anzeigename + Pfad), und dann die ersten 10 Einträge über ne readingsgroup an die GUI bringe. Ist schnell editiert, und ich kann dann auch mal Alben auf Eis legen, die ich aktuell nicht mehr hören kann.
Das reicht, um meiner Familie einen one-click-Zugang zu Kinderliedern, Weihnachtsplaylist etc. zu verschaffen. Alles andere mach ich über andere Clients oder die FHEM-eigene Fernbedienung.
Hi Doggiebert wie genau machst du das mit der one Click Lösung für die Familie?:-)
Und was meinst du mit Fhem eigener Fernbedienung ?
Zitat von: siggi85 am 01 Dezember 2014, 12:12:52
Die Auswahl von Items aus der XBMC Datenbank ist mit der aktuellen Version des Moduls nicht möglich.
Über "open" oder "opendir" kannst du direkt die Pfade von Dateien angeben, welche abgespielt werden sollen. Die Sytnax für die URL Angabe bei "open" kannst du dir aus dem Reading "file" abschauen.
Mit der Version von mir (siehe einige Posts oben) ist über die Set Befehle "openmovieid" und "openepisodeid" ein Abspielen über die ID in der XBMC Datenbank möglich (ablesbar aus den Readings "movieid" und "episodeid"). Allerdings habe ich das noch nicht für Lieder umgesetzt. Wenn das gewünscht ist, kann ich mich da noch mal ransetzen.
Hi, wo finde ich das reading File?
Was muss ich genau eingeben um ein Lied abzuspielen ? Bekomme es nicht hin.
Wofür brauche ich die Remote ?
Uargh... :o
Zitat von: Tommy82 am 01 Dezember 2014, 17:40:04
Hi Doggiebert wie genau machst du das mit der one Click Lösung für die Familie?:-)
Und was meinst du mit Fhem eigener Fernbedienung ?
Hi, wo finde ich das reading File?
Was muss ich genau eingeben um ein Lied abzuspielen ? Bekomme es nicht hin.
Wofür brauche ich die Remote ?
a) die Remote für XBMC ist in der commandref sogar mit Beispiel beschrieben
b) was ein reading ist, weisst Du? Und wo Du readings zu einem Device (z.B. xbmc) einsehen kannst, weißt Du auch? Ansonsten bitte mal das Einsteiger pdf lesen
c) wie in der commandref: set <name> <command> [<parameter>]; das command ist z.B: opendir un der parameter ist in dem Fall path, d.h. der Pfad, in dem die Musikdateien sind. Dann vermutlich noch einen play Befehl hinterher schicken
d) Wozu braucht man eine Remote Control? Lustige Frage generell, aber im Speziellen: hast Du die XBMC Oberfläche schon mal gesehen?
Hallo Zusammen,
komme hier einfach nicht weiter:
define xbmcWoZi XBMC 192.168.88.8 tcp
attr xbmcWoZi userattr lightSceneParamsToSave lightSceneRestoreOnlyIfChanged:1,0
attr xbmcWoZi devStateIcon opened:rc_GREEN:on disconnected:rc_RED:off Initialized:message_socket_disabled
attr xbmcWoZi fork enable
attr xbmcWoZi group XBMC
attr xbmcWoZi icon it_server
attr xbmcWoZi pingInterval 60
attr xbmcWoZi room Wohnzimmer
attr xbmcWoZi webCmd shutdown
define notify_xbmcWoZi_status notify define|xbmcWoZi:pause.*|xbmcWoZi:play.*|xbmcWoZi:playStatus:.*|xbmcWoZi:type:.* notify_xbmcWoZi_status notify xbmcWoZi:playStatus.* { if (ReadingsVal("xbmcWoZi", "type", "") eq "movie"){\
if (ReadingsVal("xbmcWoZi", "playStatus", "") eq "play"){\
fhem("set Kueche.Licht off");;\
}\
if (ReadingsVal("xbmcWoZi", "playStatus", "") eq "pause"){\
fhem("set Kueche.Licht on");;\
}\
}\
}
Es klappt eigentlich alles mit dem Modul, außer das bei "pause" das Licht in der Küche an geht. Kann mir jemand sagen, was ich Falsch mache?
Vielen Dank
Gruß
PS
klassischer copy&paste Fehler, würd' ich sagen - schau Dir mal genau an, was Du da vor der geschweiften Klammer alles stehen hast :D
ich bräuchte auch mal ne kleine Hilfe.
ich habe meine Lampen und HUE's mit dem XBMC Modul gesteuert.
wenn ich auf play drücken geht alles aus. auf pause geht an und stop auch .
wenn ich aber nun eine Playlist mit XBMC mache ,kommt es jedesmal zu einem Stop , und es geht dann gleich wieder weiter. das heisst die Lampen gehen an und wieder aus.
Wie könnte ich das am einfachsten umgehen , dass man sagt z.b. " warte 5 sek , falls dann wieder läuft , nichts tun" ?
Kann mir da bitte jemand helfen ? das ist technisch schon zu hoch für mich.
danke
define notify_XBMC_status notify NUC:playStatus.* { if (ReadingsVal("NUC", "type", "") eq "movie"){\
if (ReadingsVal("NUC", "playStatus", "") eq "playing"){\
fhem("set Stuff1,Stuff2 0 0 7");;\
}\
if (ReadingsVal("NUC", "playStatus", "") eq "playing"){\
fhem("set Stuff3,Stuff4 off");;\
}\
if (ReadingsVal("NUC", "playStatus", "") eq "playing"){\
fhem("set HUEDevice1,HUEDevice2,HUEDevice3 off");;\
}\
if (ReadingsVal("NUC", "playStatus", "") eq "paused"){\
fhem("set HUEDevice1,HUEDevice2,HUEDevice3 on");;\
}\
if (ReadingsVal("NUC", "playStatus", "") eq "stopped"){\
fhem("set Stuff1,Stuff2 100 0 10");;\
}\
if (ReadingsVal("NUC", "playStatus", "") eq "stopped"){\
fhem("set HUEDevice1,HUEDevice2,HUEDevice3 on");;\
}\
if (ReadingsVal("NUC", "playStatus", "") eq "stopped"){\
fhem("set PIONEER listeningMode pureDirect");;\
}\
}\
}
Eine Idee wäre, das über einen Watchdog zu machen. Also du würdest da so definieren, dass er nur die Lampen einschaltet, wenn nicht innerhalb von x Sekunden von Stop wieder Play kommt.
Eine andere Idee wäre, dass du ein "at" erzeugst sobald Stop passiert. Das at schaltet dann nach x Sekunden die Lampen an. Du müsstest dann jedoch noch in dem Play-notify gucken, ob das at exisitiert und dann ggf. löschen, weil es ja in dem Fall nicht greifen soll.
Nur Ideen... muss nicht funktionieren ;)
das mit dem watchdog könnte funktionieren aber wie baust du den dann hier mit ein :
if (ReadingsVal("NUC", "playStatus", "") eq "playing"){\
fhem("set HUEDevice1,HUEDevice2,HUEDevice3 off");;\
}\
if (ReadingsVal("NUC", "playStatus", "") eq "paused"){\
fhem("set HUEDevice1,HUEDevice2, HUEDevice3 on");;\
}\
if (ReadingsVal("NUC", "playStatus", "") eq "stopped"){\
fhem("set Stuff1,Stuff2 100 0 10");;\
}\
if (ReadingsVal("NUC", "playStatus", "") eq "stopped"){\
fhem("set HUEDevice1,HUEDevice2,HUEDevice3 on");;\
}\
Die beiden stop-Ifs komplett rausnehmen und dann ein watchdog definieren in der Art:
define watchNuc watchdog NUC:playStatus.stopped 00:00:05 NUC:playStatus.playing set Stuff1,Stuff2 100 0 10
funktioniert nicht habe es jetzt so gemacht :
define notify_XBMC_status notify NUC:playStatus.* { if (ReadingsVal("NUC", "type", "") eq "movie"){\
if (ReadingsVal("NUC", "playStatus", "") eq "playing"){\
fhem("set Stuff1,Stuff2 0 0 7");;\
}\
if (ReadingsVal("NUC", "playStatus", "") eq "playing"){\
fhem("set Stuff3,Stuff4 off");;\
}\
if (ReadingsVal("NUC", "playStatus", "") eq "playing"){\
fhem("set HUEDevice1,HUEDevice2,HUEDevice3 off");;\
}\
if (ReadingsVal("NUC", "playStatus", "") eq "paused"){\
fhem("set HUEDevice1,HUEDevice2,HUEDevice3 on");;\
}\
if (ReadingsVal("NUC", "playStatus", "") eq "stopped"){\
fhem("set PIONEER listeningMode pureDirect");;\
}\
}\
}
define watchNuc watchdog NUC:playStatus.stopped 00:00:05 NUC:playStatus.playing set Stuff1,Stuff2 on
Hi,
habe bei mir das Problem, dass - trotz fork:enable - FHEM nach einer nicht definierbaren Zeit hängen bleibt.
Nun versuche ich bei der Methode "XBMC_Ready" durchzublicken, was mir aber nicht so recht gelingen mag. :o
Könnte mir mal jemand erklären wie die funktionieren soll?
Gruß,
Johannes
Hallo Johannes,
bei fork:enable bitte beachten, dass es dadurch zu Problemen beim speichern der fhem.cfg Datei, bzw. durch das dadurch angetriggerte "rereadcfg" kommen kann.
Siehe hierzu: http://forum.fhem.de/index.php/topic,30633.0.html (http://forum.fhem.de/index.php/topic,30633.0.html)
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
@vbs
ZitatThe source of this project is hosted on sourceforge, if you wish you can get
the latest version with the following command:
svn co https://svn.code.sf.net/p/fhem/code/trunk/fhem
If you wish to contribute to the project, then
- create a sourceforge account
- send an email to the project manager to add you as developer to the project
(right know this is r dot koenig at koeniglich dot de)
- check out the source
- if it is already checked out, it makes sense to do an update before
implementing your changes:
% svn update
- make your changes
- test if it is working (Really !!!)
- make an entry in the CHANGED file, giving your changes a "title".
- describe your changes in the file HISTORY, and dont forget to mention your
name and the date of change
- it makes sense to do a "svn diff" before checking in the stuff with
svn commit
Ich würde sagen, sourceforge Account erstellen und Rudi ne eMail schicken :)
Ok, werd ich wohl nächstes Jahr nochmal einen Versuch starten ;)
Hallo vbs,
danke für die Info, nutze die "offizielle" fhem Version, dachte bis heute, dass diese aktuell ist. Werde heute Abend mal die "Thread" Vesion testen.
Ist die Version aus diesem Post die aktuellste? http://forum.fhem.de/index.php/topic,10075.msg223863.html#msg223863 (http://forum.fhem.de/index.php/topic,10075.msg223863.html#msg223863)
und gibt es irgendwo ein Changelog was alles zwischen der "offiziellen" und der "Thread" Version geändert/erweitert/gefixt wurde?
Ja, das sollte der letzte Stand sein. Changelog gibt es nur im Thread verstreut. Änderungen waren von siggi und mir. Es war aber nicht viel. Aus dem Stehgreif fällt mir ein: das Verhalten bei fork und das Erkennen von Disconnects und das Abspielen von Datenbank-Einträgen (oder so ähnlich).
So, habe gerade mal die 70_XBMX.pm hier aus dem Thread getestet und das "fork Problem" ist damit behoben.
Dankeschön nochmal.
Gruß Schlimbo
Changelog verteilt im Thread hier wie vbs schon geschrieben hat. Die Änderungen sind aber natürlich auch im html Teil des Moduls dokumentiert.
Ich drück dir die Daumen vbs, dass du die Version ins offizielle SVN bekommst. :)
Zitat von: siggi85 am 05 Juli 2014, 09:40:38
Anbei eine aktualisierte Version des XBMC Moduls (Quelle war die bereits editierte Version aus diesem Thread von vbs, als mit zusätzlichen Logfunktionen)
Neue Funktionen:
- openepisodeid oder openmovieid: startet den gewählten ID Eintrag aus der XBMC Datenbank. Kann aus dem Reading "episodeid" oder "movieid" abgelesen werden. Falls ein Resumepunkt vorhanden ist, wird die Wiedergabe automatisch ab diesem gestartet. Sollte keiner vorliegen, startet die Wiedergabe vom Start an.
set xbmc_device openepisodeid 123
- jsonraw: Hier können JSON Requests RAW abgesendet werden
set xbmc_device jsonraw {"params":{"item":{"episodeid":123},"options":{"resume":true}},"jsonrpc":"2.0","method":"Player.Open"}
Tester sind gerne willkommen.
EDIT: Getestet habe ich sowohl mit TCP als auch HTTP Konfigurationen.
Waerst Du so nett Deine config zu posten. bzw. zu beschreiben wie die Uebergabe von einem ans andere Mediacenter funktioniert? Mir ist leider nicht ganz klar wie man das am besten umsetzen kann :)
Hat sich in der zwischenzeit eigentlich etwas wegen dem MT für das XBMC Modul getan?
Hab mich ehrlich gesagt noch nicht gekümmert. Werd ich aber hoffentlich bald machen...
Zitat von: hillbicks am 02 Januar 2015, 23:21:48
Waerst Du so nett Deine config zu posten. bzw. zu beschreiben wie die Uebergabe von einem ans andere Mediacenter funktioniert? Mir ist leider nicht ganz klar wie man das am besten umsetzen kann :)
Ich habe mal meine alten Thread zu diesem Thema mit meiner aktuellen myutils Subroutine gefüllt. Hoffe das hilft weiter.
XBMC Übergabe des aktuellen Videos von einem XBMC zum nächsten (http://forum.fhem.de/index.php/topic,24741.15.html)
Ich werde jetzt gerne übergangsweise als Maintainer fungieren:
http://forum.fhem.de/index.php/topic,29765.0.html
Werde jetzt im ersten Schritt erst einmal versuchen, unseren bisherigen "Thread-Stand" ins SVN zu bekommen :)
Zitat von: vbs am 05 Januar 2015, 13:06:36
Ich werde jetzt gerne übergangsweise als Maintainer fungieren:
Werde jetzt im ersten Schritt erst einmal versuchen, unseren bisherigen "Thread-Stand" ins SVN zu bekommen :)
Sauber! 8)
So, ich hoffe ich hab jetzt alles richtig gemacht. Sollte dann ab morgen zur Verfügung stehen :) Rückmeldungen sind gerne gesehen, wenn nun die "Thread-Version" von mehr Leuten benutzt wird.
Hat eigentlich schonmal jemand das Modul mit Kodi/Helix getestet bzw. benutzt es sogar regelmäßig? So wie ich das sehe, sollte ja die bisherige JSON-API weiterhin kompatibel sein. Würde dann evtl. auch die Gelegenheit gerne nutzen, das Modul in KODI umzubenennen.
Hab es gestern mit einer frischen Kodi Installation verbunden... funktioniert
Ich nutze es auch mit mehreren KODI Instanzen. Bisher keine Probleme. :)
Zitat von: vbs am 05 Januar 2015, 14:02:33
So, ich hoffe ich hab jetzt alles richtig gemacht. Sollte dann ab morgen zur Verfügung stehen :) Rückmeldungen sind gerne gesehen, wenn nun die "Thread-Version" von mehr Leuten benutzt wird.
Hat eigentlich schonmal jemand das Modul mit Kodi/Helix getestet bzw. benutzt es sogar regelmäßig? So wie ich das sehe, sollte ja die bisherige JSON-API weiterhin kompatibel sein. Würde dann evtl. auch die Gelegenheit gerne nutzen, das Modul in KODI umzubenennen.
Helix 14.0 läuft bei mir einwandfrei!
Zum Namen: Ich habe das Wiki schon aktualisiert! Zur Umbenennung habe ich eben (leider) schon einen eiǵenen Thread eröffnet.
Schön zu hören, dass es auch mit Kodi läuft. Dann könnte man das "Umwidmen" ja bald mal in Angriff nehmen. Mir ist noch nicht klar, wie man das ausrollt: Alle User müssten ja ihre FHEM-Config-Files ändern von "define meinXBMC XBMC xxx" in "define meinXBMC KODI xxx", oder? :o
Vielleicht bietet man das übergangsweise parallel an? 70_XBMC und 70_KODI? Das XBMC zeigt dann für 3 Monate eine dicke Meldung an "BITTE AUF 70_KODI WECHSELN", oder so :)
Habe gerade noch ein Warning gefixt und ein neues set-Kommando "connect" eingebaut. Wenn man das setzt, dann wird sofort versucht eine Verbindung zu XBMC aufzubauen. Normalerweise passiert das ja nur im 60 s Intervall. Fand ich praktisch, wenn man zB gerade durch FHEM den XBMC per zB Wake-On-Lan eingeschaltet hat und man dann auch sofort verbinden will. Ich hatte öfter den Fall, dass ich direkt in XBMC einen Film gestartet habe, aber FHEM das onPlay-Event noch nicht mitbekommen hat, da FHEM noch nicht verbunden war.
Ich denke mal, das sollte es jetzt mit Änderungen meinerseits erstmal sein. Wenn sich das jetzt als stabil und error/warning-frei herausstellt, dann haben wir erstmal einen ganz guten Stand, denk ich.
ist der name wirklich so wichtig? reicht nicht ein eintrag in der commandref mit namen kodi der auf das xbmc modul verweist?
zumal das modul ja auch mit plex läuft. wobei... das muss ich mit der neuen version noch mal testen.
gruss
andre
Noch wird man mit XBMC was anfangen können, aber das wird sich sicher ändern. Ich glaube eine Namensänderung wäre angebracht. Aber eine Art Parallelbetrieb wäre sinnvoll. Das "alte" XBMC Modul muss man dann ja auch nicht mehr mit Updates versorgen.
Sehe ich auch so siggi85 - ein neues Modul und ein Hinweis im alten (deprecated please use the new KODI version) scheint mir ein gangbarer Weg zu sein!
Exakt...
Das erscheint mir auch sinnvoll.
Das XBMC Modul kann ja eine Meldung ins Logfile schreiben, dass für weitere Updates bitte das Modul Kodi zu verwenden ist.
Läuft das neue Modul sowie das alte mit Plex?
das 'alte' ja.
das neue sollte eigentlich auch. ich habe es aber noch nicht probiert.
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
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
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
Sehr gut, danke! Dann werde ich das Upgrade wohl bald mal angehen...
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ß
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!
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
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...
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)
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
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! :)
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?
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 .*"
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 :)
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
Klappt leider nicht, immer noch genauso :( Danke trotzdem
2015-01-13 22:55:16 XBMC wz_xbmc playlist: clear
2015-01-13 22:55:16 XBMC wz_xbmc playlist: add
2015-01-13 22:55:18 XBMC wz_xbmc playStatus: paused
2015-01-13 22:55:19 XBMC wz_xbmc playStatus: playing
2015-01-13 22:55:19 XBMC wz_xbmc playStatus: paused
2015-01-13 22:55:19 XBMC wz_xbmc playStatus: playing
2015-01-13 22:55:19 XBMC wz_xbmc playStatus: paused
2015-01-13 22:55:20 XBMC wz_xbmc playStatus: playing
Das kann eigentlich nicht sein! Mache mal ein
list wz_xbmc
und poste das Ergebnis hierher!
Ok, das sieht so aus:
Internals:
CFGFN fhem-vbs_livingRoomHall.cfg
CHILDPID 5686
DEF openelec tcp
DeviceName openelec:9090
Host openelec
LAST_PING 1421186231.10158
LAST_PONG 0
NAME wz_xbmc
NR 72
PARTIAL
Port 9090
Protocol tcp
STATE disconnected
TYPE XBMC
Pendingevents:
107101
118673
301450
514443
747210
950197
Pendingplayercmds:
557058
Readings:
2015-01-13 22:55:20 currentMedia smb://BEN/MASS3/Video/Movies/9 (2009).avi
2015-01-13 22:55:20 currentOriginaltitle 9
2015-01-09 23:54:26 currentShowtitle Lie to me
2015-01-13 22:55:20 currentTitle #9
2015-01-09 23:54:26 episode 5
2015-01-09 23:54:26 episodeid 3102
2015-01-13 22:54:11 fullscreen off
2015-01-13 22:44:31 gui screensaverdeactivated
2015-01-13 22:55:20 label #9
2015-01-13 22:55:20 movieid 72
2015-01-13 22:54:11 mute off
2015-01-13 22:54:11 name Kodi
2015-01-13 22:55:20 partymode off
2015-01-13 22:57:43 playStatus stopped
2015-01-13 22:55:16 playlist add
2015-01-13 22:55:20 repeat off
2015-01-09 23:54:26 season 2
2015-01-13 22:55:20 shuffle off
2015-01-13 22:54:11 skin Confluence(skin.confluence)
2015-01-13 22:55:20 speed 1
2015-01-13 22:57:48 state disconnected
2015-01-13 22:57:43 system sleep
2015-01-13 22:55:20 time 00:17:13.981
2015-01-13 22:55:20 totaltime 01:19:24.192
2015-01-13 22:55:20 type movie
2015-01-13 22:54:11 version 14.0-ad747d9 stable
2015-01-13 22:57:43 videolibrary update
2015-01-13 22:54:11 volume 100
2015-01-13 22:55:20 year 2009
Attributes:
alias XBMC
devStateIcon Initialized:rc_RED opened:rc_GREEN disconnected:rc_RED
event-on-change-reading .*
fork enable
group Geräte
icon it_server
pingInterval 60
room Wohnzimmer
webCmd volume:playpause
Hab das eigentlich immer für einen bekannten Bug gehalten. Muss ja aber irgendwie an mir liegen, wenn das bei dir nicht passiert :/
Hm du benutzt openelec, vielleicht liegt da der Hund begraben. Ich benutze ein natives KODI, wobei die Version exakt dieselbe ist wie meine. Könnte es an dem webcmd liegen? Hast du das mal mit der XBMCRemote App ausprobiert ob es dann auch auftritt?
Hm, also ich hab auch schon gerade mal FHEM komplett gestoppt und mich mit telnet auf 9090 von Kodi verbunden und mir die JSON-Nachrichten direkt in der Konsole angesehen: Ändert nix. Ja, möglicherweise OpenELEC... OpenELEC bringt noch einige Patches mit, die es auf den Quellcode anwedet selbst und einen füge ich immer noch selbst hinzu :( Werd ich wohl die Tage mal näher erforschen müssen, verdammt. Kann ja wieder ein Fass ohne Boden werden...
Ja das wäre möglich! Auf welcher HW läuft denn dein OpenElec? Vielleicht ist es ja ein Performance Problem?
Ist ein Shuttle XS35GTV2. Ist irgendein Atom-Prozessor. Also Performance sollte passen denk ich.
Hast du mal in das KODI.log geschaut ob da etwas geloggt wird? (DEBUG Mode einschalten nicht vergessen!)
Ja, hab ich schon. Habe nix auffälliges gesehen.
Zitat von: vbs am 13 Januar 2015, 23:27:21
Ja, hab ich schon. Habe nix auffälliges gesehen.
Hm...da fällt mir jetzt auch nichts mehr ein. Vielleicht nimmst du mal eine frische User.Config um eine "Altlast" auszuschließen?
Ok, danke erstmal. Hab eigentlich ja Kodi gerade heute frisch installiert. Sollten also keine Altlasten mehr sein... Naja, werde morgen mal weiter gucken...
Ach ich Depp---ich meinte natürlich auch event-min-intervall (vielleicht 2-3 Sekunden) genau auf das Reading...das sollte doch gehen!
Ahhh ok, ja, damit kann man das sicherlich umgehen. Jedoch besteht dann ja die Gefahr, dass ich auch Events verpassen, wenn wirklich mal jemand zB Pause und sofort wieder Play drückt... Also ich werde schon gerne rausfinden wollen, was die wirklich Ursache des Problems ist.
Werde dann im ersten Schritt mal ein OpenELEC kompilieren ohne irgendwelche Patches... also ein Vanilla-Kodi...
Ja das stimmt! Ein nacktes KODI parallel dazu ist wohl der einfachste Weg den Übeltäter zu finden! Viel Glück!
Hallöchen und schönen Abend,
ganz neu bin ich inzwischen nimmer, aber bestimmt etwas blind oder begriffsstutzig.
Ich möchte die Kommunikation zwischen FHEM und KODI aufbauen, doch leider verstehe ich nicht, wie ich KODI dazu bringen kann mir Informationen zu schicken. Mit dem Script aus dem Wiki klappt es anscheinend nicht bei mir.
Für Vorschläge bin ich offen :)
Zum System:
* FHEM 5.6 auf nem Raspi
** KODI ist angelegt:
Internals:
CFGFN /opt/fhem/FHEM/HW_Mediasysteme.cfg
DEF 192.168.0.47 tcp
DeviceName 192.168.0.47:9090
Host 192.168.0.47
NAME wz_KODI
NEXT_OPEN 1421273415.50827
NR 141
PARTIAL
Port 9090
Protocol tcp
STATE disconnected
TYPE XBMC
Readings:
2015-01-14 23:09:15 state disconnected
Attributes:
devStateIcon opened:rc_GREEN:on disconnected:rc_RED:off Initialized:message_socket_disabled
pingInterval 60
room Wohnzimmer
* KODI 14 per sideload auf nem Amazon Fire TV
** JSON-RPC API ist aktiviert.
Besten Dank vorab :D
Update:
Kommuikation über http läuft - feini :)=
Anscheinend bekomme ich Telnet / tcp nicht zum laufen...
Probier doch mal als erstes, ob du denn mit telnet vom PC eine Verbindung auf Port 9090 machen kannst (oder per Portscanner o.ä.). Hast du auch in Kodi dieses "ANDERE Programme dürfen fernsteuern" aktiviert?
Hallo,
bin gerade über das Modul und die Seite hier gestolpert. Wo muss denn Kodi installiert sein? So wie ich das verstanden habe, wird es mittels IP-Adresse definiert. Ich frage, weil ich Kodi auf meinem FireTV installiert habe. Kann ich Fhem dann damit "verbinden?
Danke für die Infos!
Ja. Kodi muss auf der FireTV aktuell laufen, dann sollte es klappen.
Und das Posting von VBS direkt über deinem berücksichtigen :)
So, habe jetzt rausgefunden, woran das bei mir liegt mit dem Pause/Play/Pause/Play. Und zwar kommt das von der Option "Filme kurz pausieren, wenn die Bildwiederholfrequenz des Monitors umgeschaltet wird" :o
Zitat von: vbs am 15 Januar 2015, 23:40:22
So, habe jetzt rausgefunden, woran das bei mir liegt mit dem Pause/Play/Pause/Play. Und zwar kommt das von der Option "Filme kurz pausieren, wenn die Bildwiederholfrequenz des Monitors umgeschaltet wird" :o
Cool und was kann man dagegen machen?
Zitat von: Rince am 15 Januar 2015, 19:01:46
Ja. Kodi muss auf der FireTV aktuell laufen, dann sollte es klappen.
Und das Posting von VBS direkt über deinem berücksichtigen :)
Prima! :-)
Muss ich denn dann noch einen Port angeben für den FireTV und wenn ja welchen?
Muss Kodi tatsächlich aktiv laufen? Ich frage, weil auf dem FireTV ja Android drauf ist und es sich ja an sich verhält wie ein Smartphone. Dabei wäre nach erstmaligem Starten einer App diese ja auch weiterhin im Hintergrund aktiv. Kann man dann in Fhem irgendwie abfragen, ob Kodi aktiv ist? Sodass man dann nur Kommandos in Richtung Kodi schickt, wenn dieses auch aktiv ist?
Zitat von: P.A.Trick am 16 Januar 2015, 00:01:52
Cool und was kann man dagegen machen?
Also eine richtige Lösung hab ich nicht. Da ich nicht sooo sehr an der Option hänge, habe ich die jetzt einfach ausgeschaltet. So funktioniert es nun wenigstens.
Ich hab mir das im Quellcode von Kodi angesehen und es ist sicherlich möglich, dass entsprechend anzupassen, wenn es einen sehr stört...
Moin,
ich würde die Remote Control gerne um einen Powerknopf erweitern, welches beim drücken den HTPC per wol einschaltet.
Den HTPC habe ich dafür vorbereitet, und ein set wol_htpc on schaltet ihn auch ein.
Nur wie kann ich den set Befehl einer Taste zuordnen?
Gruß stift
Hallo,
ich bin leider noch Anfänger und hätte gerne in meinem Floorplan die Liste der Filme, Serien und Audio Alben in einer Liste.
Auf dem kodi Wiki hab ich den Befehl in der Api gefunden, damit man mit Json eine Liste alles Filme oder Audio anzeigen.
Ich weiß nur nicht, wie man das Konvertieren könnte.
Auch hätte ich gerne in der Linken obere Hälfte eine Anzeige, die das zeigt was gerade läuft.
Anbei ein Bespiel.
viele Grüße
Ralph
Wie hast du das Beispiel hinbekommen?? :-)
Mit der eine Bildbearbeitungssoftware. Leider nur so.
Viele Grüße
Ralph
Ich hab in das Modul zwei neue set-Commands "poweron" und "poweroff" eingebaut. Die machen nichts anderes als die in den neuen Attributen "powerCmdOn" und "powerCmdOff" hinterlegten Befehle auszuführen.
Hintergrund ist der, dass man zB das devStateIcon so bauen kann, dass beim Klick auf das State-Icon diese Befehle ausgeführt werden. Ich benutze das zum Beispiel, um mein Kodi-Gerät per WOL einzuschalten (und ein anderes per Funksteckdose).
Ich habe dann als "powerCmdOn" eingetragen "set wz_xbmcWol on" und als devStateIcon "Initialized:rc_RED:poweron opened:rc_GREEN:suspend disconnected:rc_RED:poweron".
Kannst Du mir da etwas helfen, was dafür in die 99_myutils.pm muss :)
devStateIcon "Initialized:rc_RED:poweron opened:rc_GREEN:suspend disconnected:rc_RED:poweron" habe ich auch schon drin
Klar doch, aber wo genau haperts denn?
Also in 99myutils muss nichts. Zum Einschalten hast du ja schon den Befehl poweron im devStateIcon definiert. Du musst nun aber noch ins Attribut powerCmdOn reinschreiben, auf welchen Befehl das gemappt werden soll. Zb "set meineFunksteckdose on" oder sowas.
Zitat von: vbs am 19 Januar 2015, 18:59:10
Ich hab in das Modul zwei neue set-Commands "poweron" und "poweroff" eingebaut. Die machen nichts anderes als die in den neuen Attributen "powerCmdOn" und "powerCmdOff" hinterlegten Befehle auszuführen.
Hintergrund ist der, dass man zB das devStateIcon so bauen kann, dass beim Klick auf das State-Icon diese Befehle ausgeführt werden. Ich benutze das zum Beispiel, um mein Kodi-Gerät per WOL einzuschalten (und ein anderes per Funksteckdose).
Ich habe dann als "powerCmdOn" eingetragen "set wz_xbmcWol on" und als devStateIcon "Initialized:rc_RED:poweron opened:rc_GREEN:suspend disconnected:rc_RED:poweron".
Cool Danke für deine Muehe!
Achso,
ich dachte du hättest direkt das XBMC Modul etwas aufgebohrt.
Hm,
aber es gibt doch kein powerCmdOn Attribut im XBMC
Ja, hab ich ja auch ;) Musst wahrscheinlich mal ein Update machen, dann sollte es das geben.
feature: 70_XBMC.pm: new commands poweron,poweroff. configurable by attribute powerCmd
Das gibts aber noch nicht lange ;D
Edit:
Und läuft super :-)
Danke für Deine Mühe
Gruß
.stiftmaster
Gern doch, freut mich.
Nochmals zum Thema "Alte Readings löschen":
Sollten die alten Readings auf "-" gesetzt werden (wie von fhainz) vorgeschlagen oder besser direkt gelöscht werden? Oder macht man sowas generell besser nicht (also löschen von Readings)?
Hallo,
ich klink mich hier mal ein. Ich habe ein Problem mit dem Modul. Wenn ich den XBMC per Telnet anspreche, steigt das FHEM aus mit folgender Fehlermeldung:
malformed JSON string, neither array, object, number, string or atom, at character offset 1 (before "(end of string)") at ./FHEM/70_XBMC.pm line 303.
Die Zeile 303 im Modul lautet
my $obj = JSON->new->utf8(0)->decode($msg);
Mir ist klar, dass es was mit der utf8 Kodierung bzw. Dekodierung zu tun hat.
Wenn ich die folgenden Zeilen auskommentiere, kommen keine Fehler, allerdings haben diese Zeilen ja einen Sinn (der sich mir nicht ganz erschließt)
while($msg) {
Log3($name, 5, "XBMC_Read: Decoding JSON message. Length: " . length($msg) . " Content: " . $msg);
my $obj = JSON->new->utf8(0)->decode($obj);
#it is a notification if a method name is present
if(defined($obj->{method})) {
XBMC_ProcessNotification($hash,$obj);
}
elsif(defined($obj->{error})) {
Log3($name, 3, "XBMC_Read: Received error message: " . $msg);
}
#otherwise it is a answer of a request
else {
XBMC_ProcessResponse($hash,$obj);
}
($msg,$tail) = XBMC_ParseMsg($tail);
}
Ich hoffe, ich habe in diesem Thread die Lösung nicht überlesen. Änderungen wie JSON->new->utf8(0)->decode(encode('UTF8', $obj));
haben leider auch nichts gebracht.
Danke schonmal im Voraus :)
Hm, kann ich so erstmal nicht reproduzieren. Könntest du etwas mehr Details geben bitte, was genau du machst und ein Log (mit verbose 5) erstellen? Danke!
Der Fehler kommt direkt wenn ich fhem gestartet hab und das Webinterface öffne. Der Fehler kommt nicht, wenn der HTPC (XBMC bzw. Kodi) ausgeschaltet ist. Ich vermute also, dass eine Meldung von XBMC irgendwie nicht verarbeitet werden kann. Ich kann das im Moment nicht direkt nachspielen, aber ich habe das Logging schon auf Verbose 5 gestellt und schicke dann später den Log.
Ok danke. Unklar ist mir aber vor allem noch der Teil "XBMC per Telnet ansprechen". Könntest du da nochmal bitte sagen, was du da genau schickst?
Oh, die Info war falsch. Ich meinte TCP, nicht Telnet. Naja, es war schon spät 8)
Ich meinte, dass ich den xbmc mit folgender Zeile im fhem angelegt habe
define wz.XBMC XBMC 192.168.178.6 tcp xbmc xbmc
Als Benutzer und Passwort habe ich das gleiche geonommen, was beim XBMC für den Zugriff aufs Webinterface eingestellt ist. Ist das richtig?
Zitat von: blade-of-fire am 20 Januar 2015, 09:47:08
Als Benutzer und Passwort habe ich das gleiche geonommen, was beim XBMC für den Zugriff aufs Webinterface eingestellt ist. Ist das richtig?
Korrekt. :)
Zitat von: vbs am 19 Januar 2015, 21:38:16
Gern doch, freut mich.
Nochmals zum Thema "Alte Readings löschen":
Sollten die alten Readings auf "-" gesetzt werden (wie von fhainz) vorgeschlagen oder besser direkt gelöscht werden? Oder macht man sowas generell besser nicht (also löschen von Readings)?
Ob man Readings in FHEM ohne Probleme löschen kann, kann ich nicht sagen. Allerdings scheint das laut einer etwas älteren Aussage von justme1968 in Ordnung zu sein. Vielleicht kann er ja noch was dazu sagen?! Anbei sein Kommentar:
Zitat von: justme1968 am 22 September 2014, 14:35:21
was das anpassen der readings angeht gibt es noch einen punkt der noch offen und noch nicht ganz zuende gedacht ist.
es gab die idee das man alle readings die nicht zum aktuell abgespielten medium gehören entfernt. d.h. wenn ein film gespielt wird alles was tv serie oder musik betrifft löschen und jeweils umgekehrt und zusätzlich eine zusammenfassung in ein eigenes reading schreibt.
So, ich habe das ganze nun mal mit verbose 5 geloggt.
2015.01.20 15:52:37 0: Server started with 49 defined entities (version $Id: fhem.pl 7358 2014-12-29 16:03:31Z rudolfkoenig $, os linux, user pi, pid 5144)
2015.01.20 15:52:38 1: 192.168.178.6:9090 reappeared (wz.XBMC)
2015.01.20 15:52:38 5: XBMC_Call: Sending: {"params":{"properties":["volume","muted","name","version"]},"jsonrpc":"2.0","id":198845,"method":"Application.GetProperties"}
2015.01.20 15:52:38 5: SW: 7b22706172616d73223a7b2270726f70657274696573223a5b22766f6c756d65222c226d75746564222c226e616d65222c2276657273696f6e225d7d2c226a736f6e727063223a22322e30222c226964223a3139383834352c226d6574686f64223a224170706c69636174696f6e2e47657450726f70657274696573227d
2015.01.20 15:52:38 5: XBMC_Call: Sending: {"params":{"properties":["skin","fullscreen"]},"jsonrpc":"2.0","id":536053,"method":"GUI.GetProperties"}
2015.01.20 15:52:38 5: SW: 7b22706172616d73223a7b2270726f70657274696573223a5b22736b696e222c2266756c6c73637265656e225d7d2c226a736f6e727063223a22322e30222c226964223a3533363035332c226d6574686f64223a224755492e47657450726f70657274696573227d
2015.01.20 15:52:38 5: XBMC_Call: Sending: {"jsonrpc":"2.0","id":"793126","method":"Player.GetActivePlayers"}
2015.01.20 15:52:38 5: SW: 7b226a736f6e727063223a22322e30222c226964223a22373933313236222c226d6574686f64223a22506c617965722e476574416374697665506c6179657273227d
2015.01.20 15:52:39 5: XBMC_ProcessRead
2015.01.20 15:52:39 5: No PARTIAL buffer
2015.01.20 15:52:39 5: XBMC_Read: Incoming data: {
"id": 198845,
"jsonrpc": "2.0",
"result": {
"muted": false,
"name": "Kodi",
"version": {
"major": 14,
"minor": 0,
"revision": "ad747d9",
"tag": "stable"
},
"volume": 100
}
}
{
"id": 536053,
"jsonrpc": "2.0",
"result": {
"fullscreen": false,
"skin": {
"id": "skin.aeon.nox.5",
"name": "Aeon Nox"
}
}
}
{
"id": "793126",
"jsonrpc": "2.0",
"result": [
]
}
2015.01.20 15:52:39 5: XBMC_Read: Current processing buffer (PARTIAL + incoming data): {
"id": 198845,
"jsonrpc": "2.0",
"result": {
"muted": false,
"name": "Kodi",
"version": {
"major": 14,
"minor": 0,
"revision": "ad747d9",
"tag": "stable"
},
"volume": 100
}
}
{
"id": 536053,
"jsonrpc": "2.0",
"result": {
"fullscreen": false,
"skin": {
"id": "skin.aeon.nox.5",
"name": "Aeon Nox"
}
}
}
{
"id": "793126",
"jsonrpc": "2.0",
"result": [
]
}
2015.01.20 15:52:39 5: XBMC_Read: Decoding JSON message. Length: 201 Content: {
"id": 198845,
"jsonrpc": "2.0",
"result": {
"muted": false,
"name": "Kodi",
"version": {
"major": 14,
"minor": 0,
"revision": "ad747d9",
"tag": "stable"
},
"volume": 100
}
}
2015.01.20 15:52:39 5: XBMC_Read: Decoding JSON message. Length: 143 Content:
{
"id": 536053,
"jsonrpc": "2.0",
"result": {
"fullscreen": false,
"skin": {
"id": "skin.aeon.nox.5",
"name": "Aeon Nox"
}
}
}
2015.01.20 15:52:39 5: XBMC_Read: Decoding JSON message. Length: 57 Content:
{
"id": "793126",
"jsonrpc": "2.0",
"result": [
]
}
2015.01.20 15:52:39 5: XBMC_Read: Decoding JSON message. Length: 1 Content:
2015.01.20 15:52:41 1: CallBlockingFn: Can't connect to localhost:7072: IO::Socket::INET: connect: Verbindungsaufbau abgelehnt
nach dem letzten Eintrag wird fhem beendet. In der Putty Konsole steht dann
malformed JSON string, neither array, object, number, string or atom, at character offset 1 (before "(end of string)") at ./FHEM/70_XBMC.pm line 303.
Can't use an undefined value as a symbol reference at FHEM/Blocking.pm line 135.
Die benannte Zeile in Blocking.pm lautet:
syswrite($telnetClient, "{$informFn($param)}\n");
Ich hoffe, das ihr könnt damit was anfangen :)
Bist du sicher, dass du die aktuelle Version benutzt? Bei mir ist Zeile 303 die hier:
$buffer = $hash->{PARTIAL};
Hätte eine Idee woran es liegt, aber komisch dass das nur bei dir passiert...
Ich denke nicht, dass das hier von XBMC kommt
2015.01.20 15:52:41 1: CallBlockingFn: Can't connect to localhost:7072: IO::Socket::INET: connect: Verbindungsaufbau abgelehnt
Eine Idee wer sich bei dir lokal auf Port 7072 verbinden will?
Habe mir nochmal die neueste Version kopiert. Leider steigt es immer noch aus, allerdings an einer anderen Stelle:
malformed JSON string, neither array, object, number, string or atom, at character offset 1 (before "(end of string)") at ./FHEM/70_XBMC.pm line 318.
Wegen der Telnetmeldung:
mmh, keine Ahnung
Hm, ich denke, dass es daran liegt, dass hinter der letzten JSON-Nachricht noch ein Whitespace-Zeichen kommt. Das wird dann versucht als JSON-Nachricht zu lesen. Da ist der Parser nicht drauf vorbereitet. Probier mal bitte die Version im Anhang.
Super, vielen dank, nun funktioniert es :)
Aber seltsam, dass nur ich das Problem hatte ::)
Nochmal drei Änderungen:
- Löschen der alten Readings
- Neues Reading is3DFile
- JSON Parser verbessert
Das wars dann aber auch erstmal...
Cool Danke für deine Mühe!
Hallo,
wie bekomme ich das update rein.
Wenn ich update in Fhem eingebe, kommt immer "nothing to do".
Was mache ich falsch?
Viele Grüße
Ralph
Ich will ja wirklich nicht undankbar erscheinen, aber wäre es möglich das Löschen der Readings erst zu veranlassen, wenn etwas neues abgespielt wird? Dann würde in den Readings immer das zuletzt abgespielte stehen.
Ansonsten natürlich, danke für die Umsetzung! Freut mich, dass das XBMC Modul endlich wieder Fahrt aufgenommen hat. :)
OK, ich war da unschlüssig. Gibts dazu noch andere Meinungen?
Änderungen:
- keine Readings löschen beim Stoppen, Starten oder Beenden
- volume auf zwei Stellen runden
- is3DFile umbenannt nach 3dfile (sorry, falls das schon jemand irgendwo eingebunden hat, passt so aber besser zu den anderen Namen)
Zitat von: vbs am 22 Januar 2015, 20:41:54
OK, ich war da unschlüssig. Gibts dazu noch andere Meinungen?
Änderungen:
- keine Readings löschen beim Stoppen, Starten oder Beenden
- volume auf zwei Stellen runden
- is3DFile umbenannt nach 3dfile (sorry, falls das schon jemand irgendwo eingebunden hat, passt so aber besser zu den anderen Namen)
Klasse, vielen Dank! 8) Werde das demnächst gleich prüfen. ;)
Da der playStatus, ja sowieso auf eine gestoppte Wiedergabe hindeutet (für den fall man will dies prüfen), kann man (meine Meinung) die letzte Wiedergabe stehen lassen.
Ich habe ein Subroutine, die die aktuelle Wiedergabe beendet (um den potentiellen Resumepunkt zu setzen), die Daten der Wiederhabe nimmt und auf einem anderen XBMC abspielt. Natürlich kann man auch erst die Daten nehmen. Falls aber etwas schief geht, kann man so das Skript einfach erneut starten, dann wird keine Wiedergabe beendet aber die Daten stehen für die gleiche Subroutine immer noch zur Verfügung.
Zitat von: vbs am 22 Januar 2015, 20:41:54
Änderungen:
- is3DFile umbenannt nach 3dfile (sorry, falls das schon jemand irgendwo eingebunden hat, passt so aber besser zu den anderen Namen)
Hi vbs.
Habe gerade update gezogen, aber das Reading heißt derzeit noch
is3DFile... Hab in 70_XBMC.pl gecheckt, da isses auch trotz tstamp vom 25. Januar noch is3DFile...
In der Commandref steht der Parameter auch noch nicht drin.
Grüße,
EM
Danke für den Hinweis. Kann es mir nicht erklären, warum das weg war, aber hab es jetzt nochmal geändert...
Hallo!
Ich verwende das XMBC Modul im Plex Mode. Seit einiger Zeit bekomme ich aber leider nicht mehr alle Readings. playing wird zB gefüllt, episode nicht.
Internals:
DEF 10.0.0.40 tcp
DeviceName 10.0.0.40:9090
FD 113
Host 10.0.0.40
LAST_PING 1422209774.19952
LAST_PONG 1422209774.21517
NAME plex
NR 233
PARTIAL
Port 9090
Protocol tcp
STATE opened
TYPE XBMC
Pendingevents:
Pendingplayercmds:
263396
Readings:
2015-01-25 19:14:49 currentAlbum
2015-01-25 19:14:49 currentArtist
2015-01-25 19:14:49 currentMedia
2015-01-25 19:14:49 currentOriginaltitle
2015-01-25 19:14:49 currentShowtitle
2015-01-25 19:14:49 currentTitle
2015-01-25 19:14:49 currentTrack
2015-01-25 19:14:49 episode
2015-01-25 19:14:49 episodeid
2015-01-25 19:14:14 fullscreen off
2015-01-24 18:58:02 gui screensaverdeactivated
2015-01-25 19:14:49 id 5757
2015-01-25 19:14:49 is3DFile
2015-01-25 19:14:49 label
2015-01-25 19:14:49 movieid
2015-01-25 19:14:14 mute off
2015-01-25 19:14:14 name XBMC
2015-01-25 19:14:14 partymode
2015-01-25 19:14:49 playStatus playing
2015-01-25 19:14:49 playlist
2015-01-25 19:14:49 repeat off
2015-01-25 19:14:49 season
2015-01-25 19:14:49 shuffle off
2015-01-25 19:14:14 skin Plex(skin.plex)
2015-01-25 19:14:49 songid
2015-01-25 19:14:49 speed 1
2015-01-25 19:14:14 state opened
2015-01-25 19:14:14 system wake
2015-01-25 19:14:49 time 00:00:00.114
2015-01-25 19:14:49 totaltime 00:40:26.880
2015-01-25 19:14:49 type episode
2015-01-25 19:14:14 version 12.2 stable
2015-01-25 19:14:14 volume 68
2015-01-25 19:14:49 year
Attributes:
compatibilityMode plex
pingInterval 60
room 5.1 Multimedia
Jemand eine Idee?
Grüße
Bitte mal ein Log mit verbose 5 posten.
verbose 5 --> Plex geöffnet --> Serie geöffnet --> Serie beendet --> Plex beendet --> verbose 3
2015.01.25 21:37:37.969 1: 10.0.0.40:9090 reappeared (plex)
2015.01.25 21:37:38.002 5: XBMC_Call: Sending: {"params":{"properties":["volume","muted","name","version"]},"jsonrpc":"2.0","id":79788,"method":"Application.GetProperties"}
2015.01.25 21:37:38.002 5: SW: 7b22706172616d73223a7b2270726f70657274696573223a5b22766f6c756d65222c226d75746564222c226e616d65222c2276657273696f6e225d7d2c226a736f6e727063223a22322e30222c226964223a37393738382c226d6574686f64223a224170706c69636174696f6e2e47657450726f70657274696573227d
2015.01.25 21:37:38.003 5: XBMC_Call: Sending: {"params":{"properties":["skin","fullscreen"]},"jsonrpc":"2.0","id":151429,"method":"GUI.GetProperties"}
2015.01.25 21:37:38.003 5: SW: 7b22706172616d73223a7b2270726f70657274696573223a5b22736b696e222c2266756c6c73637265656e225d7d2c226a736f6e727063223a22322e30222c226964223a3135313432392c226d6574686f64223a224755492e47657450726f70657274696573227d
2015.01.25 21:37:38.005 5: XBMC_Call: Sending: {"jsonrpc":"2.0","id":"534223","method":"Player.GetActivePlayers"}
2015.01.25 21:37:38.005 5: SW: 7b226a736f6e727063223a22322e30222c226964223a22353334323233222c226d6574686f64223a22506c617965722e476574416374697665506c6179657273227d
2015.01.25 21:37:38.014 5: XBMC_ProcessRead
2015.01.25 21:37:38.014 5: No PARTIAL buffer
2015.01.25 21:37:38.014 5: XBMC_Read: Incoming data: {"id":79788,"jsonrpc":"2.0","result":{"muted":false,"name":"XBMC","version":{"major":12,"minor":2,"tag":"stable"},"volume":68}}{"id":151429,"jsonrpc":"2.0","result":{"fullscreen":false,"skin":{"id":"skin.plex","name":"Plex"}}}{"id":"534223","jsonrpc":"2.0","result":[]}
2015.01.25 21:37:38.014 5: XBMC_Read: Current processing buffer (PARTIAL + incoming data): {"id":79788,"jsonrpc":"2.0","result":{"muted":false,"name":"XBMC","version":{"major":12,"minor":2,"tag":"stable"},"volume":68}}{"id":151429,"jsonrpc":"2.0","result":{"fullscreen":false,"skin":{"id":"skin.plex","name":"Plex"}}}{"id":"534223","jsonrpc":"2.0","result":[]}
2015.01.25 21:37:38.014 5: XBMC_Read: Decoding JSON message. Length: 127 Content: {"id":79788,"jsonrpc":"2.0","result":{"muted":false,"name":"XBMC","version":{"major":12,"minor":2,"tag":"stable"},"volume":68}}
2015.01.25 21:37:38.021 5: XBMC_Read: Decoding JSON message. Length: 99 Content: {"id":151429,"jsonrpc":"2.0","result":{"fullscreen":false,"skin":{"id":"skin.plex","name":"Plex"}}}
2015.01.25 21:37:38.027 5: XBMC_Read: Decoding JSON message. Length: 43 Content: {"id":"534223","jsonrpc":"2.0","result":[]}
2015.01.25 21:37:38.027 5: XBMC_Read: Tail:
2015.01.25 21:37:38.027 5: XBMC_Read: PARTIAL:
2015.01.25 21:38:11.777 5: XBMC_ProcessRead
2015.01.25 21:38:11.777 5: No PARTIAL buffer
2015.01.25 21:38:11.777 5: XBMC_Read: Incoming data: {"jsonrpc":"2.0","method":"Playlist.OnClear","params":{"data":{"playlistid":1},"sender":"xbmc"}}{"jsonrpc":"2.0","method":"Playlist.OnAdd","params":{"data":{"item":{"id":405,"type":"episode"},"playlistid":1,"position":0},"sender":"xbmc"}}
2015.01.25 21:38:11.777 5: XBMC_Read: Current processing buffer (PARTIAL + incoming data): {"jsonrpc":"2.0","method":"Playlist.OnClear","params":{"data":{"playlistid":1},"sender":"xbmc"}}{"jsonrpc":"2.0","method":"Playlist.OnAdd","params":{"data":{"item":{"id":405,"type":"episode"},"playlistid":1,"position":0},"sender":"xbmc"}}
2015.01.25 21:38:11.778 5: XBMC_Read: Decoding JSON message. Length: 96 Content: {"jsonrpc":"2.0","method":"Playlist.OnClear","params":{"data":{"playlistid":1},"sender":"xbmc"}}
2015.01.25 21:38:11.784 5: XBMC_Read: Decoding JSON message. Length: 142 Content: {"jsonrpc":"2.0","method":"Playlist.OnAdd","params":{"data":{"item":{"id":405,"type":"episode"},"playlistid":1,"position":0},"sender":"xbmc"}}
2015.01.25 21:38:11.791 5: XBMC_Read: Tail:
2015.01.25 21:38:11.791 5: XBMC_Read: PARTIAL:
2015.01.25 21:38:11.890 5: XBMC_ProcessRead
2015.01.25 21:38:11.890 5: No PARTIAL buffer
2015.01.25 21:38:11.890 5: XBMC_Read: Incoming data: {"jsonrpc":"2.0","method":"Player.OnPlay","params":{"data":{"item":{"id":1434,"type":"episode"},"player":{"playerid":1,"speed":1}},"sender":"xbmc"}}
2015.01.25 21:38:11.890 5: XBMC_Read: Current processing buffer (PARTIAL + incoming data): {"jsonrpc":"2.0","method":"Player.OnPlay","params":{"data":{"item":{"id":1434,"type":"episode"},"player":{"playerid":1,"speed":1}},"sender":"xbmc"}}
2015.01.25 21:38:11.890 5: XBMC_Read: Decoding JSON message. Length: 148 Content: {"jsonrpc":"2.0","method":"Player.OnPlay","params":{"data":{"item":{"id":1434,"type":"episode"},"player":{"playerid":1,"speed":1}},"sender":"xbmc"}}
2015.01.25 21:38:11.961 5: XBMC_Call: Sending: {"params":{"playerid":1,"properties":["time","totaltime","repeat","shuffled","speed"]},"jsonrpc":"2.0","id":354595,"method":"Player.GetProperties"}
2015.01.25 21:38:11.961 5: SW: 7b22706172616d73223a7b22706c617965726964223a312c2270726f70657274696573223a5b2274696d65222c22746f74616c74696d65222c22726570656174222c2273687566666c6564222c227370656564225d7d2c226a736f6e727063223a22322e30222c226964223a3335343539352c226d6574686f64223a22506c617965722e47657450726f70657274696573227d
2015.01.25 21:38:11.963 5: XBMC_Read: Tail:
2015.01.25 21:38:11.963 5: XBMC_Read: PARTIAL:
2015.01.25 21:38:11.963 5: XBMC_ProcessRead
2015.01.25 21:38:11.963 5: No PARTIAL buffer
2015.01.25 21:38:11.963 5: XBMC_Read: Incoming data: {"jsonrpc":"2.0","method":"Player.OnPause","params":{"data":{"item":{"id":1434,"type":"episode"},"player":{"playerid":1,"speed":0}},"sender":"xbmc"}}
2015.01.25 21:38:11.963 5: XBMC_Read: Current processing buffer (PARTIAL + incoming data): {"jsonrpc":"2.0","method":"Player.OnPause","params":{"data":{"item":{"id":1434,"type":"episode"},"player":{"playerid":1,"speed":0}},"sender":"xbmc"}}
2015.01.25 21:38:11.963 5: XBMC_Read: Decoding JSON message. Length: 149 Content: {"jsonrpc":"2.0","method":"Player.OnPause","params":{"data":{"item":{"id":1434,"type":"episode"},"player":{"playerid":1,"speed":0}},"sender":"xbmc"}}
2015.01.25 21:38:11.983 5: XBMC_Read: Tail:
2015.01.25 21:38:11.983 5: XBMC_Read: PARTIAL:
2015.01.25 21:38:12.900 5: XBMC_ProcessRead
2015.01.25 21:38:12.900 5: No PARTIAL buffer
2015.01.25 21:38:12.900 5: XBMC_Read: Incoming data: {"id":354595,"jsonrpc":"2.0","result":{"repeat":"off","shuffled":false,"speed":0,"time":{"hours":0,"milliseconds":50,"minutes":0,"seconds":0},"totaltime":{"hours":0,"milliseconds":600,"minutes":21,"seconds":59}}}
2015.01.25 21:38:12.900 5: XBMC_Read: Current processing buffer (PARTIAL + incoming data): {"id":354595,"jsonrpc":"2.0","result":{"repeat":"off","shuffled":false,"speed":0,"time":{"hours":0,"milliseconds":50,"minutes":0,"seconds":0},"totaltime":{"hours":0,"milliseconds":600,"minutes":21,"seconds":59}}}
2015.01.25 21:38:12.900 5: XBMC_Read: Decoding JSON message. Length: 212 Content: {"id":354595,"jsonrpc":"2.0","result":{"repeat":"off","shuffled":false,"speed":0,"time":{"hours":0,"milliseconds":50,"minutes":0,"seconds":0},"totaltime":{"hours":0,"milliseconds":600,"minutes":21,"seconds":59}}}
2015.01.25 21:38:12.926 5: XBMC_Read: Tail:
2015.01.25 21:38:12.926 5: XBMC_Read: PARTIAL:
2015.01.25 21:38:14.917 5: XBMC_ProcessRead
2015.01.25 21:38:14.918 5: No PARTIAL buffer
2015.01.25 21:38:14.918 5: XBMC_Read: Incoming data: {"jsonrpc":"2.0","method":"Player.OnPlay","params":{"data":{"item":{"id":1434,"type":"episode"},"player":{"playerid":1,"speed":1}},"sender":"xbmc"}}
2015.01.25 21:38:14.918 5: XBMC_Read: Current processing buffer (PARTIAL + incoming data): {"jsonrpc":"2.0","method":"Player.OnPlay","params":{"data":{"item":{"id":1434,"type":"episode"},"player":{"playerid":1,"speed":1}},"sender":"xbmc"}}
2015.01.25 21:38:14.918 5: XBMC_Read: Decoding JSON message. Length: 148 Content: {"jsonrpc":"2.0","method":"Player.OnPlay","params":{"data":{"item":{"id":1434,"type":"episode"},"player":{"playerid":1,"speed":1}},"sender":"xbmc"}}
2015.01.25 21:38:14.987 5: XBMC_Call: Sending: {"params":{"playerid":1,"properties":["time","totaltime","repeat","shuffled","speed"]},"jsonrpc":"2.0","id":846355,"method":"Player.GetProperties"}
2015.01.25 21:38:14.987 5: SW: 7b22706172616d73223a7b22706c617965726964223a312c2270726f70657274696573223a5b2274696d65222c22746f74616c74696d65222c22726570656174222c2273687566666c6564222c227370656564225d7d2c226a736f6e727063223a22322e30222c226964223a3834363335352c226d6574686f64223a22506c617965722e47657450726f70657274696573227d
2015.01.25 21:38:14.989 5: XBMC_Read: Tail:
2015.01.25 21:38:14.989 5: XBMC_Read: PARTIAL:
2015.01.25 21:38:14.990 5: XBMC_ProcessRead
2015.01.25 21:38:14.990 5: No PARTIAL buffer
2015.01.25 21:38:14.990 5: XBMC_Read: Incoming data: {"id":846355,"jsonrpc":"2.0","result":{"repeat":"off","shuffled":false,"speed":1,"time":{"hours":0,"milliseconds":122,"minutes":0,"seconds":0},"totaltime":{"hours":0,"milliseconds":600,"minutes":21,"seconds":59}}}
2015.01.25 21:38:14.990 5: XBMC_Read: Current processing buffer (PARTIAL + incoming data): {"id":846355,"jsonrpc":"2.0","result":{"repeat":"off","shuffled":false,"speed":1,"time":{"hours":0,"milliseconds":122,"minutes":0,"seconds":0},"totaltime":{"hours":0,"milliseconds":600,"minutes":21,"seconds":59}}}
2015.01.25 21:38:14.990 5: XBMC_Read: Decoding JSON message. Length: 213 Content: {"id":846355,"jsonrpc":"2.0","result":{"repeat":"off","shuffled":false,"speed":1,"time":{"hours":0,"milliseconds":122,"minutes":0,"seconds":0},"totaltime":{"hours":0,"milliseconds":600,"minutes":21,"seconds":59}}}
2015.01.25 21:38:15.010 5: XBMC_Read: Tail:
2015.01.25 21:38:15.010 5: XBMC_Read: PARTIAL:
2015.01.25 21:38:28.609 5: XBMC_ProcessRead
2015.01.25 21:38:28.609 5: No PARTIAL buffer
2015.01.25 21:38:28.609 5: XBMC_Read: Incoming data: {"jsonrpc":"2.0","method":"Player.OnStop","params":{"data":{"end":false,"item":{"id":1434,"type":"episode"}},"sender":"xbmc"}}
2015.01.25 21:38:28.609 5: XBMC_Read: Current processing buffer (PARTIAL + incoming data): {"jsonrpc":"2.0","method":"Player.OnStop","params":{"data":{"end":false,"item":{"id":1434,"type":"episode"}},"sender":"xbmc"}}
2015.01.25 21:38:28.609 5: XBMC_Read: Decoding JSON message. Length: 126 Content: {"jsonrpc":"2.0","method":"Player.OnStop","params":{"data":{"end":false,"item":{"id":1434,"type":"episode"}},"sender":"xbmc"}}
2015.01.25 21:38:28.636 5: XBMC_Read: Tail:
2015.01.25 21:38:28.636 5: XBMC_Read: PARTIAL:
2015.01.25 21:38:38.010 5: SW: 7b226a736f6e727063223a22322e30222c226964223a3330343238322c226d6574686f64223a224a534f4e5250432e50696e67227d
2015.01.25 21:38:38.012 5: XBMC_ProcessRead
2015.01.25 21:38:38.013 5: No PARTIAL buffer
2015.01.25 21:38:38.013 5: XBMC_Read: Incoming data: {"id":304282,"jsonrpc":"2.0","result":"pong"}
2015.01.25 21:38:38.013 5: XBMC_Read: Current processing buffer (PARTIAL + incoming data): {"id":304282,"jsonrpc":"2.0","result":"pong"}
2015.01.25 21:38:38.013 5: XBMC_Read: Decoding JSON message. Length: 45 Content: {"id":304282,"jsonrpc":"2.0","result":"pong"}
2015.01.25 21:38:38.013 5: XBMC_Read: Tail:
2015.01.25 21:38:38.013 5: XBMC_Read: PARTIAL:
2015.01.25 21:38:44.095 5: XBMC_ProcessRead
2015.01.25 21:38:44.095 5: No PARTIAL buffer
2015.01.25 21:38:44.095 5: XBMC_Read: Incoming data: {"jsonrpc":"2.0","method":"System.OnQuit","params":{"data":0,"sender":"xbmc"}}
2015.01.25 21:38:44.095 5: XBMC_Read: Current processing buffer (PARTIAL + incoming data): {"jsonrpc":"2.0","method":"System.OnQuit","params":{"data":0,"sender":"xbmc"}}
2015.01.25 21:38:44.095 5: XBMC_Read: Decoding JSON message. Length: 78 Content: {"jsonrpc":"2.0","method":"System.OnQuit","params":{"data":0,"sender":"xbmc"}}
2015.01.25 21:38:44.112 1: readingsUpdate(plex,playStatus,stopped) missed to call readingsBeginUpdate first.
2015.01.25 21:38:44.112 5: XBMC_Read: Tail:
2015.01.25 21:38:44.112 5: XBMC_Read: PARTIAL:
2015.01.25 21:38:45.027 1: 10.0.0.40:9090 disconnected, waiting to reappear (plex)
Grüße
Also FHEM bekommt das Event "OnPlay", sobald Plex mit abspielen anfängt. Das ist erstmal richtig und passiert auch bei dir. Wenn dabei "type==episode" ist, dann würde jetzt FHEM ein "VideoLibrary.GetEpisodeDetails" senden, um die Details der Episode zu holen. Gemäß Quellcode passiert jedoch genau das im Plex-Modus nicht und es werden nur die Readings eingetragen, die sowieso mit der "OnPlay"-Nachricht mitkommen. Das sind praktisch keine :)
Warum das so ist: keine Ahnung, ich kenne Plex leider nicht. Vermute mal, dass sich die JSON-API da unterscheidet. Gibt es da evtl. kein VideoLibrary.GetEpisodeDetails und die Details sollten da eigentlich schon mit der OnPlay-Nachricht mitkommen? Hast du du evtl. Plex geupdatet und nun verhält es sich in dem Bereich wie Kodi? Also ein weitere Abfrage wäre nötig?
Kannst ja mal den Plex-Modus in FHEM abschalten und gucken, was passiert. Evtl. hat sich Plex da Kodi API-mässig angenähert. Ist aber alles reine Spekulation von mir, ich hab eigentlich keine Ahnung :)
plex hat keine .*Library.Get.*Details.
schau mal in diesen post: http://forum.fhem.de/index.php/topic,10075.msg125781.html#msg125781 (http://forum.fhem.de/index.php/topic,10075.msg125781.html#msg125781). das war der alte stand.
das hat bis mitte november funktioniert. scheinbar hat sich hier etwas geändert. die detail info ist nicht mehr mit dabei.
ich habe mal im plex forum nachgefragt. mal sehen ob es antwort gibt.
gruss
andre
Zitat von: justme1968 am 27 Januar 2015, 15:38:48
ich habe mal im plex forum nachgefragt. mal sehen ob es antwort gibt.
gruss
andre
danke!
Hast du mal ausprobiert, was passiert, wenn du den plex-Modus abschaltest?
Klar, ich habe den Plex Modus abgeschalten und 2 ältere Versionen ausprobiert. Auf einem Raspi hab ich auch das kurz getestet. Hat aber alles nichts gebracht. Scheint so als kommt das event wirklich nicht mit.
Sry hätte ich oben gleich dazuschreiben sollen.
Grüße
Ich habe gerade die Befehle poweron und poweroff wieder rausgenommen, da Rince eine bessere Lösung zur Nutzung des devstateicons gepostet hat. Weitere Infos hier: http://forum.fhem.de/index.php/topic,32577.msg253256.html#msg253256
Hi,
ich bin noch sehr neu in Sachen FHEM (hab es seit 4 Tagen).
Auf einem Raspberry habe ich KODI laufen, auf einem zweiten FHEM.
Nun wollte ich, wie in der Wiki beschrieben, das XBMC Modul definieren, leider bekam ich dann folgende Fehlermeldung im Log:
2015.02.07 17:31:50 1: reload: Error:Modul 70_XBMC deactivated:
Can't locate JSON.pm in @INC (@INC contains: /etc/perl /usr/local/lib/perl/5.14.2 /usr/local/share/perl/5.14.2 /usr/lib/perl5 /usr/share/perl5 /usr/lib/perl/5.14 /usr/share/perl/5.14 /usr/local/lib/site_perl . ./FHEM) at ./FHEM/70_XBMC.pm line 18.
BEGIN failed--compilation aborted at ./FHEM/70_XBMC.pm line 18.
2015.02.07 17:31:50 0: Can't locate JSON.pm in @INC (@INC contains: /etc/perl /usr/local/lib/perl/5.14.2 /usr/local/share/perl/5.14.2 /usr/lib/perl5 /usr/share/perl5 /usr/lib/perl/5.14 /usr/share/perl/5.14 /usr/local/lib/site_perl . ./FHEM) at ./FHEM/70_XBMC.pm line 18.
BEGIN failed--compilation aborted at ./FHEM/70_XBMC.pm line 18.
Hat jemand eine Idee, was da schief gelaufen ist? Fehlt noch irgend etwas? Gerade die zweite Meldung klingt irgendwie danach, nur steige ich da noch nicht ganz durch.
Bin euch für jede Hilfe dankbar.
Dir fehlt das JSON Modul!
Schaue mal hier nach: http://www.fhemwiki.de/wiki/XBMC#Einbindung_in_Fhem
Zitat von: P.A.Trick am 07 Februar 2015, 18:57:43
Dir fehlt das JSON Modul!
Schaue mal hier nach: http://www.fhemwiki.de/wiki/XBMC#Einbindung_in_Fhem
Oh, vielen Dank. Manchmal ist es so einfach. Hatte die Zeile überlesen.
Viele Grüße
Ascos
Zitat von: Ascos am 07 Februar 2015, 19:19:06
Oh, vielen Dank. Manchmal ist es so einfach. Hatte die Zeile überlesen.
Viele Grüße
Ascos
Nein hattest du nicht! Ich hatte das Wiki direkt aktualisiert, denn das fehlt ja noch! 8)
Hi, ich bin jetzt nach langem auch nochmal auf das xbmc Modul gestossen, nur irgendwie fehlt mir gerade die idee was ich damit so anstellen kann, vieleicht habt ihr ja ein paar ideen :-)
hab xbmc sowohl auf meinem WinServer wie auch AFTV laufen. Fhem nutze ich für meinen FP auf einem Wandtablett.
Danke für eure Anregungen
Zitat von: Tommy82 am 09 Februar 2015, 19:30:56
Hi, ich bin jetzt nach langem auch nochmal auf das xbmc Modul gestossen, nur irgendwie fehlt mir gerade die idee was ich damit so anstellen kann, vieleicht habt ihr ja ein paar ideen :-)
hab xbmc sowohl auf meinem WinServer wie auch AFTV laufen. Fhem nutze ich für meinen FP auf einem Wandtablett.
Danke für eure Anregungen
Hm....also man sehr vieles damit machen. Ich steuere z.B. mein Licht beim Filmstart, das Verstärkerprofil wird auf Direct Audio gesetzt, wenn Filme nicht in die Lib aufgenommen wurden, gibt's eine FHEM Meldung usw.
Ein paar Anregungen findest du hier: http://www.fhemwiki.de/wiki/XBMC
Ich schalte auch das Licht und lasse mir anzeigen, wer auf meinem Festnetz anruft. Ich bin Telefonfaul und darum steht das DECT immer in der Ladeschale. Wenn ich dann einen Film gucke mag ich wissen wer anruft. Dann entscheide ich ob es sich lohnt aufzustehen oder nicht
Zitat von: TeeVau am 11 Februar 2015, 07:59:22
Ich schalte auch das Licht und lasse mir anzeigen, wer auf meinem Festnetz anruft. Ich bin Telefonfaul und darum steht das DECT immer in der Ladeschale. Wenn ich dann einen Film gucke mag ich wissen wer anruft. Dann entscheide ich ob es sich lohnt aufzustehen oder nicht
Das lasse ich mir über das FRitzCall Plugin direkt auf der jeweiligen VU anzeigen
Guten Morgen miteinander.
Ich bin seit kurzem Hue Besitzer und habe mich die letzten Tage auch ein wenig in FHEM eingearbeitet(bin noch in der Lern- & Experimentierphase).
Ich finde das XBMC Modul ganz stark und habe mir bereits auch ein simples notifiy für die Lichtsteuerung bei Film oder Serien zum ab- und aufdimmen eingebaut(ähnlich wie aus dem Wiki).
Was ich gerne probieren würde, wäre ein ähnliches notify für Musik(z.B. Lampen wechseln die Farben wenn Musik läuft).
Wenn die Musik direkt übers XBMC gespielt wird habe ich ja im playStatus den type song, soweit wäre das ja relativ einfach zu erkennen.
Jedoch kommt die Musik von mir per iOS App(Deezer) via Airplay zum XBMC(Gotham 13.2;Raspbmc;RPi).
XBMC bekommt auch Informationen via Airplay wie Künstler, Songtitel usw. mitgeteilt und stellt diese da, nur wenn ich mir jetzt die Readings in FHEM anschaue steht der playStatus zwar auf playing, aber das Feld type und auch artist, track usw bleiben leer. Ich vermute das XMBC alles was via Airplay kommt anders interpretiert und somit die Informationen wo anders "ablegt".
Möglich wäre vermutlich eine Abrage des playStatus(playing) und type(NICHT (movie ODER episode ODER picture ODER musicvideo))
Schön sieht meiner Meinung nach aber anders aus.
Evtl hat ja jmd. noch einen Tipp für mich und kann mich gedanklich in die richtige Richtung schubsen.
Gruß
Mephi
Hallo Leute.
irgendwie klappt das mit xbmc bei mir nicht so richtig.
Xbmc hab ich auf nem eigenen Pi am laufen. OpenElec 4.x
webserver port 80
user xbmc
pw xbmc
Fernsteuerung zugelassen.
Fhem config:
192.168.178.26 tcp xbmc xbmc
oder
192.168.178.26:80 tcp xbmc xbmc
Status ist aber immer diconnected. bzw ab und an werden readings gesetzt, aber ich kann xbmc z.b. nicht steuern. und ich dann geht mal wieder nichts.....
Modul ist aktuell
im log steht immer mal wieder
2015.02.13 20:24:26 1: PERL WARNING: Use of uninitialized value $title in pattern match (m//) at ./FHEM/70_XBMC.pm line 963.
2015.02.13 20:24:26 1: PERL WARNING: Use of uninitialized value $message in pattern match (m//) at ./FHEM/70_XBMC.pm line 966.
2015.02.13 20:25:35 1: 192.168.178.26:80 disconnected, waiting to reappear (XBMC)
2015.02.13 20:25:35 1: 192.168.178.26:80 reappeared (XBMC)
2015.02.13 20:29:36 5: XBMC_Call: Sending: {"params":{"properties":["volume","muted","name","version"]},"jsonrpc":"2.0","id":778894,"method":"Application.GetProperties"}
2015.02.13 20:29:36 5: SW: 7b22706172616d73223a7b2270726f70657274696573223a5b22766f6c756d65222c226d75746564222c226e616d65222c2276657273696f6e225d7d2c226a736f6e727063223a22322e30222c226964223a3737383839342c226d6574686f64223a224170706c69636174696f6e2e47657450726f70657274696573227d
2015.02.13 20:29:36 5: XBMC_Call: Sending: {"params":{"properties":["skin","fullscreen"]},"jsonrpc":"2.0","id":294095,"method":"GUI.GetProperties"}
2015.02.13 20:29:36 5: SW: 7b22706172616d73223a7b2270726f70657274696573223a5b22736b696e222c2266756c6c73637265656e225d7d2c226a736f6e727063223a22322e30222c226964223a3239343039352c226d6574686f64223a224755492e47657450726f70657274696573227d
2015.02.13 20:29:36 5: XBMC_Call: Sending: {"jsonrpc":"2.0","id":"80611","method":"Player.GetActivePlayers"}
2015.02.13 20:29:36 5: SW: 7b226a736f6e727063223a22322e30222c226964223a223830363131222c226d6574686f64223a22506c617965722e476574416374697665506c6179657273227d
Was kann ich tun?
Bei TCP wird der JSON-Port verwendet. Der ist defaultmäßig 9090 und muss dann nicht angegeben werden in der DEF. Port 80 ist für HTTP.
Ok, aber ohne Portangabe und auch mit 9090 klappt es irgendwie nicht.
Wie kann ich weiter vorgehen?
Poste bitte mal ein Log mit verbose 5, dann kann man evtl. etwas sehen.
2015.02.14 19:45:15 5: XBMC_Call: Sending: {"params":{"volume":100},"jsonrpc":"2.0","method":"Application.SetVolume"}
2015.02.14 19:45:15 5: SW: 7b22706172616d73223a7b22766f6c756d65223a3130307d2c226a736f6e727063223a22322e30222c226d6574686f64223a224170706c69636174696f6e2e536574566f6c756d65227d
2015.02.14 19:45:20 5: XBMC_Call: Sending: {"params":{"volume":94},"jsonrpc":"2.0","method":"Application.SetVolume"}
2015.02.14 19:45:20 5: SW: 7b22706172616d73223a7b22766f6c756d65223a39347d2c226a736f6e727063223a22322e30222c226d6574686f64223a224170706c69636174696f6e2e536574566f6c756d65227d
2015.02.14 19:45:29 5: XBMC_Call: Sending: {"params":{"action":"volumeup"},"jsonrpc":"2.0","method":"Input.ExecuteAction"}
2015.02.14 19:45:29 5: SW: 7b22706172616d73223a7b22616374696f6e223a22766f6c756d657570227d2c226a736f6e727063223a22322e30222c226d6574686f64223a22496e7075742e45786563757465416374696f6e227d
2015.02.14 19:45:35 5: XBMC_Call: Sending: {"jsonrpc":"2.0","method":"Input.Select"}
2015.02.14 19:45:35 5: SW: 7b226a736f6e727063223a22322e30222c226d6574686f64223a22496e7075742e53656c656374227d
2015.02.14 19:45:46 5: XBMC_Call: Sending: {"params":{"title":null,"message":null},"jsonrpc":"2.0","method":"GUI.ShowNotification"}
2015.02.14 19:45:46 5: SW: 7b22706172616d73223a7b227469746c65223a6e756c6c2c226d657373616765223a6e756c6c7d2c226a736f6e727063223a22322e30222c226d6574686f64223a224755492e53686f774e6f74696669636174696f6e227d
richtig viel mehr steht da nicht im Log.
Wenn ich mit Putty auf 9090 gehe, bekomme ich ein "connection refused", normal?
Nee, das ist nicht normal. Wichtig ist, dass du nicht nur "Fernsteuerung zulassen", sondern auch "Fernsteuerung durch andere Programme zulassen" (o.ä.) aktiviert hast. Falls es dann immer noch nicht geht, dann bitte ein komplettes Log posten.
eigentlich habe ich das, ich steuer xbmc ja auch mit yatze, und das funktioniert super.
Ich schau jetzt noch mal in allen Einstellungen nach.
Mehr Log gibt es eigentlich nicht.
hatte ja bis grad noch den port 80 drin.
Ich schau mal ob noch relevante Logs erzeugt werden, und werde die dann posten.
EDit;
Taha! habe alle Einstellungen noch mal off/on geschalten und XBMC neugestartet. Jetzt tut es. Klasse!
Ja, das sollte in die Doku aufgenommen werden:
Änderungen an den Netzwerkeinstellungen (Freigaben oder auch Portänderungen) bei Kodi werden erst nach einem Neustart von Kodi aktiv.
Bin da einige Seiten vorher auch schon mal drüber gestolpert ;)
Hallo, ich bins mal wieder :)
Seit einem Update vor wenigen Tage, wird mal wiede fröhlich mein Logfile vollgeschrieben mit folgender Meldung. Ich habe mal verbose 5 aktiviert, ich kann aber da jetzt nichts verwerfliches sehen.
2015.02.16 09:12:56 1: 192.168.178.6:9090 reappeared (Wohnzimmer_Hifi_XBMC)
2015.02.16 09:12:56 5: XBMC_Call: Sending: {"params":{"properties":["volume","muted","name","version"]},"jsonrpc":"2.0","id":363561,"method":"Application.GetProperties"}
2015.02.16 09:12:56 5: SW: 7b22706172616d73223a7b2270726f70657274696573223a5b22766f6c756d65222c226d75746564222c226e616d65222c2276657273696f6e225d7d2c226a736f6e727063223a22322e30222c226964223a3336333536312c226d6574686f64223a224170706c69636174696f6e2e47657450726f70657274696573227d
2015.02.16 09:12:56 5: XBMC_Call: Sending: {"params":{"properties":["skin","fullscreen"]},"jsonrpc":"2.0","id":482857,"method":"GUI.GetProperties"}
2015.02.16 09:12:56 5: SW: 7b22706172616d73223a7b2270726f70657274696573223a5b22736b696e222c2266756c6c73637265656e225d7d2c226a736f6e727063223a22322e30222c226964223a3438323835372c226d6574686f64223a224755492e47657450726f70657274696573227d
2015.02.16 09:12:56 5: XBMC_Call: Sending: {"jsonrpc":"2.0","id":"392553","method":"Player.GetActivePlayers"}
2015.02.16 09:12:56 5: SW: 7b226a736f6e727063223a22322e30222c226964223a22333932353533222c226d6574686f64223a22506c617965722e476574416374697665506c6179657273227d
2015.02.16 09:12:56 5: XBMC_ProcessRead
2015.02.16 09:12:56 5: No PARTIAL buffer
2015.02.16 09:12:56 5: XBMC_Read: Incoming data: {
"id": 363561,
"jsonrpc": "2.0",
"result": {
"muted": false,
"name": "Kodi",
"version": {
"major": 14,
"minor": 0,
"revision": "ad747d9",
"tag": "stable"
},
"volume": 100
}
}
{
"id": 482857,
"jsonrpc": "2.0",
"result": {
"fullscreen": false,
"skin": {
"id": "skin.hybrid",
"name": "Hybrid"
}
}
}
{
"id": "392553",
"jsonrpc": "2.0",
"result": [
]
}
2015.02.16 09:12:56 4: XBMC_Read: Current processing buffer (PARTIAL + incoming data): {
"id": 363561,
"jsonrpc": "2.0",
"result": {
"muted": false,
"name": "Kodi",
"version": {
"major": 14,
"minor": 0,
"revision": "ad747d9",
"tag": "stable"
},
"volume": 100
}
}
{
"id": 482857,
"jsonrpc": "2.0",
"result": {
"fullscreen": false,
"skin": {
"id": "skin.hybrid",
"name": "Hybrid"
}
}
}
{
"id": "392553",
"jsonrpc": "2.0",
"result": [
]
}
2015.02.16 09:12:56 4: XBMC_Read: Decoding JSON message. Length: 201 Content: {
"id": 363561,
"jsonrpc": "2.0",
"result": {
"muted": false,
"name": "Kodi",
"version": {
"major": 14,
"minor": 0,
"revision": "ad747d9",
"tag": "stable"
},
"volume": 100
}
}
2015.02.16 09:12:56 3: XBMC_ParseMsg: Garbage character before message:
2015.02.16 09:12:56 4: XBMC_Read: Decoding JSON message. Length: 136 Content: {
"id": 482857,
"jsonrpc": "2.0",
"result": {
"fullscreen": false,
"skin": {
"id": "skin.hybrid",
"name": "Hybrid"
}
}
}
2015.02.16 09:12:56 3: XBMC_ParseMsg: Garbage character before message:
2015.02.16 09:12:56 4: XBMC_Read: Decoding JSON message. Length: 56 Content: {
"id": "392553",
"jsonrpc": "2.0",
"result": [
]
}
2015.02.16 09:12:56 3: XBMC_ParseMsg: Garbage character before message:
2015.02.16 09:12:56 5: XBMC_Read: Tail:
2015.02.16 09:12:56 5: XBMC_Read: PARTIAL:
2015.02.16 09:12:58 5: XBMC_ProcessRead
2015.02.16 09:12:58 5: No PARTIAL buffer
2015.02.16 09:12:58 5: XBMC_Read: Incoming data: {
"jsonrpc": "2.0",
"method": "VideoLibrary.OnScanFinished",
"params": {
"data": null,
"sender": "xbmc"
}
}
2015.02.16 09:12:58 4: XBMC_Read: Current processing buffer (PARTIAL + incoming data): {
"jsonrpc": "2.0",
"method": "VideoLibrary.OnScanFinished",
"params": {
"data": null,
"sender": "xbmc"
}
}
2015.02.16 09:12:58 4: XBMC_Read: Decoding JSON message. Length: 115 Content: {
"jsonrpc": "2.0",
"method": "VideoLibrary.OnScanFinished",
"params": {
"data": null,
"sender": "xbmc"
}
}
2015.02.16 09:12:58 3: XBMC_ParseMsg: Garbage character before message:
2015.02.16 09:12:58 5: XBMC_Read: Tail:
2015.02.16 09:12:58 5: XBMC_Read: PARTIAL:
2015.02.16 09:13:56 5: SW: 7b226a736f6e727063223a22322e30222c226964223a3838313431392c226d6574686f64223a224a534f4e5250432e50696e67227d
2015.02.16 09:13:56 5: XBMC_ProcessRead
2015.02.16 09:13:56 5: No PARTIAL buffer
2015.02.16 09:13:56 5: XBMC_Read: Incoming data: {
"id": 881419,
"jsonrpc": "2.0",
"result": "pong"
}
2015.02.16 09:13:56 4: XBMC_Read: Current processing buffer (PARTIAL + incoming data): {
"id": 881419,
"jsonrpc": "2.0",
"result": "pong"
}
2015.02.16 09:13:56 4: XBMC_Read: Decoding JSON message. Length: 55 Content: {
"id": 881419,
"jsonrpc": "2.0",
"result": "pong"
}
2015.02.16 09:13:56 3: XBMC_ParseMsg: Garbage character before message:
2015.02.16 09:13:56 5: XBMC_Read: Tail:
2015.02.16 09:13:56 5: XBMC_Read: PARTIAL:
2015.02.16 09:14:56 5: SW: 7b226a736f6e727063223a22322e30222c226964223a3330393833362c226d6574686f64223a224a534f4e5250432e50696e67227d
2015.02.16 09:14:56 5: XBMC_ProcessRead
2015.02.16 09:14:56 5: No PARTIAL buffer
2015.02.16 09:14:56 5: XBMC_Read: Incoming data: {
"id": 309836,
"jsonrpc": "2.0",
"result": "pong"
}
2015.02.16 09:14:56 4: XBMC_Read: Current processing buffer (PARTIAL + incoming data): {
"id": 309836,
"jsonrpc": "2.0",
"result": "pong"
}
2015.02.16 09:14:56 4: XBMC_Read: Decoding JSON message. Length: 55 Content: {
"id": 309836,
"jsonrpc": "2.0",
"result": "pong"
}
2015.02.16 09:14:56 3: XBMC_ParseMsg: Garbage character before message:
2015.02.16 09:14:56 5: XBMC_Read: Tail:
2015.02.16 09:14:56 5: XBMC_Read: PARTIAL:
Wie man sieht kommt die Meldung jede Minute. Der Fehler scheint in folgendem Code-Abschnitt zu passieren.
foreach my $c (split //, $buffer) {
if($open == $close && $open > 0) {
$tail .= $c;
}
elsif(($open == $close) && ($c ne '{')) {
Log3($name, 3, "XBMC_ParseMsg: Garbage character before message: " . $c);
}
Kodi scheint wohl (mal wieder) irgend einen Blödsinn zu senden.
Da ich bisher noch keinen Beitrag gefunden habe, wo jemand das gleiche Problem hat, vermute ich, dass ich vielleicht mein XBMC (bzw. Kodi) mal komplett neu aufsetzen muss. Obwohl es ansonsten eigentlich wunderbar funktioniert.
Ja, kann mich erinnern. :) Aber nun sollte das Modul bei dir immerhin funktionieren, oder? Geloggt wird dieses ominöse unerwartete Zeichen trotzdem. Ich könnte das Log-Level hochsetzen, dann ist das bei LogLevel 3 nicht mehr sichtbar. Würde ich aber ungerne machen, ohne zu wissen, was eigentlich da hinter steckt. Tritt scheinbar nur bei dir auf :/
Nein, deshalb brauchst sicherlich nicht im allgemeinen das Loglevel hochsetzen. Ist ja schließlich ein Indiz, das irgendetwas nicht so läuft wie es sollte. Vor allem, da es ja scheinbar nur bei mir auftritt. Ich werde jetzt einfach bei mir das Loglevel des Kodi auf 2 stellen, damit mein Logfile nicht mehr zugesetzt wird und demnächst setze ich mein Kodi mal neu auf.
Was mich nur wundert ist, dass es die ganze Zeit nicht geloggt wurde. Aber ansonsten funzt es ja :)
Danke nochmal. 8)
Hallo,
vielen Dank für das Modul und die Beschreibungen. Ich habe zwei Raspberries, auf einem Raspbmc/Kodi, auf dem anderen FHEM. Die beiden sprechen auch miteinander, in FHEM sehe ich den Status von Kodi/raspbmc und von FHEM kann ich KODI/Raspbmc steuern.
Jetzt würde ich gerne ein paar FHEM Kommandos ausführen, in Abhängigkeit vom Status des Kodi/raspbmc. Dazu habe ich den Link hier gefunden (http://www.fhemwiki.de/wiki/XBMC). Ich habe den Code eingebaut, umgebaut etc. Ich scheitere jedoch an der Fehlermeldung "Unknown command } , try help. 0" - dieser Fehler verschwindet zwar, wenn man den ";" bei fhem(...) herausnimmt, jedoch werden dann keine Befehle ausgeführt.
Da ich schon seit ein paar Stunden versuche das zum Laufen zu bekommen, habe feststellen müssen, das falsch gesetzte Leerzeichen beispielsweise ein Problem darstellen.
Hat jemand ein paar Zeilen Code für mich (am besten als Datei wegen der Formatierung?
Vielen Dank und schönen Sonntag noch.
Zitat von: pallago am 22 Februar 2015, 13:38:43
Hallo,
vielen Dank für das Modul und die Beschreibungen. Ich habe zwei Raspberries, auf einem Raspbmc/Kodi, auf dem anderen FHEM. Die beiden sprechen auch miteinander, in FHEM sehe ich den Status von Kodi/raspbmc und von FHEM kann ich KODI/Raspbmc steuern.
Jetzt würde ich gerne ein paar FHEM Kommandos ausführen, in Abhängigkeit vom Status des Kodi/raspbmc. Dazu habe ich den Link hier gefunden (http://www.fhemwiki.de/wiki/XBMC). Ich habe den Code eingebaut, umgebaut etc. Ich scheitere jedoch an der Fehlermeldung "Unknown command } , try help. 0" - dieser Fehler verschwindet zwar, wenn man den ";" bei fhem(...) herausnimmt, jedoch werden dann keine Befehle ausgeführt.
Da ich schon seit ein paar Stunden versuche das zum Laufen zu bekommen, habe feststellen müssen, das falsch gesetzte Leerzeichen beispielsweise ein Problem darstellen.
Hat jemand ein paar Zeilen Code für mich (am besten als Datei wegen der Formatierung?
Vielen Dank und schönen Sonntag noch.
Du solltest die Kommandos nicht in der fhem.cfg editieren sondern das WebIF benutzen. Ich tippe mal, du hast die doppelten Semikolons vergessen!
Hallo,
vielen Dank!, habe das auch auf Seite 13/14 gefunden - schlussendlich habe ich es hinbekommen.
Die Idee ist nun, dass das Licht beim Filmschauen ausgeht und danach wieder an (wenn es davor auch schon an war). Dazu speichere ich den Zustand vor dem "play" in die Variable "status_LED1". Soweit so gut, funktioniert auch - ich verstehe jedoch nicht wieso das Skript 2x durchläuft, wenn ich auf "play" dücke. Wenn ich ihn anhalte, läuft das Skript auch nur 1x durch. Dadruch, dass das Skript 2x ausgeführt wird, wird der Status immer auf "off" gesetzt; somit funktioniert es nicht.
2015.02.22 16:18:42 3: PLAYING status_LED1: on
2015.02.22 16:18:42 3: PLAYING status_LED1: off
2015.02.22 16:18:45 3: PAUSED status_LED1: off
(Log 3,... ist der Debug)
Hat da jemand eine Idee?
z_XBMC:playStatus.* { if (ReadingsVal("wz_XBMC", "type", "") eq "movie"){
my $status_LED1 = ReadingsVal("LED1", "state", "");
if (ReadingsVal("wz_XBMC", "playStatus", "") eq "playing"){
Log 3, "PLAYING status_LED1: " . $status_LED1;
if ($status_LED1 eq "on"){
fhem("set LED1 off");
}
}
if (ReadingsVal("wz_XBMC", "playStatus", "") eq "paused"){
Log 3, "PAUSED status_LED1: " . $status_LED1;
if ($status_LED1 eq "on"){
fhem("set LED1 on");
}
}
}}
Zitatz_XBMC:playStatus.*
Schau mal im Eventmonitor, welche Events alle auftauchen. Und dann das RegEx genauer anpassen.
lg, Ici
Hallo Ici,
vielen Dank. Ich habe gesehen, dass zwei mal das Event
2015-02-22 18:34:06 XBMC wz_XBMC playStatus: playing
auftaucht. Somit wird meine variable immer überschrieben. Sauber ist meine Lösung nicht, jedoch funktioniert sie; ich habe mir zwei dummy angelegt
define tmp_LED1 dummy
attr tmp_LED1 setList on off
define tmp_LED2 dummy
attr tmp_LED2 setList on off
Dann im DEF:
wz_XBMC:playStatus.* { if (ReadingsVal("wz_XBMC", "type", "") eq "movie"){
if (ReadingsVal("wz_XBMC", "playStatus", "") eq "playing") {
my $status_LED1 = ReadingsVal("LED1", "state", "");
my $status_LED2 = ReadingsVal("LED2", "state", "");
if ($status_LED1 eq "on"){
fhem("set LED1 off");
fhem("set tmp_LED1 $status_LED1");
}
if ($status_LED2 eq "on"){
fhem("set LED2 off");
fhem("set tmp_LED2 $status_LED2");
}
}
if (ReadingsVal("wz_XBMC", "playStatus", "") eq "paused"){
if (ReadingsVal("tmp_LED1", "state", "") eq "on") {
fhem("set LED1 on");
fhem("set tmp_LED1 off");
}
if (ReadingsVal("tmp_LED2", "state", "") eq "on") {
fhem("set LED2 on");
fhem("set tmp_LED2 off");
}
}
}}
vielleicht hat jemand auch das Problem und das hilft hier jemanden.
Hast du event-on-changereading gesetzt?
Moin, kleines Update zu meinem Problemchen.
Kodi (Amazon Fire TV) und Fhem laufen nun auch per tcp super zusammen. Ich hatte die advancedsettings.xml nicht richtig eingerichtet.
>.< kaum macht man's richtig, funktioniert's
Danke für eure Hilfe
Zitat von: Bambi am 14 Januar 2015, 22:48:28
Hallöchen und schönen Abend,
ganz neu bin ich inzwischen nimmer, aber bestimmt etwas blind oder begriffsstutzig.
Ich möchte die Kommunikation zwischen FHEM und KODI aufbauen, doch leider verstehe ich nicht, wie ich KODI dazu bringen kann mir Informationen zu schicken. Mit dem Script aus dem Wiki klappt es anscheinend nicht bei mir.
Für Vorschläge bin ich offen :)
Zum System:
* FHEM 5.6 auf nem Raspi
** KODI ist angelegt:
Internals:
CFGFN /opt/fhem/FHEM/HW_Mediasysteme.cfg
DEF 192.168.0.47 tcp
DeviceName 192.168.0.47:9090
Host 192.168.0.47
NAME wz_KODI
NEXT_OPEN 1421273415.50827
NR 141
PARTIAL
Port 9090
Protocol tcp
STATE disconnected
TYPE XBMC
Readings:
2015-01-14 23:09:15 state disconnected
Attributes:
devStateIcon opened:rc_GREEN:on disconnected:rc_RED:off Initialized:message_socket_disabled
pingInterval 60
room Wohnzimmer
* KODI 14 per sideload auf nem Amazon Fire TV
** JSON-RPC API ist aktiviert.
Besten Dank vorab :D
Update:
Kommuikation über http läuft - feini :)=
Anscheinend bekomme ich Telnet / tcp nicht zum laufen...
Magst du uns auch verraten was der Fehler war und wie du ihn behoben hast?
So können andere auch davon teilhaben die ähnliche Probleme hat!
Hi,
hab jetzt auch nochmal das XBMC Modul aktiviert, und finds immer noch cool,
allerdings fänd ich es super wenn es eine Art "Frontend" dafür geben würde, wo ich z.b. meine Musik Ordner komplett angezeigt bekommen würde, und dann dort die Musik auswählen könnte, das könnte man dann vieleicht auch schon in einen FP integrieren um es z.b. auf einem Wandtablett darzustellen und damit seine Musik abzuspielen!?
Wenn ich es könnte würde ich mich selbst an die Umsetzung geben... :-\
ich bin gerade dabei etwas ähnliches für das sonos modul zu probieren: http://forum.fhem.de/index.php/topic,33439.msg269010.html#msg269010 (http://forum.fhem.de/index.php/topic,33439.msg269010.html#msg269010).
die idee wäre das frontend so flexibel zu bauen das man auch listen bzw. bäume von anderen geräten/modulen damit durchblättern kann.
es müsste aber jemand für das backend sorgen und diese daten in ein wiederverwendbares format bringen...
gruss
andre
Hi Andre,
das hört sich super an, würde mich freuen wenn das auch für xbmc, und natürlich für dein iTunes Modul klappen würde :-)
Wie gesagt,
ich habe leider nicht dir Programmierkenntnisse , sonst würde ich dir gerne helfen..............
Was müsste ich denn lernen um dir zuhelfen? Perl? Dann würde ich mich da gerne mit auseinandersetzen:-)
Aber hab seit dem ich gestern das XBMC Plugin wieder aktiviert hab heute den Log voll mit:
2015.03.03 00:01:31.108 3: Last ping (1425337231.10213) is greather than last pong (1425337171.0912)
2015.03.03 00:01:31.114 1: 192.168.188.50:9090 disconnected, waiting to reappear (FireTV_Kodi)
2015.03.03 00:01:31.144 1: 192.168.188.50:9090 reappeared (FireTV_Kodi)
2015.03.03 00:03:31.191 3: Last ping (1425337351.18519) is greather than last pong (1425337291.17447)
2015.03.03 00:03:31.192 1: 192.168.188.50:9090 disconnected, waiting to reappear (FireTV_Kodi)
2015.03.03 00:03:31.231 1: 192.168.188.50:9090 reappeared (FireTV_Kodi)
2015.03.03 00:05:31.275 3: Last ping (1425337471.27205) is greather than last pong (1425337411.25281)
2015.03.03 00:05:31.276 1: 192.168.188.50:9090 disconnected, waiting to reappear (FireTV_Kodi)
2015.03.03 00:05:31.306 1: 192.168.188.50:9090 reappeared (FireTV_Kodi)
2015.03.03 00:07:31.361 3: Last ping (1425337591.35439) is greather than last pong (1425337531.33736)
2015.03.03 00:07:31.362 1: 192.168.188.50:9090 disconnected, waiting to reappear (FireTV_Kodi)
2015.03.03 00:07:31.391 1: 192.168.188.50:9090 reappeared (FireTV_Kodi)
2015.03.03 00:09:31.439 3: Last ping (1425337711.43211) is greather than last pong (1425337651.42149)
2015.03.03 00:09:31.439 1: 192.168.188.50:9090 disconnected, waiting to reappear (FireTV_Kodi)
2015.03.03 00:09:31.469 1: 192.168.188.50:9090 reappeared (FireTV_Kodi)
Liegt wohl daran das der FireTv nicht immer über Strom verfügt, weil ich ihn z.b. nachts Stromlos schalte, damit dann ja auch Kodi
Hallo,
ich versuche nun seit einiger Zeit das KODI System mit der Raspberry zu verbinden. Allerdings will das nicht so...
- Aktuellstes KODI läuft in Form von OpenElec auf einem Intel NUC.
- FHEM ist soweit für KODI auf der RPi vorbereitet, Status "Opened" wird übertragen.
Mit Verbose 5 erscheint im Log folgendes:
2015.03.12 20:31:15 5: SW: 7b226a736f6e727063223a22322e30222c226964223a3237363435332c226d6574686f64223a224a534f4e5250432e50696e67227d
2015.03.12 20:31:15 3: Last ping (1426188675) is greather than last pong (1426188615)
2015.03.12 20:31:15 1: 192.168.178.12:9090 disconnected, waiting to reappear (wz_XBMC)
2015.03.12 20:31:15 1: 192.168.178.12:9090 reappeared (wz_XBMC)
2015.03.12 20:31:15 5: XBMC_Call: Sending: {"params":{"properties":["volume","muted","name","version"]},"jsonrpc":"2.0","id":497565,"method":"Application.GetProperties"}
2015.03.12 20:31:15 5: SW: 7b22706172616d73223a7b2270726f70657274696573223a5b22766f6c756d65222c226d75746564222c226e616d65222c2276657273696f6e225d7d2c226a736f6e727063223a22322e30222c226964223a3439373536352c226d6574686f64223a224170706c69636174696f6e2e47657450726f70657274696573227d
2015.03.12 20:31:15 5: XBMC_Call: Sending: {"params":{"properties":["skin","fullscreen"]},"jsonrpc":"2.0","id":987496,"method":"GUI.GetProperties"}
2015.03.12 20:31:15 5: SW: 7b22706172616d73223a7b2270726f70657274696573223a5b22736b696e222c2266756c6c73637265656e225d7d2c226a736f6e727063223a22322e30222c226964223a3938373439362c226d6574686f64223a224755492e47657450726f70657274696573227d
2015.03.12 20:31:15 5: XBMC_Call: Sending: {"jsonrpc":"2.0","id":"746871","method":"Player.GetActivePlayers"}
2015.03.12 20:31:15 5: SW: 7b226a736f6e727063223a22322e30222c226964223a22373436383731222c226d6574686f64223a22506c617965722e476574416374697665506c6179657273227d
im EventMonitor erscheint folgendes:
Events:
2015-03-12 20:33:15 XBMC wz_XBMC DISCONNECTED
2015-03-12 20:33:15 XBMC wz_XBMC time:
2015-03-12 20:33:15 XBMC wz_XBMC totaltime:
2015-03-12 20:33:15 XBMC wz_XBMC shuffle:
2015-03-12 20:33:15 XBMC wz_XBMC repeat:
2015-03-12 20:33:15 XBMC wz_XBMC speed:
2015-03-12 20:33:15 XBMC wz_XBMC partymode:
2015-03-12 20:33:15 XBMC wz_XBMC playStatus: stopped
2015-03-12 20:33:15 XBMC wz_XBMC system: wake
2015-03-12 20:33:15 XBMC wz_XBMC CONNECTED
Anscheinend werden keine Readings von KODI empfangen, der playStatus steht immer auf "stopped", sowie auch das Senden von z.b. "shutdown" bleibt ohne Wirkung. Etwas weiter vorne im Thread, las ich etwas von etwaigen Problemen mit OpenElec?
Aktuellste FHEM und KODI Updates sind bereits installiert. Vorher hatte ich noch das alte XBMC drauf, es hatte die selben Symptome. in meiner wz_XBMC wurde 192.168.178.12 tcp KODI "" definiert, entspricht einem Username "KODI" und keinem Passwort, richtig? Entsprechende Haken bei "Webserver aktivieren", "Zulassen von Steuerung von fremden Programmen" (oder so ähnlich) wurden gesetzt...
Hat jemand eine Idee?
Danke vorab!
Kannst du bitte mal ein komplettes Log posten? Dann am besten auch mal einen Film starten in Kodi.
Was meinst du mit einer kompletten log? Film läuft, Readings unverändert...
Dein gepostetes Log erstreckt sich nur über genau 1 Sekunde :) Bitte einmal Kodi abschalten bis FHEM das mitbekommen hat. Dann Kodi starten bis "opened" steht und dann einen Film starten.
Es kommen keine anderen Einträge als diese. Was mir aber aufgefallen ist, wenn ich den NUC starte, kommt als Meldung in OpenElec KODI ein "Remote Communication Server" Fehler.
2015.03.12 21:23:24 1: 192.168.178.12:9090 reappeared (wz_XBMC)
2015.03.12 21:23:24 5: Triggering notify_XBMC_status
2015.03.12 21:23:24 4: notify_XBMC_status exec { if (ReadingsVal("wz_XBMC", "type", "") eq "movie"){
if (ReadingsVal("wz_XBMC", "playStatus", "") eq "stopped"){
fhem("set CUL_HM_HM_LC_Dim1PWM_CV_3415E0_Sw pct 30playStatus: stopped");;
}
if (ReadingsVal("wz_XBMC", "playStatus", "") eq "paused"){
fhem("set CUL_HM_HM_LC_Dim1PWM_CV_3415E0_Sw pct 100playStatus: stopped");;
}
}
}
2015.03.12 21:23:24 5: XBMC_Call: Sending: {"params":{"properties":["volume","muted","name","version"]},"jsonrpc":"2.0","id":838083,"method":"Application.GetProperties"}
2015.03.12 21:23:24 5: SW: 7b22706172616d73223a7b2270726f70657274696573223a5b22766f6c756d65222c226d75746564222c226e616d65222c2276657273696f6e225d7d2c226a736f6e727063223a22322e30222c226964223a3833383038332c226d6574686f64223a224170706c69636174696f6e2e47657450726f70657274696573227d
2015.03.12 21:23:24 5: XBMC_Call: Sending: {"params":{"properties":["skin","fullscreen"]},"jsonrpc":"2.0","id":145809,"method":"GUI.GetProperties"}
2015.03.12 21:23:24 5: SW: 7b22706172616d73223a7b2270726f70657274696573223a5b22736b696e222c2266756c6c73637265656e225d7d2c226a736f6e727063223a22322e30222c226964223a3134353830392c226d6574686f64223a224755492e47657450726f70657274696573227d
2015.03.12 21:23:24 5: XBMC_Call: Sending: {"jsonrpc":"2.0","id":"752285","method":"Player.GetActivePlayers"}
2015.03.12 21:23:24 5: SW: 7b226a736f6e727063223a22322e30222c226964223a22373532323835222c226d6574686f64223a22506c617965722e476574416374697665506c6179657273227d
Also wenn das alles ist, dann bekommt FHEM von Kodi einfach gar keine Antwort. Nach dem Aufbau der Verbindung schickt FHEM drei Anfragen an Kodi:
2015.03.12 21:23:24 5: XBMC_Call: Sending: {"params":{"properties":["volume","muted","name","version"]},"jsonrpc":"2.0","id":838083,"method":"Application.GetProperties"}
2015.03.12 21:23:24 5: XBMC_Call: Sending: {"params":{"properties":["skin","fullscreen"]},"jsonrpc":"2.0","id":145809,"method":"GUI.GetProperties"}
2015.03.12 21:23:24 5: XBMC_Call: Sending: {"jsonrpc":"2.0","id":"752285","method":"Player.GetActivePlayers"}
Aber alles ohne Rückantwort.
Mach mal bitte im Kodi das Debug-Log an und gucke mal, wie das auf der anderen Seite aussieht. Also ob Kodi der Meinung ist, eine Antwort geschickt zu haben.
Du könntest auch mal händisch eine Telnet-Verbindung auf Port 9090 aufmachen und mal eine Anfrage schicken und gucken, ob da eine Antwort kommt:
{"params":{"properties":["volume","muted","name","version"]},"jsonrpc":"2.0","id":838083,"method":"Application.GetProperties"}
Habe es herausgefunden:
In KODI muss der Port des Webservers auf 9092 geändert werden, neustart und alles ist gut!! Danke trotzdem für deine Mühen!
Ah ok, dann hat FHEM scheinbar mit dem Kodi-Webserver geredet und nicht mit dem Kodi-JSON-RPC-Server.
Trotzdem komisch, ich benutze auch OpenELEC und AFAIK ist der Webserver-Port defaultmäßig 80 und der JSON-Port 9090.
Du kannst aber auch bei der Definition des Geräts in FHEM eine Portnummer angeben, falls JSON bei dir auf einem anderen Port als 9090 läuft.
Zb
define htpc XBMC 192.168.0.10:9000 tcp
sehr schönes module! (mein rolladen geht jetzt im wohnzimmer runter wenn ich einen film starte :)
wie kann ich einen radiostream starten? möchte morgens FRITZ! radio laufen haben und 2h später ausschalten.
wenn's nicht unbedingt XBMC sein muss, schau Dir doch mal StreamRadio an:
http://www.fhemwiki.de/wiki/Modul_StreamRadio_Einrichtungshilfe (http://www.fhemwiki.de/wiki/Modul_StreamRadio_Einrichtungshilfe)
Zitat von: Doggiebert am 26 März 2015, 11:11:09
wenn's nicht unbedingt XBMC sein muss, schau Dir doch mal StreamRadio an:
http://www.fhemwiki.de/wiki/Modul_StreamRadio_Einrichtungshilfe (http://www.fhemwiki.de/wiki/Modul_StreamRadio_Einrichtungshilfe)
danke für die info ich ziehs mir mal rein.
allerdings hätte ich lieber, wenn schon nicht xbmc, dann webradio auf meinen fritz phones über die box starten. das gibt es aber nicht....(bzw nicht gefunden)
Schau dir mal den "open"-Befehl in der commandref von XBMC an. Der kann auch Streams starten.
Zitat von: vbs am 26 März 2015, 17:24:04
Schau dir mal den "open"-Befehl in der commandref von XBMC an. Der kann auch Streams starten.
cool, danke! werde es testen!
offtopic:
ich glaub das fritz box modul kann sogar radio auf den telefonen starten. das ist noch besser.
grüße
bernd
Vielen Dank für das tolle Modul!
Eine Frage habe ich,
gibt es auch ein Reading für das Cover/Thump?
grüße
Grav
Hi,
hab heute plötzlich wieder jede Menge meldungen im Log
2015.03.30 00:01:26.152 3: Last ping (1427666426.14531) is greather than last pong (1427666366.12906)
2015.03.30 00:01:26.157 1: 192.168.188.50:9090 disconnected, waiting to reappear (FireTV_Kodi)
2015.03.30 00:01:26.179 1: 192.168.188.50:9090 reappeared (FireTV_Kodi)
2015.03.30 00:03:26.216 3: Last ping (1427666546.21273) is greather than last pong (1427666486.202)
2015.03.30 00:03:26.217 1: 192.168.188.50:9090 disconnected, waiting to reappear (FireTV_Kodi)
2015.03.30 00:03:27.209 1: 192.168.188.50:9090 reappeared (FireTV_Kodi)
2015.03.30 00:05:27.293 3: Last ping (1427666667.24921) is greather than last pong (1427666607.23866)
2015.03.30 00:05:27.293 1: 192.168.188.50:9090 disconnected, waiting to reappear (FireTV_Kodi)
2015.03.30 00:05:27.360 1: 192.168.188.50:9090 reappeared (FireTV_Kodi)
2015.03.30 00:07:27.396 3: Last ping (1427666787.39381) is greather than last pong (1427666727.38303)
2015.03.30 00:07:27.397 1: 192.168.188.50:9090 disconnected, waiting to reappear (FireTV_Kodi)
2015.03.30 00:07:30.529 1: 192.168.188.50:9090 reappeared (FireTV_Kodi)
2015.03.30 00:09:30.576 3: Last ping (1427666910.57415) is greather than last pong (1427666850.5646)
2015.03.30 00:09:30.577 1: 192.168.188.50:9090 disconnected, waiting to reappear (FireTV_Kodi)
2015.03.30 00:09:35.596 1: 192.168.188.50:9090 reappeared (FireTV_Kodi)
2015.03.30 00:11:35.655 3: Last ping (1427667035.64721) is greather than last pong (1427666975.63148)
2015.03.30 00:11:35.656 1: 192.168.188.50:9090 disconnected, waiting to reappear (FireTV_Kodi)
2015.03.30 00:11:39.442 1: 192.168.188.50:9090 reappeared (FireTV_Kodi)
2015.03.30 00:13:39.500 3: Last ping (1427667159.48848) is greather than last pong (1427667099.47784)
2015.03.30 00:13:39.501 1: 192.168.188.50:9090 disconnected, waiting to reappear (FireTV_Kodi)
Hab die letzten Tage nichts an Kodi geändrt, wo kommt das plötzlich her?
@gravidi
Also Readings für Covers gibt es meines Wissens nicht.
@Tommy:
Sieht aus als würde dein FireTV nicht auf die Ping-Nachrichten von FHEM antworten. Funktioniert es denn zwischendurch noch? Kannst sonst mal ein Log mit verbose 5 machen.
Der FTV ist nicht immer an, dadurch kann er natürlich nicht immer reagieren, allerdings ist das schon die ganze Zeit so, und die Fehler kamen die letzten Tage/Wochen nicht im Log, heute dann plötzlich wieder
FHEM ist scheinbar in der Lage auf TCP 9090 zu connecten:
2015.03.30 00:03:27.209 1: 192.168.188.50:9090 reappeared (FireTV_Kodi)
Jedoch wird dann der Ping nicht beantwortet und daher die Verbindung wieder beendet. Guck doch mal ob auf der IP evtl. ein (anderes?) Gerät auf 9090 zu erreichen ist.
Hast du schon etwas herausfinden können zu dem Problem?
Hi, nein, interessanterweiser ist das Problem heute nicht ein einziges mal im Log...
Mir ist folgendes Verhalten vom XBMC Modul aufgefallen: Wenn die XBMC Instanz, nach einem Neustart von FHEM, nicht erreicht werden kann, dann reagiert FHEM alle 60 Sekunden für ca. 2.5 Sekunden nicht mehr. War die Instanz nach dem letzten Neustart von FHEM einmal erreichbar, dann tritt der Effekt nicht mehr auf. Dieses Verhalten ist unabhängig vom Atrribut 'pingInterval'.
2015.05.03 08:14:18.513 1: Perfmon: possible freeze starting at 08:14:16, delay is 2.513
2015.05.03 08:15:21.517 1: Perfmon: possible freeze starting at 08:15:19, delay is 2.517
2015.05.03 08:16:24.515 1: Perfmon: possible freeze starting at 08:16:22, delay is 2.515
...just to let you know
/Uli
Zitat von: gitarero am 09 Oktober 2014, 18:29:23
Hallo zusammen.
Ich bin noch recht neu in der FHEM Welt. Und direkt habe ich eine relativ spezielle Frage zum XBMC Modul.
Und zwar wird die Maskierung meiner Leinwand über einen Rolladenschalter, welcher in FHEM konfiguriert ist, gesteuert.
Da ja das XBMC Modul auch diverse Readings zur Verfügung stellt, wäre es jetzt total super, wenn ich das Seitenverhätnis (16:9 oder 21:9) mit FHEM aus XBMC auslesen könnte und dann mit einem notify meine Maskierung automatisch fahren lassen könnte.
Im XBMC Modul werden die Videoinformationen ja mit VideoLibrary.GetMovieDetails ausgelesen. Hier gibt es unter properties den Eintrag "streamdetails". Darin ist "aspect" versteckt und somit genau die Information, welche ich bräuchte.
Ich habe die letzte Version des XBMC Moduls aus diesem Faden hier mal versucht anzupassen. Dazu habe ich in Zeile 350 "streamdetails" hinzugefügt.
"properties" => ["title","file","year","originaltitle","streamdetails"]
Das entsprechende Reading taucht auch auf. Allerdings kann man damit nichts anfangen.
"Streamdetails" liefert nochmal drei Arrays - "audio" , "subtitle" , "video". Wie bekomm ich das jetzt hin, die Streamdetails und dann das video-Array noch zu zerlegen, dass ich den Zahlenwert in den Readings habe?
Vielleicht noch was im WEBGUI von FHEM zu sehen ist:
streamdetails HASH(0x1877848)
Und was über die jsonlist von FHEM rauskommt:
"streamdetails": {
"TIME": "2014-10-09 18:16:00",
"VAL": {
"audio": "ARRAY",
"subtitle": "ARRAY",
"video": "ARRAY"
}
Vielleicht kann mir ja jemand von euch weiter helfen. Das wäre echt super!
Schonmal Danke und Grüße,
Ingo
Hallo,
hat zu diesem Thema schon jemand eine Lösung gefunden? Würde auch sehr gerne meine Leinwandmaskierung automatisieren...Eigentlich müsste ich nur als Ausgabe an die Aspect Ratio kommen...Dies ist in XBMC auch über JSON möglich. Um es zu vereinfachen bräuchte ich nur das ab einer Ratio von >2,3 die Maskierung runter fährt und beim Stoppen des Films wieder hoch...
Vielleicht hat ja schon jemand eine Lösung gefunden, wie man die Aspect Ratio auslesen kann?
Danke und LG
Zitat von: dev0 am 03 Mai 2015, 11:32:57
Mir ist folgendes Verhalten vom XBMC Modul aufgefallen: Wenn die XBMC Instanz, nach einem Neustart von FHEM, nicht erreicht werden kann, dann reagiert FHEM alle 60 Sekunden für ca. 2.5 Sekunden nicht mehr. War die Instanz nach dem letzten Neustart von FHEM einmal erreichbar, dann tritt der Effekt nicht mehr auf. Dieses Verhalten ist unabhängig vom Atrribut 'pingInterval'.
Klingt erstmal alles normal: Es wird alle 60 Sekunden versucht, eine Verbindung aufzubauen. Wenn XBMC nicht erreichbar ist, dass läuft FHEM in einen Connection-Timeout (2,5 Sek.). Du kannst das Attribut "fork" verwenden, um den Verbindungsaufbau in den Hintergrund zu verschieben.
@coyote8219
Kannst du dir bitte mal die angehängte Version angucken und testen? Die sollte jetzt alle streamdetails-Readings setzen (sd_*).
Hi,
super!!!! Vielen lieben Dank...jetzt zeigt er mir in der jsonlist, die aspect ratio an. Sahs schon die letzte halbe Nach daran... Hättest du vielleicht auch noch einen tip, wie ich einen notify aufbauen könnte welcher bei einer rati über 2,3 die Maskierung runterfährt und am Ende des Fils wieder hoch?
Am Ende des Film wäre es ja wahrscheinlich ziemlich einfach da ich film stopped dafür nutzen könnte und einfach immer den Befehl zum hochfahren standardmäßig auslösen könnte.
Wobei ich mich nun schwer tu, ist ein notify welches die jsonlist ausführt un in dieser den den aspect abfragt. Vor allem wäre es viel einfacher, einfach ab einem Wert über 2,3 immer auszulösen...
Vielleicht könntest Du mir hier auch noch einmal helfen?
Hatte mir gerade folgendes schon zusammengesucht, was aber leider nicht funktioniert:
# Aktion für Maskierung Down
define wz_MaskDown }\
# Wenn Wert größer als 2,3 ,dann schaltet FHEM die Maskierung
if(ReadingsVal('wz_XBMC', 'sd_video0aspect', 0) > 2.3) {\
fhem("set GPIO_22 on-for-timer 2")\
}\
Danke
Zitat von: vbs am 03 Mai 2015, 12:12:58
Du kannst das Attribut "fork" verwenden, um den Verbindungsaufbau in den Hintergrund zu verschieben.
Funktioniert, danke! Gibt es einen Grund warum diese Option konfigurierbar ist und nicht per default aktiviert ist?
So viel ich weiß, ist fork nicht auf allen Plattformen verfügbar bzw. kann wohl in Ausnahmefällen Probleme machen und darum ist es per default deaktiviert. Gibt sicherlich Leute, die da besser Bescheid wissen. Ein anderer, praktischer Grund ist, dass ich fork irgendwann nachträglich eingebaut habe und und es sich dann nicht "über Nacht" bei allen Usern anders verhalten sollte.
EDIT:
Ich hab gelogen, das stimmt so gar nicht: Ich hab das fork nicht eingebaut. Das war schon drin als ich das Modul übernommen habe. Ich hab das mit dem SamsungTV-Modul verwechselt, in das ich die Methode aus XBMC übernommen habe :/
@coyote8219:
Also für solche Trigger kannst du zB ein notify machen (oder auch DOIF). Mal aus dem Kopf gehackt (klappt wahrscheinlich nicht 1:1, aber ich hoffe du siehst, was gemeint ist):
define maskTriggerDown notify myXbmc:sd_video0_aspectratio { ($EVTPART1 > 2.3) ? FahreMaskierungRunter() : FahreMaskierungHoch() }
define maskTriggerUp notify myXbmc:playStatus { FahreMaskierungHoch() if ($EVTPART1 eq 'stopped') }
http://fhem.de/commandref_DE.html#notify
Evtl. sollte man auch nur auf playStatus "lauschen" und dann im Code aspectratio abfragen und darauf entsprechend reagieren. Bin aber nicht sicher, ob aspectration in dem Moment schon gesetzt ist. Muss man sicherlich etwas rumprobieren...
Hi,
habe die Zeilen probiert und es passiert leider nichts...
Habe das Gefühl das FHEM die Ratio nicht liest oder so... Probiere schon wieder seit drei Stunden rum. Gestern habe ich erst einen Freudentanz gemacht, als ich die AspectRatio sehen konnte...Und nun bekomm ich es schon wieder nicht gebacken :-/
Selbst der stopped Status löst den Befehl nicht aus...Aber im Event Manger wird alles von XBMC angezeigt, nur leider funktioniert das Auslesen anscheinend nicht...
define maskTriggerUp notify wz_XBMC:playStatus { FahreMaskierungHoch('set GPIO_27 on-for-timer 2') if ($EVTPART1 eq 'stopped') }
Gibt es den Befehl 'FahreMaskierungHoch' tatsächlich bei dir? Normale FHEM Befehle musst du ja absetzen mit zB
fhem("set gpio 2")
Hallo,
der Befehl für Maskierung hoch ist:
GPIO_22 on-for-timer 2
das mit fhem vor der Klammr habe ich auch probiert, aber leider ohne ERFOLG...
Das sind meine Befehle, welche ich momentan probiert habe :-/
define maskTriggerUp notify wz_XBMC:playStatus { fhem('set GPIO_27 on-for-timer 2') if ($EVTPART1 eq 'stopped') }
define maskTriggerDown notify wz_XBMC:sd_video0aspect { ($EVTPART1 > 2.3) ? fhem('set GPIO_22 on-for-timer 2') : fhem('set GPIO_27 on-for-timer 2') }
Also:
GPIO_27 ist zum hochfahren der Maskierung und GPIO_22 ist zum runterfahren...
Mein Ziel ist es das be 21:9 Filmen, bei welchen dann die Ratio über 2.3 ist die Maskierung runterfährt und beim Stoppen des Films wieder hoch...
Bei 16:9 Filmen soll sie einfach oben bleiben, da die Ratio unter 2.3 ist....
Naja es hilft alles nix. Du musst da etwas systematischer rangehen und dich ranarbeiten. Mach erstmal ein ganz simples notify ala:
define maskTriggerUp notify wz_XBMC:playStatus set meinLicht on
Wenn das klappt, dann zB
define maskTriggerUp notify wz_XBMC:playStatus { fhem("set meinLicht on") }
dann zB
define maskTriggerUp notify wz_XBMC:playStatus { fhem("set meinLicht on") if ($EVTPART1 eq 'stopped') }
usw. usw.
Dann kannst du dich Schritt für Schritt rantasten. Gleich den Endzustand zu probieren mit dem Ergebnis "geht nicht" bringt dich nicht so richtig weiter...
Außerdem ist ein Blick ins Logfile nützlich. Steht da was? Sieht das im EventMonitor ok aus? Alle notify-Geräte haben als state den Zeitpunkt, wann sie zuletzt getriggert wurden. Sieht man, dass sie überhaupt getriggert wurden?
selbst bei der ersten Zeile passiert nichts :-/
define maskTriggerUp notify wz_XBMC:playStatus set GPIO_22 on-for-timer 2
und hier ein kleiner Ausschnitt aus der Log-Datei:
2015.05.04 20:51:33 1: GPIO_22: entfernt
2015.05.04 20:51:33 1: GPIO_27: entfernt
2015.05.04 20:51:33 1: Including fhem.cfg
2015.05.04 20:51:33 3: telnetPort: port 7072 opened
2015.05.04 20:51:33 3: WEB: port 8083 opened
2015.05.04 20:51:33 3: WEBphone: port 8084 opened
2015.05.04 20:51:33 3: WEBtablet: port 8085 opened
2015.05.04 20:51:33 2: eventTypes: loaded 120 events from ./log/eventTypes.txt
2015.05.04 20:51:33 1: Including ./log/fhem.save
2015.05.04 20:51:34 1: 192.168.2.26:9090 reappeared (wz_XBMC)
2015.05.04 20:51:42 3: deletereading wz_XBMC sd_.* : Deleted reading sd_audio0codec for device wz_XBMC
Deleted reading sd_video0codec for device wz_XBMC
Deleted reading sd_audio0language for device wz_XBMC
Deleted reading sd_video0height for device wz_XBMC
Deleted reading sd_video0width for device wz_XBMC
Deleted reading sd_video0aspect for device wz_XBMC
Deleted reading sd_video0stereomode for device wz_XBMC
Deleted reading sd_audio0channels for device wz_XBMC
Deleted reading sd_video0duration for device wz_XBMC
2015.05.04 20:51:46 3: deletereading wz_XBMC sd_.* : Deleted reading sd_audio0codec for device wz_XBMC
Deleted reading sd_video0codec for device wz_XBMC
Deleted reading sd_audio0language for device wz_XBMC
Deleted reading sd_video0height for device wz_XBMC
Deleted reading sd_video0width for device wz_XBMC
Deleted reading sd_video0aspect for device wz_XBMC
Deleted reading sd_video0stereomode for device wz_XBMC
Deleted reading sd_audio0channels for device wz_XBMC
Deleted reading sd_video0duration for device wz_XBMC
Und bei State steht Active....
Zitat von: coyote8219 am 04 Mai 2015, 20:52:47
selbst bei der ersten Zeile passiert nichts :-/
define maskTriggerUp notify wz_XBMC:playStatus set GPIO_22 on-for-timer 2
und hier ein kleiner Ausschnitt aus der Log-Datei:
2015.05.04 20:51:33 1: GPIO_22: entfernt
2015.05.04 20:51:33 1: GPIO_27: entfernt
2015.05.04 20:51:33 1: Including fhem.cfg
2015.05.04 20:51:33 3: telnetPort: port 7072 opened
2015.05.04 20:51:33 3: WEB: port 8083 opened
2015.05.04 20:51:33 3: WEBphone: port 8084 opened
2015.05.04 20:51:33 3: WEBtablet: port 8085 opened
2015.05.04 20:51:33 2: eventTypes: loaded 120 events from ./log/eventTypes.txt
2015.05.04 20:51:33 1: Including ./log/fhem.save
2015.05.04 20:51:34 1: 192.168.2.26:9090 reappeared (wz_XBMC)
2015.05.04 20:51:42 3: deletereading wz_XBMC sd_.* : Deleted reading sd_audio0codec for device wz_XBMC
Deleted reading sd_video0codec for device wz_XBMC
Deleted reading sd_audio0language for device wz_XBMC
Deleted reading sd_video0height for device wz_XBMC
Deleted reading sd_video0width for device wz_XBMC
Deleted reading sd_video0aspect for device wz_XBMC
Deleted reading sd_video0stereomode for device wz_XBMC
Deleted reading sd_audio0channels for device wz_XBMC
Deleted reading sd_video0duration for device wz_XBMC
2015.05.04 20:51:46 3: deletereading wz_XBMC sd_.* : Deleted reading sd_audio0codec for device wz_XBMC
Deleted reading sd_video0codec for device wz_XBMC
Deleted reading sd_audio0language for device wz_XBMC
Deleted reading sd_video0height for device wz_XBMC
Deleted reading sd_video0width for device wz_XBMC
Deleted reading sd_video0aspect for device wz_XBMC
Deleted reading sd_video0stereomode for device wz_XBMC
Deleted reading sd_audio0channels for device wz_XBMC
Deleted reading sd_video0duration for device wz_XBMC
Und bei State steht Active....
Und gebe ich in der comand Zeile set GPIO_22 on-for-timer 2, schaltet das Relais auch...
Achso, ich glaub du musst noch zB .* anfügen:
define maskTriggerUp notify wz_XBMC:playStatus.* set meinLicht on
Super...Den Stop Befehl habe ich nun zum laufen gebracht...
Allerdings hänge ich nun bei der Ratio...
Das ist die letzt Config die funktioniert:
define maskTriggerDown notify wz_XBMC:sd_video0aspect.* { fhem("set GPIO_22 on-for-timer 2") }
sobald ich noch die Ratio reinpacke...geht es leider nicht mehr:
define maskTriggerDown notify wz_XBMC:sd_video0aspect.* { ($EVTPART1 > 2.3) ? fhem("set GPIO_22 on-for-timer 2") }
Muss da vielleicht noch ein READVALUE rein?
Den "?"-Operator kannst du so nicht benutzen, denk ich. Probier mal mehr so in der Art:
{ FahreMaskierungHoch() if ($EVTPART1 eq 'stopped') }
Habe es zum laufen gebracht...Hier für alle das Ergebnis, wenn sie auch eine Maskierung adden wollen:
Maskierung wieder hoch nach dem Film...
define maskTriggerUp notify wz_XBMC:playStatus.* { fhem("set GPIO_27 on-for-timer 2") if ($EVTPART1 eq 'stopped') }
Maskierung runter Film startet:
define maskTriggerDown notify wz_XBMC:sd_video0aspect.* { if( ReadingsVal("wz_XBMC","sd_video0aspect",0) > 2.3 ) { fhem "set GPIO_22 on-for-timer 2" } }
Nun habe ich nur noch das Problem, das wenn der Film in einer Playlist läuft nicht der maskTriggerDown getriggert wird...STop funktioniert bei jedem Trigger in der Playlist...Nur Maskierung runter löst nicht aus?
Habe schon das Problem gefunden...
Ich habe auf XBMC ein Programm laufen, welches Cinema Experience heisst. Dies bewirkt, das wie im richtigen Kino, beim starten des Films ein Kino Inro kommt, dann ein Trailer, dann ein Sound Intro und dann der richtige Film...
Das Problem hier ist nun, das am Ende vom Sound Intro das eine Relais schaltet (Maskierung runter für Stop), weil das Sound Intro ja gestoppt ist....Aber im gleichen Moment startet dann die Maskierung...sprich die Befehle überlagern sich...Gibt es ein Befehl mit dem ich set GPIO_22 on-for-timer mit 3 Sekunden verzögerung starten kann?
Edit: Auch hierfür habe ich die Lösung gefunden...Ich habe einen Sleep Befehl eingebaut:
define maskTriggerDown notify wz_XBMC:sd_video0aspect.* { if( ReadingsVal("wz_XBMC","sd_video0aspect",0) > 2.3 ) { fhem "sleep 3;; set GPIO_22 on-for-timer 2" } }
Fettes Danke an VBS!!!!!!!!
Ohne Deine Hilfe hätte das nicht geklappt :-)
Jetzt hätte ich aber noch eine Frage, da ja nun bei jedem stop das Relais schaltet. Gibt es vielleicht auch einen Status "0" für XBMC welchen ich abfragen könnte? Quasi das Relais für Maskierung hochfahren schaltet nur bei Status 0?
Am allerbesten wäre eigentlich eine Movie-Abfrage, bei der nur geschaltet wird wenn größer als 2.3 und nur dann am Ende bei Stop hochgefahren wird...Gibt es dafür einen Befehl:
notify videoaspect, wenn > 2.3, dann fahre Maskierung runter. Wurde Maskierung runter gefahren, fahre bei Stopp wieder hoch...
Also um es noch mal verständlicher zu machen möchte ich nun das folgenden notify in den anderen integrieren:
Der folgende Befehl:
define maskTriggerUp notify wz_XBMC:playStatus.* { fhem("set GPIO_27 on-for-timer 2") if ($EVTPART1 eq 'stopped') }
sol in den folgenden integriert werden, so dass am Ende des Film bei status "stopped" wieder hochgefahren wird...
define maskTriggerDown notify wz_XBMC:sd_video0aspect.* { if( ReadingsVal("wz_XBMC","sd_video0aspect",0) > 2.3 ) { fhem "sleep 3;; set GPIO_22 on-for-timer 2" } }
Wäre super cool, wenn mir jemand wieder einen Tip oder die Lösung geben könnte...Ist meine letzte Hürde, dann ist es perfekt...
Einen Dummy definieren, der beim Runterfahren auf on gesetzt wird, diesen beim Stopp abfragen und nach hochfahren wieder auf Off setzen.
Also den Dummy habe ich angelegt....
Der Dummy ist auch an bei MaskDown, aber wie muss ich den Befehl schreiben, das er bei MaskDown an ein Reading des playstatus macht und bei stopped den dummy auf aus setzt?
Im nächsten schritt müsste ich ja dann nur noch einen dummy setzen der bei status off die Maskierung hochfährt...
Ist mein Denkansatz so richtig?
Mein Problem ist, ich bekomme die Abhängigkeit nicht programmiert...
Also playstatus nur bei dummy an abfragen und dann bei stopped hochfahren...
Ich tu mich schwer if status dummy an und readingsval auslösen, welches dann wiederrum die Maskierung hochfahren soll bei einem bestimmten Status...Kann mir da vielleicht nochmal jemand helfen?
Hi,
heute ist mal wieder so ein seltsamer Tag wo ich plötzlich wieder den Log voll hab mit:
2015.05.05 16:11:10.500 1: 192.168.188.50:9090 disconnected, waiting to reappear (FireTV_Kodi)
2015.05.05 16:11:10.530 1: 192.168.188.50:9090 reappeared (FireTV_Kodi)
2015.05.05 16:13:10.579 3: Last ping (1430835130.57246) is greather than last pong (1430835070.55858)
2015.05.05 16:13:10.580 1: 192.168.188.50:9090 disconnected, waiting to reappear (FireTV_Kodi)
2015.05.05 16:13:10.612 1: 192.168.188.50:9090 reappeared (FireTV_Kodi)
2015.05.05 16:15:10.661 3: Last ping (1430835250.65526) is greather than last pong (1430835190.64145)
2015.05.05 16:15:10.662 1: 192.168.188.50:9090 disconnected, waiting to reappear (FireTV_Kodi)
2015.05.05 16:15:10.693 1: 192.168.188.50:9090 reappeared (FireTV_Kodi)
2015.05.05 16:17:10.739 3: Last ping (1430835370.73152) is greather than last pong (1430835310.72006)
2015.05.05 16:17:10.740 1: 192.168.188.50:9090 disconnected, waiting to reappear (FireTV_Kodi)
2015.05.05 16:17:10.766 1: 192.168.188.50:9090 reappeared (FireTV_Kodi)
2015.05.05 16:19:10.810 3: Last ping (1430835490.80364) is greather than last pong (1430835430.78782)
2015.05.05 16:19:10.811 1: 192.168.188.50:9090 disconnected, waiting to reappear (FireTV_Kodi)
2015.05.05 16:19:10.840 1: 192.168.188.50:9090 reappeared (FireTV_Kodi)
2015.05.05 16:21:10.882 3: Last ping (1430835610.87581) is greather than last pong (1430835550.8615)
2015.05.05 16:21:10.883 1: 192.168.188.50:9090 disconnected, waiting to reappear (FireTV_Kodi)
2015.05.05 16:21:10.912 1: 192.168.188.50:9090 reappeared (FireTV_Kodi)
2015.05.05 16:23:10.957 3: Last ping (1430835730.95031) is greather than last pong (1430835670.93383)
2015.05.05 16:23:10.958 1: 192.168.188.50:9090 disconnected, waiting to reappear (FireTV_Kodi)
2015.05.05 16:23:10.992 1: 192.168.188.50:9090 reappeared (FireTV_Kodi)
2015.05.05 16:25:11.045 3: Last ping (1430835851.03828) is greather than last pong (1430835791.02412)
2015.05.05 16:25:11.046 1: 192.168.188.50:9090 disconnected, waiting to reappear (FireTV_Kodi)
2015.05.05 16:25:11.074 1: 192.168.188.50:9090 reappeared (FireTV_Kodi)
Hatte jetzt eine ganze weile keine eine Meldung, jetzt plötzlich wieder, einer eine idee woran das liegen kann?
Vorab: Das XBMC Modul ist in meiner Installation wahrscheinlich das meistgenutzte. Vielen Dank dafür!
Ist es evtl. möglich beim Abspielen von MP3-Streams die currentArtist und currentTitle Readings mit den Infos aus dem Stream zu füllen? Aktuell ist sind alle current*-Readings leer, wenn ein Stream (zB http://www.rockantenne.de/webradio/channels/heavy-metal.m3u, aber jeder andere getestete ebenfalls) gespielt wird:
Readings:
2015-05-07 14:43:15 3dfile
2015-05-07 14:43:15 currentAlbum
2015-05-07 14:43:15 currentArtist
2015-05-07 14:43:15 currentMedia
2015-05-07 14:43:15 currentOriginaltitle
2015-05-07 14:43:15 currentShowtitle
2015-05-07 14:43:15 currentTitle
2015-05-07 14:43:15 currentTrack
2015-05-07 14:43:15 episode
2015-05-07 14:43:15 episodeid
2015-05-07 14:40:04 fullscreen off
2015-05-06 16:54:53 gui screensaverdeactivated
2015-05-07 14:43:15 label
2015-05-07 14:43:15 movieid
2015-05-07 14:43:05 mute off
2015-05-07 14:40:04 name Kodi
2015-05-07 14:51:11 partymode off
2015-05-07 14:51:11 playStatus playing
2015-05-07 14:43:15 playlist
2015-05-07 14:51:11 repeat all
2015-05-07 14:43:15 season
2015-05-07 14:51:11 shuffle off
2015-05-07 14:40:04 skin Confluence(skin.confluence)
2015-05-07 14:43:15 songid
2015-05-07 14:51:11 speed 1
2015-05-07 14:40:03 state opened
2015-05-07 14:40:04 system wake
2015-05-07 14:51:11 time 00:07:55.132
2015-05-07 14:51:11 totaltime 00:00:00.000
2015-05-07 14:43:15 type unknown
2015-05-07 14:40:04 version 14.2-7cc53a9 stable
2015-05-07 14:43:05 volume 70.00
2015-05-07 14:43:15 year
Im KODI-UI und in der Weboberfläche (Chorus) werden die Daten richtig angezeigt. Falls sie in einem Stream nicht "sauber getrennt" angeboten werden, wäre es vielleicht eine Option nur currentTitle und type zu befüllen. Ein zusätzliches Reading mit dem Stream-URL wäre natürlich reiner Luxus :)
Hallo nesges,
ein ähnliches anliegen hatte ich auch schon mal. Mir ging es eigentlich um die Lichtsteuerung wenn Musik per Stream abgespielt wird.
Bei mir kommt die leider per Airplay und somit ist der type auch unknown(wie bei deinem Stream).
Ich nehme an Kodi(bei mir Gotham) schreibt die Daten wie Interpret/Titel intern irgendwo anders weg und ich hab noch keine Lösung gefunden :(
btw: meiner Meinung nach guter Musik Geschmack, dein unten erwähnter Stream ist auch mein zweit liebster Stream ;)
@Tommy82:
Mach doch mal dort weiter, wo du letztes Mal aufgehört hast. Sprich: Gucken, ob das FireTV in dem Moment noch auf händische Anfragen reagiert, um zu gucken ob es an FireTV oder FHEM liegt.
@nesges:
Ich kann nicht genau sagen, ob das geht. Ich vermute aber ja.
Moin moin,
habe gerade mal ein wenig gestöbert und für XBMC folgende Seite gefunden:
http://kodi.wiki/view/InfoLabels (http://kodi.wiki/view/InfoLabels)
Da Kodi/XMBC ja bei einem (Audio)Stream Titel und Artist korrekt erkennt, könnte man evtl. mit diesen InfoLabels arbeiten um daraus die Informationen zu ziehen?
EDIT:
Habe mir das Modul gerade mal angeschaut und finde da das Attribut simpleEvents off in unserem Zusammenhang ganz interessant.
Auszug aus Dennis Modul:
# By default only simple events are created. You can activate complex events by adding the line "attr <XBMC_device> simpleEvents off" to your fhem.cfg. If
# complex events are activated, additional information are passed in the events. Currently this only concern the "<XBMC_device>:Player:.OnPlay" and
# "<XBMC_device>:Application:.OnVolumeChanged" events. In case of the "<XBMC_device>:Application:.OnVolumeChanged" event the information about the current
# volume is added. The complex event will look like "<XBMC_device>:Application:.OnVolumeChanged;volume:X" (X being the current volume).
# If XBMC plays a song the complex "<XBMC_device>:Player:.OnPlay" will look like "<XBMC_device>:Player:.OnPlay;artist:X;title:Y;album;Z" (X being the artist
# name, Y being the song title, Z being the album title).
Werde ich am Wochenende mal reinschauen was dann dort bei einem Audiostream zu finden ist.
Zitat von: Mephiston2K am 08 Mai 2015, 08:48:55
Habe mir das Modul gerade mal angeschaut und finde da das Attribut simpleEvents off in unserem Zusammenhang ganz interessant.
Wo hast du das gefunden? "simpleEvents" gibt's in meinem XBMC-Modul nicht - bzw. in meiner gesamten Fhem-Installation nicht ;)
Wer mag, kann das hier mal ausprobiert... ist ein Versuch...
Zitat von: vbs am 09 Mai 2015, 01:36:20
Wer mag, kann das hier mal ausprobiert... ist ein Versuch...
Was ist denn geändert? (bez. Streams stelle ich keine Änderung fest)
Wenns gut läuft sollten minutlich die Stream-Readings aktualisiert werden... Mag da aber noch Probleme geben.
Zitat von: vbs am 09 Mai 2015, 02:14:37
Wenns gut läuft sollten minutlich die Stream-Readings aktualisiert werden... Mag da aber noch Probleme geben.
Jetzt hab ich was gesehen :) Wenn man explizit Events erzeugt (zB Pause + Play) werden die Streaminfos jetzt in die Readings übernommen. Soweit funktioniert's also schonmal. Nur das automatische Update scheint noch nicht zu funktionieren (updateInterval 60 habe ich gesetzt).
Hallo,
Scheint bei meinem Gotham und Radio-Addon zu funktionieren. Auch ohne explizites Setzen des Intervalls.
Internals:
CHILDPID
DEF 192.168.178.20 tcp
DeviceName 192.168.178.20:9090
FD 57
Host 192.168.178.20
LAST_PING 1431135986
LAST_PONG 1431135986
NAME htpc
NR 51
PARTIAL
Port 9090
Protocol tcp
STATE opened
TYPE XBMC
Pendingevents:
154719
315968
388771
463078
631912
665054
799304
90583
945170
Pendingplayercmds:
128785
134293
139278
179329
234558
284575
351172
405750
493566
545772
699162
706789
796188
81633
880498
950180
Readings:
2015-05-09 03:46:26 3dfile off
2015-05-08 11:49:50 audiolibrary scanfinished
2015-05-09 03:46:26 currentAlbum
2015-05-09 03:46:26 currentArtist
2015-05-09 03:46:26 currentMedia http://pub10am.rockradio.com:80/rr_heavymetal
2015-05-09 02:02:19 currentOriginaltitle
2015-05-09 02:02:19 currentShowtitle
2015-05-09 03:46:26 currentTitle Mercyful Fate - Nightmare
2015-05-09 03:46:26 currentTrack 0
2015-05-09 02:02:19 episode
2015-05-09 02:02:19 episodeid
2015-05-09 03:40:27 fullscreen off
2015-01-20 19:30:59 gui screensaverdeactivated
2015-05-09 03:37:55 input inputfinished
2015-05-09 03:46:26 label Mercyful Fate - Nightmare
2015-05-09 02:02:19 movieid
2015-05-09 03:40:27 mute off
2015-05-09 03:40:27 name XBMC
2015-05-09 03:40:27 partymode off
2015-05-09 03:40:27 playStatus playing
2015-05-09 03:38:10 playlist add
2015-05-09 03:40:27 repeat off
2015-05-09 02:02:19 season
2015-05-09 03:40:27 shuffle off
2015-05-09 03:40:27 skin Confluence(skin.confluence)
2015-05-09 02:02:19 songid
2015-05-09 03:40:27 speed 1
2015-05-09 03:40:27 state opened
2015-05-09 03:40:27 system wake
2015-05-09 03:46:26 thumbnail
2015-05-09 03:40:27 time 00:00:00.293
2015-05-09 03:40:27 totaltime 00:00:00.000
2015-05-09 03:46:26 type song
2015-05-09 03:40:27 version 13.2-0f3db05 stable
2015-03-03 11:58:58 videolibrary scanfinished
2015-05-09 03:40:27 volume 39
2015-05-09 03:46:26 year 0
Attributes:
fork enable
pingInterval 60
room test,xbmc
Danke
Hans
Zitat von: nesges am 09 Mai 2015, 02:43:43
Jetzt hab ich was gesehen :) Wenn man explizit Events erzeugt (zB Pause + Play) werden die Streaminfos jetzt in die Readings übernommen. Soweit funktioniert's also schonmal. Nur das automatische Update scheint noch nicht zu funktionieren (updateInterval 60 habe ich gesetzt).
Hm, Readings erscheinen erst mit dem nächsten Play/Pause? Meinst du im Browser? Automatisch werden die ja nur geupdatet, wenn du für die Readings ein Event erzeugt wird. Ist das bei dir evtl. nicht der Fall (event-on-change/event-on-update)? Schonmal versucht, im Browser F5 zu drücken?
Könntest du mal bitte ein verbose5-Log posten, wenn das minütliche Updaten nicht klappt? Das Attribut updateInterval ersetzt übrigens das vorherige pingInterval und muss nicht explizit gesetzt werden. 60 Sekunden ist dann default.
Hier nochmal eine Variante mit ein paar neuen Features:
- OnSeek/OnSpeedChange/onPropertyChange werden ausgewertet und als Reading/Event bereit gestellt
- es wird im updateInterval der Player gefragt (zb für aktuelle Abspielposition). Man könnte jetzt also bspw. 5 Minute vor Filmende anfangen, das Licht hochzudimmen
Ist aber sicherlich weiterhin als experimentell einzustufen... :P
Zitat von: vbs am 09 Mai 2015, 10:43:51
Hm, Readings erscheinen erst mit dem nächsten Play/Pause? Meinst du im Browser? Automatisch werden die ja nur geupdatet, wenn du für die Readings ein Event erzeugt wird. Ist das bei dir evtl. nicht der Fall (event-on-change/event-on-update)? Schonmal versucht, im Browser F5 zu drücken?
Das hier wird eine der berühmten "der User erzählt irgendwas, was so gar nicht sein kann" - weil ich selbst nicht verstehe warum's jetzt funktioniert und was heute Nacht anders war. Wahrscheinlich Müdigkeit meinerseits, denn es funktioniert einwandfrei. Vielen Dank!
Doch doch, ich glaub das schon. Und ich befürchte auch, dass es irgendwann wieder auftreten wird... ist erstmal gut, dass es im Moment geht, aber sag ruhig Bescheid, wenn es wieder so weit ist.
Zitat von: vbs am 07 Mai 2015, 18:25:37
@Tommy82:
Mach doch mal dort weiter, wo du letztes Mal aufgehört hast. Sprich: Gucken, ob das FireTV in dem Moment noch auf händische Anfragen reagiert, um zu gucken ob es an FireTV oder FHEM liegt.
Hi, ich kann sowohl über die Fernbedienung wie auch über z.b. das AFTV Utility auf den AFTV zugreifen , und dorrt auch auf Kodi ohne probleme
Ich meinte auch eher JSON-Anfragen. Guck doch bitte nochmal in die Posts vom letzten Mal zu dem Thema von dir und mir. Das Aftv sagt mir leider nichts. Ich würde JSON-Anfragen über Telnet vorschlagen.
Sent from my tablet
Zitat von: siggi85 am 01 Dezember 2014, 12:17:09
Es existieren noch keine Readings für PVR, es liegt also nicht an dir. ;)
Die Tatsache, dass beim Starten einer neuen Wiedergabe die Readings von alten Wiedergaben bestehen bleiben ist ein Punkt, welcher im Modul noch geändert werden müsste. Normalerweise sollten die Readings "showtitle" oder "musicvideoid" verschwinden, wenn zB ein Film (type=movie) gestartet wird.
Ich habe mich da mal dran probiert, aber habe es auf Anhieb nicht hinbekommen. Wenn sich hier mal ein richtiger Entwickler ransetzen würde, wäre das klasse. :)
Hat sich in der Zwischenzeit etwas veraendert? Interessanterweise veraendert sich der Status beim Start eines Fernsehsenders von stopped auf paused (anstatt playing). Was mich zusaetzlich irritiert, warum mein Watchdog
wz_xbmc_status:stopped 00:30 wz_xbmc_status:playing { fhem("trigger entertainment_notify_night__off; set entertainment off; set pioneer off; setstate watchdog_wz_xbmc defined") }
Nach einer halben Stunde trotzdem zuschlaegt? Eigentlich soll der nur ausgefuehrt werden wenn der Status eine halbe Stunde lang auf stopped steht, wird aber auch ausgefuehrt wenn PVR eine halbe Stunde laeuft.
Kann mir hier jemand auf die Spruenge helfen? :)
Auf alle Fälle ist der richtige Befehl für das Resetten des Watchdogs
trigger watchdog_wz_xbmc .
und nicht setstate
Für eine Beurteilung, solltest Du den kompletten Watchdog-Code aus der fhem.cfg (inkl. Attribute) hier posten.
Ich danke Dir!
Keine Ahnung woher ich diese Syntax hatte, habe es jedenfalls geaendert und schon klappt es auch so wie es soll, zumindest das watchdog nur noch anschlaegt wenn der Status eine halbe Stunde lang auf stop steht.
Bleibt allerdings immer noch die Baustelle das der PVR den Status paused zurueckliefert anstatt playing. Der Status scheint aber ja grundsaetzlich schon richtig vom Mediacenter gesendet zu werden, sonst wuerde yatse als Fernbedienung ja nicht auf den Status play umspringen. Ich ueberlege mal ob ich dem irgendwie auf die Spur kommen kann.
Pragmatisch könntest Du das evtl. mit so etwas umgehen:
wz_xbmc_status:(playing|paused)
Ha!
Ich wollte grade schreiben das es nicht geht, da kam mir doch noch die Eingebung. Wenn type movie oder episode, dann mach bei playing das Licht aus, bei paused das Licht an. Wenn der typ null ist, dann mach bei status paused das Licht aus.
wz_KODI:playStatus.* { if ((ReadingsVal("wz_KODI", "type", "") eq "episode") || (ReadingsVal("wz_KODI", "type", "") eq "movie")){
if (ReadingsVal("wz_KODI", "playStatus", "") eq "playing"){
fhem("trigger LightAll off");
}
if (ReadingsVal("wz_KODI", "playStatus", "") eq "paused"){
fhem("trigger LightMedia");
}
}
}
{ if ((ReadingsVal("wz_KODI", "type", "") eq "")){
if (ReadingsVal("wz_KODI", "playStatus", "") eq "paused"){
fhem("trigger LightAll off;");
}
}
}
Danke fuer die Eingebung :D
Hallo,
Habe nach heutigem Update:
Zitatunknown attribute updateInterval
Ist es entfallen?
Gruß
Hans
Ich vermute mal, dass du die Version hier aus dem Thread getestet hast du nun per Update auf die SVN-Version downgegradet hast? Da ist updateInterval noch nicht drin und heißt noch pingInterval.
Alles klar. Danke
Gruß
Hans
Hallo
Die letzte Version führt bei mir sporadisch zu folgenden Logeinträgen im Sekundentakt bis fhem abstürzt:
Zitat2015.05.24 19:43:10 3: Last ping (1432489390) is greather than last pong (1432489328)
2015.05.24 19:43:10 1: 192.168.178.51:9090 disconnected, waiting to reappear (htpc_zotac)
2015.05.24 19:43:10 1: 192.168.178.51:9090 reappeared (htpc_zotac)
Die Ursache habe ich noch nicht erkannt. Kodi (oder Gotham auf einem anderen Rechner) laufen währenddessen störungslos.
Gruß
Hans
Hm, könntest du da bitte mal ein Log mit verbose 5 von erstellen? Bist du sicher, dass das jetzt erst mit der letzten Version auftritt? Ich habe den Stand passenderweise auch gerade heute Nachmittag eingecheckt :/
Hallo
Ganz sicher bin ich mir nicht. Habe es nur vorher nie gesehen.
Werde versuchen es zu provozieren.
Gruß
Hans
Edit:
Nach einem harten kill und Neustart von Gotham:
2015.05.25 11:39:30 1: 192.168.178.20:9090 reappeared (htpc)
2015.05.25 11:39:30 5: XBMC_Call: Sending: {"id":930538,"jsonrpc":"2.0","params":{"properties":["volume","muted","name","version"]},"method":"Application.GetProperties"}
2015.05.25 11:39:30 5: SW: 7b226964223a3933303533382c226a736f6e727063223a22322e30222c22706172616d73223a7b2270726f70657274696573223a5b22766f6c756d65222c226d75746564222c226e616d65222c2276657273696f6e225d7d2c226d6574686f64223a224170706c69636174696f6e2e47657450726f70657274696573227d
2015.05.25 11:39:30 5: XBMC_Call: Sending: {"params":{"properties":["skin","fullscreen"]},"jsonrpc":"2.0","id":372148,"method":"GUI.GetProperties"}
2015.05.25 11:39:30 5: SW: 7b22706172616d73223a7b2270726f70657274696573223a5b22736b696e222c2266756c6c73637265656e225d7d2c226a736f6e727063223a22322e30222c226964223a3337323134382c226d6574686f64223a224755492e47657450726f70657274696573227d
2015.05.25 11:39:30 5: XBMC_Call: Sending: {"method":"Player.GetActivePlayers","id":"618304","jsonrpc":"2.0"}
2015.05.25 11:39:30 5: SW: 7b226d6574686f64223a22506c617965722e476574416374697665506c6179657273222c226964223a22363138333034222c226a736f6e727063223a22322e30227d
2015.05.25 11:39:30 5: XBMC_ProcessRead
2015.05.25 11:39:30 5: No PARTIAL buffer
2015.05.25 11:39:30 5: XBMC_Read: Incoming data: {"id":930538,"jsonrpc":"2.0","result":{"muted":false,"name":"XBMC","version":{"major":13,"minor":2,"revision":"0f3db05","tag":"stable"},"volume":40}}{"id":372148,"jsonrpc":"2.0","result":{"fullscreen":false,"skin":{"id":"skin.confluence","name":"Confluence"}}}{"id":"618304","jsonrpc":"2.0","result":[]}
2015.05.25 11:39:30 4: XBMC_Read: Current processing buffer (PARTIAL + incoming data): {"id":930538,"jsonrpc":"2.0","result":{"muted":false,"name":"XBMC","version":{"major":13,"minor":2,"revision":"0f3db05","tag":"stable"},"volume":40}}{"id":372148,"jsonrpc":"2.0","result":{"fullscreen":false,"skin":{"id":"skin.confluence","name":"Confluence"}}}{"id":"618304","jsonrpc":"2.0","result":[]}
2015.05.25 11:39:30 4: XBMC_Read: Decoding JSON message. Length: 149 Content: {"id":930538,"jsonrpc":"2.0","result":{"muted":false,"name":"XBMC","version":{"major":13,"minor":2,"revision":"0f3db05","tag":"stable"},"volume":40}}
2015.05.25 11:39:30 4: XBMC_Read: Decoding JSON message. Length: 111 Content: {"id":372148,"jsonrpc":"2.0","result":{"fullscreen":false,"skin":{"id":"skin.confluence","name":"Confluence"}}}
2015.05.25 11:39:30 4: XBMC_Read: Decoding JSON message. Length: 43 Content: {"id":"618304","jsonrpc":"2.0","result":[]}
2015.05.25 11:39:30 5: XBMC_Read: Tail:
2015.05.25 11:39:30 5: XBMC_Read: PARTIAL:
2015.05.25 11:39:37 5: SW: 7b226a736f6e727063223a22322e30222c226964223a3638393233312c226d6574686f64223a224a534f4e5250432e50696e67227d
2015.05.25 11:39:37 3: Last ping (1432546777) is greather than last pong (1432546770)
2015.05.25 11:39:37 1: 192.168.178.20:9090 disconnected, waiting to reappear (htpc)
2015.05.25 11:39:42 1: 192.168.178.20:9090 reappeared (htpc)
2015.05.25 11:39:47 1: 192.168.178.20:9090 reappeared (htpc)
2015.05.25 11:39:48 1: 192.168.178.20:9090 reappeared (htpc)
2015.05.25 11:39:48 5: XBMC_Call: Sending: {"method":"Application.GetProperties","id":174233,"jsonrpc":"2.0","params":{"properties":["volume","muted","name","version"]}}
2015.05.25 11:39:48 5: SW: 7b226d6574686f64223a224170706c69636174696f6e2e47657450726f70657274696573222c226964223a3137343233332c226a736f6e727063223a22322e30222c22706172616d73223a7b2270726f70657274696573223a5b22766f6c756d65222c226d75746564222c226e616d65222c2276657273696f6e225d7d7d
2015.05.25 11:39:48 5: XBMC_Call: Sending: {"method":"GUI.GetProperties","params":{"properties":["skin","fullscreen"]},"jsonrpc":"2.0","id":376164}
2015.05.25 11:39:48 5: SW: 7b226d6574686f64223a224755492e47657450726f70657274696573222c22706172616d73223a7b2270726f70657274696573223a5b22736b696e222c2266756c6c73637265656e225d7d2c226a736f6e727063223a22322e30222c226964223a3337363136347d
2015.05.25 11:39:48 5: XBMC_Call: Sending: {"method":"Player.GetActivePlayers","jsonrpc":"2.0","id":"968498"}
2015.05.25 11:39:48 5: SW: 7b226d6574686f64223a22506c617965722e476574416374697665506c6179657273222c226a736f6e727063223a22322e30222c226964223a22393638343938227d
2015.05.25 11:39:48 5: XBMC_ProcessRead
2015.05.25 11:39:48 5: No PARTIAL buffer
2015.05.25 11:39:48 5: XBMC_Read: Incoming data: {"id":174233,"jsonrpc":"2.0","result":{"muted":false,"name":"XBMC","version":{"major":13,"minor":2,"revision":"0f3db05","tag":"stable"},"volume":40}}{"id":376164,"jsonrpc":"2.0","result":{"fullscreen":false,"skin":{"id":"skin.confluence","name":"Confluence"}}}{"id":"968498","jsonrpc":"2.0","result":[]}
2015.05.25 11:39:48 4: XBMC_Read: Current processing buffer (PARTIAL + incoming data): {"id":174233,"jsonrpc":"2.0","result":{"muted":false,"name":"XBMC","version":{"major":13,"minor":2,"revision":"0f3db05","tag":"stable"},"volume":40}}{"id":376164,"jsonrpc":"2.0","result":{"fullscreen":false,"skin":{"id":"skin.confluence","name":"Confluence"}}}{"id":"968498","jsonrpc":"2.0","result":[]}
2015.05.25 11:39:48 4: XBMC_Read: Decoding JSON message. Length: 149 Content: {"id":174233,"jsonrpc":"2.0","result":{"muted":false,"name":"XBMC","version":{"major":13,"minor":2,"revision":"0f3db05","tag":"stable"},"volume":40}}
2015.05.25 11:39:48 4: XBMC_Read: Decoding JSON message. Length: 111 Content: {"id":376164,"jsonrpc":"2.0","result":{"fullscreen":false,"skin":{"id":"skin.confluence","name":"Confluence"}}}
2015.05.25 11:39:48 4: XBMC_Read: Decoding JSON message. Length: 43 Content: {"id":"968498","jsonrpc":"2.0","result":[]}
2015.05.25 11:39:48 5: XBMC_Read: Tail:
2015.05.25 11:39:48 5: XBMC_Read: PARTIAL:
2015.05.25 11:39:58 5: SW: 7b226d6574686f64223a224a534f4e5250432e50696e67222c226a736f6e727063223a22322e30222c226964223a3831313636367d
2015.05.25 11:39:58 3: Last ping (1432546798) is greather than last pong (1432546788)
2015.05.25 11:39:58 1: 192.168.178.20:9090 disconnected, waiting to reappear (htpc)
2015.05.25 11:40:03 1: 192.168.178.20:9090 reappeared (htpc)
2015.05.25 11:40:04 1: 192.168.178.20:9090 reappeared (htpc)
2015.05.25 11:40:06 1: 192.168.178.20:9090 reappeared (htpc)
2015.05.25 11:40:06 5: XBMC_Call: Sending: {"method":"Application.GetProperties","jsonrpc":"2.0","params":{"properties":["volume","muted","name","version"]},"id":673675}
2015.05.25 11:40:06 5: SW: 7b226d6574686f64223a224170706c69636174696f6e2e47657450726f70657274696573222c226a736f6e727063223a22322e30222c22706172616d73223a7b2270726f70657274696573223a5b22766f6c756d65222c226d75746564222c226e616d65222c2276657273696f6e225d7d2c226964223a3637333637357d
2015.05.25 11:40:06 5: XBMC_Call: Sending: {"method":"GUI.GetProperties","id":404620,"params":{"properties":["skin","fullscreen"]},"jsonrpc":"2.0"}
2015.05.25 11:40:06 5: SW: 7b226d6574686f64223a224755492e47657450726f70657274696573222c226964223a3430343632302c22706172616d73223a7b2270726f70657274696573223a5b22736b696e222c2266756c6c73637265656e225d7d2c226a736f6e727063223a22322e30227d
2015.05.25 11:40:06 5: XBMC_Call: Sending: {"jsonrpc":"2.0","id":"4713","method":"Player.GetActivePlayers"}
2015.05.25 11:40:06 5: SW: 7b226a736f6e727063223a22322e30222c226964223a2234373133222c226d6574686f64223a22506c617965722e476574416374697665506c6179657273227d
2015.05.25 11:40:06 5: XBMC_ProcessRead
2015.05.25 11:40:06 5: No PARTIAL buffer
2015.05.25 11:40:06 5: XBMC_Read: Incoming data: {"id":673675,"jsonrpc":"2.0","result":{"muted":false,"name":"XBMC","version":{"major":13,"minor":2,"revision":"0f3db05","tag":"stable"},"volume":40}}{"id":404620,"jsonrpc":"2.0","result":{"fullscreen":false,"skin":{"id":"skin.confluence","name":"Confluence"}}}{"id":"4713","jsonrpc":"2.0","result":[]}
2015.05.25 11:40:06 4: XBMC_Read: Current processing buffer (PARTIAL + incoming data): {"id":673675,"jsonrpc":"2.0","result":{"muted":false,"name":"XBMC","version":{"major":13,"minor":2,"revision":"0f3db05","tag":"stable"},"volume":40}}{"id":404620,"jsonrpc":"2.0","result":{"fullscreen":false,"skin":{"id":"skin.confluence","name":"Confluence"}}}{"id":"4713","jsonrpc":"2.0","result":[]}
2015.05.25 11:40:06 4: XBMC_Read: Decoding JSON message. Length: 149 Content: {"id":673675,"jsonrpc":"2.0","result":{"muted":false,"name":"XBMC","version":{"major":13,"minor":2,"revision":"0f3db05","tag":"stable"},"volume":40}}
2015.05.25 11:40:06 4: XBMC_Read: Decoding JSON message. Length: 111 Content: {"id":404620,"jsonrpc":"2.0","result":{"fullscreen":false,"skin":{"id":"skin.confluence","name":"Confluence"}}}
2015.05.25 11:40:06 4: XBMC_Read: Decoding JSON message. Length: 41 Content: {"id":"4713","jsonrpc":"2.0","result":[]}
2015.05.25 11:40:06 5: XBMC_Read: Tail:
2015.05.25 11:40:06 5: XBMC_Read: PARTIAL:
2015.05.25 11:40:27 5: SW: 7b226964223a3534353533382c226a736f6e727063223a22322e30222c226d6574686f64223a224a534f4e5250432e50696e67227d
2015.05.25 11:40:27 3: Last ping (1432546827) is greather than last pong (1432546806)
2015.05.25 11:40:27 1: 192.168.178.20:9090 disconnected, waiting to reappear (htpc)
2015.05.25 11:40:32 1: 192.168.178.20:9090 reappeared (htpc)
2015.05.25 11:40:35 1: 192.168.178.20:9090 reappeared (htpc)
2015.05.25 11:40:37 1: 192.168.178.20:9090 reappeared (htpc)
2015.05.25 11:40:37 5: XBMC_Call: Sending: {"method":"Application.GetProperties","jsonrpc":"2.0","params":{"properties":["volume","muted","name","version"]},"id":416657}
2015.05.25 11:40:37 5: SW: 7b226d6574686f64223a224170706c69636174696f6e2e47657450726f70657274696573222c226a736f6e727063223a22322e30222c22706172616d73223a7b2270726f70657274696573223a5b22766f6c756d65222c226d75746564222c226e616d65222c2276657273696f6e225d7d2c226964223a3431363635377d
2015.05.25 11:40:37 5: XBMC_Call: Sending: {"id":37139,"jsonrpc":"2.0","params":{"properties":["skin","fullscreen"]},"method":"GUI.GetProperties"}
2015.05.25 11:40:37 5: SW: 7b226964223a33373133392c226a736f6e727063223a22322e30222c22706172616d73223a7b2270726f70657274696573223a5b22736b696e222c2266756c6c73637265656e225d7d2c226d6574686f64223a224755492e47657450726f70657274696573227d
2015.05.25 11:40:37 5: XBMC_Call: Sending: {"jsonrpc":"2.0","id":"736663","method":"Player.GetActivePlayers"}
2015.05.25 11:40:37 5: SW: 7b226a736f6e727063223a22322e30222c226964223a22373336363633222c226d6574686f64223a22506c617965722e476574416374697665506c6179657273227d
2015.05.25 11:40:37 5: SW: 7b226d6574686f64223a224a534f4e5250432e50696e67222c226964223a37373038332c226a736f6e727063223a22322e30227d
2015.05.25 11:40:37 5: SW: 7b226d6574686f64223a224a534f4e5250432e50696e67222c226a736f6e727063223a22322e30222c226964223a3837363639347d
2015.05.25 11:40:37 5: SW: 7b226964223a3632343138372c226a736f6e727063223a22322e30222c226d6574686f64223a224a534f4e5250432e50696e67227d
2015.05.25 11:40:37 5: SW: 7b226a736f6e727063223a22322e30222c226964223a3138333737372c226d6574686f64223a224a534f4e5250432e50696e67227d
2015.05.25 11:40:37 5: SW: 7b226d6574686f64223a224a534f4e5250432e50696e67222c226964223a3234353337352c226a736f6e727063223a22322e30227d
2015.05.25 11:40:37 5: XBMC_ProcessRead
2015.05.25 11:40:37 5: No PARTIAL buffer
2015.05.25 11:40:37 5: XBMC_Read: Incoming data: {"id":416657,"jsonrpc":"2.0","result":{"muted":false,"name":"XBMC","version":{"major":13,"minor":2,"revision":"0f3db05","tag":"stable"},"volume":40}}{"id":37139,"jsonrpc":"2.0","result":{"fullscreen":false,"skin":{"id":"skin.confluence","name":"Confluence"}}}{"id":"736663","jsonrpc":"2.0","result":[]}{"id":77083,"jsonrpc":"2.0","result":"pong"}{"id":876694,"jsonrpc":"2.0","result":"pong"}{"id":624187,"jsonrpc":"2.0","result":"pong"}{"id":183777,"jsonrpc":"2.0","result":"pong"}{"id":245375,"jsonrpc":"2.0","result":"pong"}
2015.05.25 11:40:37 4: XBMC_Read: Current processing buffer (PARTIAL + incoming data): {"id":416657,"jsonrpc":"2.0","result":{"muted":false,"name":"XBMC","version":{"major":13,"minor":2,"revision":"0f3db05","tag":"stable"},"volume":40}}{"id":37139,"jsonrpc":"2.0","result":{"fullscreen":false,"skin":{"id":"skin.confluence","name":"Confluence"}}}{"id":"736663","jsonrpc":"2.0","result":[]}{"id":77083,"jsonrpc":"2.0","result":"pong"}{"id":876694,"jsonrpc":"2.0","result":"pong"}{"id":624187,"jsonrpc":"2.0","result":"pong"}{"id":183777,"jsonrpc":"2.0","result":"pong"}{"id":245375,"jsonrpc":"2.0","result":"pong"}
2015.05.25 11:40:37 4: XBMC_Read: Decoding JSON message. Length: 149 Content: {"id":416657,"jsonrpc":"2.0","result":{"muted":false,"name":"XBMC","version":{"major":13,"minor":2,"revision":"0f3db05","tag":"stable"},"volume":40}}
2015.05.25 11:40:37 4: XBMC_Read: Decoding JSON message. Length: 110 Content: {"id":37139,"jsonrpc":"2.0","result":{"fullscreen":false,"skin":{"id":"skin.confluence","name":"Confluence"}}}
2015.05.25 11:40:37 4: XBMC_Read: Decoding JSON message. Length: 43 Content: {"id":"736663","jsonrpc":"2.0","result":[]}
2015.05.25 11:40:37 4: XBMC_Read: Decoding JSON message. Length: 44 Content: {"id":77083,"jsonrpc":"2.0","result":"pong"}
2015.05.25 11:40:37 4: XBMC_Read: Decoding JSON message. Length: 45 Content: {"id":876694,"jsonrpc":"2.0","result":"pong"}
2015.05.25 11:40:37 4: XBMC_Read: Decoding JSON message. Length: 45 Content: {"id":624187,"jsonrpc":"2.0","result":"pong"}
2015.05.25 11:40:37 4: XBMC_Read: Decoding JSON message. Length: 45 Content: {"id":183777,"jsonrpc":"2.0","result":"pong"}
2015.05.25 11:40:37 4: XBMC_Read: Decoding JSON message. Length: 45 Content: {"id":245375,"jsonrpc":"2.0","result":"pong"}
2015.05.25 11:40:37 5: XBMC_Read: Tail:
2015.05.25 11:40:37 5: XBMC_Read: PARTIAL:
2015.05.25 11:40:48 5: SW: 7b226a736f6e727063223a22322e30222c226964223a3337333938332c226d6574686f64223a224a534f4e5250432e50696e67227d
2015.05.25 11:40:48 5: XBMC_ProcessRead
2015.05.25 11:40:48 5: No PARTIAL buffer
2015.05.25 11:40:48 5: XBMC_Read: Incoming data: {"id":373983,"jsonrpc":"2.0","result":"pong"}
2015.05.25 11:40:48 4: XBMC_Read: Current processing buffer (PARTIAL + incoming data): {"id":373983,"jsonrpc":"2.0","result":"pong"}
2015.05.25 11:40:48 4: XBMC_Read: Decoding JSON message. Length: 45 Content: {"id":373983,"jsonrpc":"2.0","result":"pong"}
2015.05.25 11:40:48 5: XBMC_Read: Tail:
2015.05.25 11:40:48 5: XBMC_Read: PARTIAL:
2015.05.25 11:41:00 5: SW: 7b226a736f6e727063223a22322e30222c226964223a3231373536342c226d6574686f64223a224a534f4e5250432e50696e67227d
2015.05.25 11:41:00 3: Last ping (1432546860) is greather than last pong (1432546848)
2015.05.25 11:41:00 1: 192.168.178.20:9090 disconnected, waiting to reappear (htpc)
2015.05.25 11:41:05 1: 192.168.178.20:9090 reappeared (htpc)
2015.05.25 11:41:06 1: 192.168.178.20:9090 reappeared (htpc)
2015.05.25 11:41:09 1: 192.168.178.20:9090 reappeared (htpc)
2015.05.25 11:41:09 5: XBMC_Call: Sending: {"method":"Application.GetProperties","jsonrpc":"2.0","params":{"properties":["volume","muted","name","version"]},"id":734075}
2015.05.25 11:41:09 5: SW: 7b226d6574686f64223a224170706c69636174696f6e2e47657450726f70657274696573222c226a736f6e727063223a22322e30222c22706172616d73223a7b2270726f70657274696573223a5b22766f6c756d65222c226d75746564222c226e616d65222c2276657273696f6e225d7d2c226964223a3733343037357d
2015.05.25 11:41:09 5: XBMC_Call: Sending: {"jsonrpc":"2.0","params":{"properties":["skin","fullscreen"]},"id":667280,"method":"GUI.GetProperties"}
2015.05.25 11:41:09 5: SW: 7b226a736f6e727063223a22322e30222c22706172616d73223a7b2270726f70657274696573223a5b22736b696e222c2266756c6c73637265656e225d7d2c226964223a3636373238302c226d6574686f64223a224755492e47657450726f70657274696573227d
2015.05.25 11:41:09 5: XBMC_Call: Sending: {"method":"Player.GetActivePlayers","jsonrpc":"2.0","id":"292263"}
2015.05.25 11:41:09 5: SW: 7b226d6574686f64223a22506c617965722e476574416374697665506c6179657273222c226a736f6e727063223a22322e30222c226964223a22323932323633227d
2015.05.25 11:41:09 5: XBMC_ProcessRead
2015.05.25 11:41:09 5: No PARTIAL buffer
2015.05.25 11:41:09 5: XBMC_Read: Incoming data: {"id":734075,"jsonrpc":"2.0","result":{"muted":false,"name":"XBMC","version":{"major":13,"minor":2,"revision":"0f3db05","tag":"stable"},"volume":40}}{"id":667280,"jsonrpc":"2.0","result":{"fullscreen":false,"skin":{"id":"skin.confluence","name":"Confluence"}}}{"id":"292263","jsonrpc":"2.0","result":[]}
2015.05.25 11:41:09 4: XBMC_Read: Current processing buffer (PARTIAL + incoming data): {"id":734075,"jsonrpc":"2.0","result":{"muted":false,"name":"XBMC","version":{"major":13,"minor":2,"revision":"0f3db05","tag":"stable"},"volume":40}}{"id":667280,"jsonrpc":"2.0","result":{"fullscreen":false,"skin":{"id":"skin.confluence","name":"Confluence"}}}{"id":"292263","jsonrpc":"2.0","result":[]}
2015.05.25 11:41:09 4: XBMC_Read: Decoding JSON message. Length: 149 Content: {"id":734075,"jsonrpc":"2.0","result":{"muted":false,"name":"XBMC","version":{"major":13,"minor":2,"revision":"0f3db05","tag":"stable"},"volume":40}}
2015.05.25 11:41:09 4: XBMC_Read: Decoding JSON message. Length: 111 Content: {"id":667280,"jsonrpc":"2.0","result":{"fullscreen":false,"skin":{"id":"skin.confluence","name":"Confluence"}}}
2015.05.25 11:41:09 4: XBMC_Read: Decoding JSON message. Length: 43 Content: {"id":"292263","jsonrpc":"2.0","result":[]}
2015.05.25 11:41:09 5: XBMC_Read: Tail:
2015.05.25 11:41:09 5: XBMC_Read: PARTIAL:
2015.05.25 11:41:30 5: SW: 7b226a736f6e727063223a22322e30222c226964223a3934393531312c226d6574686f64223a224a534f4e5250432e50696e67227d
2015.05.25 11:41:30 3: Last ping (1432546890) is greather than last pong (1432546869)
2015.05.25 11:41:30 1: 192.168.178.20:9090 disconnected, waiting to reappear (htpc)
2015.05.25 11:41:35 1: 192.168.178.20:9090 reappeared (htpc)
2015.05.25 11:41:37 1: 192.168.178.20:9090 reappeared (htpc)
2015.05.25 11:41:42 1: 192.168.178.20:9090 reappeared (htpc)
2015.05.25 11:41:42 5: XBMC_Call: Sending: {"id":181967,"params":{"properties":["volume","muted","name","version"]},"jsonrpc":"2.0","method":"Application.GetProperties"}
2015.05.25 11:41:42 5: SW: 7b226964223a3138313936372c22706172616d73223a7b2270726f70657274696573223a5b22766f6c756d65222c226d75746564222c226e616d65222c2276657273696f6e225d7d2c226a736f6e727063223a22322e30222c226d6574686f64223a224170706c69636174696f6e2e47657450726f70657274696573227d
2015.05.25 11:41:42 5: XBMC_Call: Sending: {"method":"GUI.GetProperties","id":762532,"params":{"properties":["skin","fullscreen"]},"jsonrpc":"2.0"}
2015.05.25 11:41:42 5: SW: 7b226d6574686f64223a224755492e47657450726f70657274696573222c226964223a3736323533322c22706172616d73223a7b2270726f70657274696573223a5b22736b696e222c2266756c6c73637265656e225d7d2c226a736f6e727063223a22322e30227d
2015.05.25 11:41:42 5: XBMC_Call: Sending: {"jsonrpc":"2.0","id":"83328","method":"Player.GetActivePlayers"}
2015.05.25 11:41:42 5: SW: 7b226a736f6e727063223a22322e30222c226964223a223833333238222c226d6574686f64223a22506c617965722e476574416374697665506c6179657273227d
2015.05.25 11:41:42 5: XBMC_ProcessRead
2015.05.25 11:41:42 5: No PARTIAL buffer
2015.05.25 11:41:42 5: XBMC_Read: Incoming data: {"id":181967,"jsonrpc":"2.0","result":{"muted":false,"name":"XBMC","version":{"major":13,"minor":2,"revision":"0f3db05","tag":"stable"},"volume":40}}{"id":762532,"jsonrpc":"2.0","result":{"fullscreen":false,"skin":{"id":"skin.confluence","name":"Confluence"}}}{"id":"83328","jsonrpc":"2.0","result":[]}
2015.05.25 11:41:42 4: XBMC_Read: Current processing buffer (PARTIAL + incoming data): {"id":181967,"jsonrpc":"2.0","result":{"muted":false,"name":"XBMC","version":{"major":13,"minor":2,"revision":"0f3db05","tag":"stable"},"volume":40}}{"id":762532,"jsonrpc":"2.0","result":{"fullscreen":false,"skin":{"id":"skin.confluence","name":"Confluence"}}}{"id":"83328","jsonrpc":"2.0","result":[]}
2015.05.25 11:41:42 4: XBMC_Read: Decoding JSON message. Length: 149 Content: {"id":181967,"jsonrpc":"2.0","result":{"muted":false,"name":"XBMC","version":{"major":13,"minor":2,"revision":"0f3db05","tag":"stable"},"volume":40}}
2015.05.25 11:41:42 4: XBMC_Read: Decoding JSON message. Length: 111 Content: {"id":762532,"jsonrpc":"2.0","result":{"fullscreen":false,"skin":{"id":"skin.confluence","name":"Confluence"}}}
2015.05.25 11:41:42 4: XBMC_Read: Decoding JSON message. Length: 42 Content: {"id":"83328","jsonrpc":"2.0","result":[]}
2015.05.25 11:41:42 5: XBMC_Read: Tail:
2015.05.25 11:41:42 5: XBMC_Read: PARTIAL:
2015.05.25 11:41:48 5: SW: 7b226a736f6e727063223a22322e30222c226964223a3238303334322c226d6574686f64223a224a534f4e5250432e50696e67227d
2015.05.25 11:41:48 5: XBMC_ProcessRead
2015.05.25 11:41:48 5: No PARTIAL buffer
2015.05.25 11:41:48 5: XBMC_Read: Incoming data: {"id":280342,"jsonrpc":"2.0","result":"pong"}
2015.05.25 11:41:48 4: XBMC_Read: Current processing buffer (PARTIAL + incoming data): {"id":280342,"jsonrpc":"2.0","result":"pong"}
2015.05.25 11:41:48 4: XBMC_Read: Decoding JSON message. Length: 45 Content: {"id":280342,"jsonrpc":"2.0","result":"pong"}
2015.05.25 11:41:48 5: XBMC_Read: Tail:
2015.05.25 11:41:48 5: XBMC_Read: PARTIAL:
2015.05.25 11:42:01 5: SW: 7b226a736f6e727063223a22322e30222c226964223a38303437352c226d6574686f64223a224a534f4e5250432e50696e67227d
2015.05.25 11:42:01 3: Last ping (1432546921) is greather than last pong (1432546908)
2015.05.25 11:42:01 1: 192.168.178.20:9090 disconnected, waiting to reappear (htpc)
2015.05.25 11:42:06 1: 192.168.178.20:9090 reappeared (htpc)
2015.05.25 11:42:09 1: 192.168.178.20:9090 reappeared (htpc)
2015.05.25 11:42:09 1: 192.168.178.20:9090 reappeared (htpc)
2015.05.25 11:42:09 5: XBMC_Call: Sending: {"id":256079,"jsonrpc":"2.0","params":{"properties":["volume","muted","name","version"]},"method":"Application.GetProperties"}
2015.05.25 11:42:09 5: SW: 7b226964223a3235363037392c226a736f6e727063223a22322e30222c22706172616d73223a7b2270726f70657274696573223a5b22766f6c756d65222c226d75746564222c226e616d65222c2276657273696f6e225d7d2c226d6574686f64223a224170706c69636174696f6e2e47657450726f70657274696573227d
2015.05.25 11:42:09 5: XBMC_Call: Sending: {"id":195165,"params":{"properties":["skin","fullscreen"]},"jsonrpc":"2.0","method":"GUI.GetProperties"}
2015.05.25 11:42:09 5: SW: 7b226964223a3139353136352c22706172616d73223a7b2270726f70657274696573223a5b22736b696e222c2266756c6c73637265656e225d7d2c226a736f6e727063223a22322e30222c226d6574686f64223a224755492e47657450726f70657274696573227d
2015.05.25 11:42:09 5: XBMC_Call: Sending: {"method":"Player.GetActivePlayers","id":"807331","jsonrpc":"2.0"}
2015.05.25 11:42:09 5: SW: 7b226d6574686f64223a22506c617965722e476574416374697665506c6179657273222c226964223a22383037333331222c226a736f6e727063223a22322e30227d
2015.05.25 11:42:09 5: XBMC_ProcessRead
2015.05.25 11:42:09 5: No PARTIAL buffer
2015.05.25 11:42:09 5: XBMC_Read: Incoming data: {"id":256079,"jsonrpc":"2.0","result":{"muted":false,"name":"XBMC","version":{"major":13,"minor":2,"revision":"0f3db05","tag":"stable"},"volume":40}}{"id":195165,"jsonrpc":"2.0","result":{"fullscreen":false,"skin":{"id":"skin.confluence","name":"Confluence"}}}{"id":"807331","jsonrpc":"2.0","result":[]}
2015.05.25 11:42:09 4: XBMC_Read: Current processing buffer (PARTIAL + incoming data): {"id":256079,"jsonrpc":"2.0","result":{"muted":false,"name":"XBMC","version":{"major":13,"minor":2,"revision":"0f3db05","tag":"stable"},"volume":40}}{"id":195165,"jsonrpc":"2.0","result":{"fullscreen":false,"skin":{"id":"skin.confluence","name":"Confluence"}}}{"id":"807331","jsonrpc":"2.0","result":[]}
2015.05.25 11:42:09 4: XBMC_Read: Decoding JSON message. Length: 149 Content: {"id":256079,"jsonrpc":"2.0","result":{"muted":false,"name":"XBMC","version":{"major":13,"minor":2,"revision":"0f3db05","tag":"stable"},"volume":40}}
2015.05.25 11:42:09 4: XBMC_Read: Decoding JSON message. Length: 111 Content: {"id":195165,"jsonrpc":"2.0","result":{"fullscreen":false,"skin":{"id":"skin.confluence","name":"Confluence"}}}
2015.05.25 11:42:09 4: XBMC_Read: Decoding JSON message. Length: 43 Content: {"id":"807331","jsonrpc":"2.0","result":[]}
2015.05.25 11:42:09 5: XBMC_Read: Tail:
2015.05.25 11:42:09 5: XBMC_Read: PARTIAL:
2015.05.25 11:42:32 5: SW: 7b226d6574686f64223a224a534f4e5250432e50696e67222c226a736f6e727063223a22322e30222c226964223a3236383838317d
2015.05.25 11:42:32 3: Last ping (1432546952) is greather than last pong (1432546929)
2015.05.25 11:42:32 1: 192.168.178.20:9090 disconnected, waiting to reappear (htpc)
2015.05.25 11:42:40 1: 192.168.178.20:9090 reappeared (htpc)
2015.05.25 11:42:42 1: 192.168.178.20:9090 reappeared (htpc)
2015.05.25 11:42:47 1: 192.168.178.20:9090 reappeared (htpc)
2015.05.25 11:42:47 5: XBMC_Call: Sending: {"params":{"properties":["volume","muted","name","version"]},"jsonrpc":"2.0","id":748098,"method":"Application.GetProperties"}
2015.05.25 11:42:47 5: SW: 7b22706172616d73223a7b2270726f70657274696573223a5b22766f6c756d65222c226d75746564222c226e616d65222c2276657273696f6e225d7d2c226a736f6e727063223a22322e30222c226964223a3734383039382c226d6574686f64223a224170706c69636174696f6e2e47657450726f70657274696573227d
2015.05.25 11:42:47 5: XBMC_Call: Sending: {"jsonrpc":"2.0","params":{"properties":["skin","fullscreen"]},"id":971717,"method":"GUI.GetProperties"}
2015.05.25 11:42:47 5: SW: 7b226a736f6e727063223a22322e30222c22706172616d73223a7b2270726f70657274696573223a5b22736b696e222c2266756c6c73637265656e225d7d2c226964223a3937313731372c226d6574686f64223a224755492e47657450726f70657274696573227d
2015.05.25 11:42:48 5: XBMC_Call: Sending: {"method":"Player.GetActivePlayers","jsonrpc":"2.0","id":"472004"}
2015.05.25 11:42:48 5: SW: 7b226d6574686f64223a22506c617965722e476574416374697665506c6179657273222c226a736f6e727063223a22322e30222c226964223a22343732303034227d
2015.05.25 11:42:48 5: SW: 7b226d6574686f64223a224a534f4e5250432e50696e67222c226964223a31353132332c226a736f6e727063223a22322e30227d
2015.05.25 11:42:48 5: XBMC_ProcessRead
2015.05.25 11:42:48 5: No PARTIAL buffer
2015.05.25 11:42:48 5: XBMC_Read: Incoming data: {"id":748098,"jsonrpc":"2.0","result":{"muted":false,"name":"XBMC","version":{"major":13,"minor":2,"revision":"0f3db05","tag":"stable"},"volume":40}}{"id":971717,"jsonrpc":"2.0","result":{"fullscreen":false,"skin":{"id":"skin.confluence","name":"Confluence"}}}{"id":"472004","jsonrpc":"2.0","result":[]}{"id":15123,"jsonrpc":"2.0","result":"pong"}
2015.05.25 11:42:48 4: XBMC_Read: Current processing buffer (PARTIAL + incoming data): {"id":748098,"jsonrpc":"2.0","result":{"muted":false,"name":"XBMC","version":{"major":13,"minor":2,"revision":"0f3db05","tag":"stable"},"volume":40}}{"id":971717,"jsonrpc":"2.0","result":{"fullscreen":false,"skin":{"id":"skin.confluence","name":"Confluence"}}}{"id":"472004","jsonrpc":"2.0","result":[]}{"id":15123,"jsonrpc":"2.0","result":"pong"}
2015.05.25 11:42:48 4: XBMC_Read: Decoding JSON message. Length: 149 Content: {"id":748098,"jsonrpc":"2.0","result":{"muted":false,"name":"XBMC","version":{"major":13,"minor":2,"revision":"0f3db05","tag":"stable"},"volume":40}}
2015.05.25 11:42:48 4: XBMC_Read: Decoding JSON message. Length: 111 Content: {"id":971717,"jsonrpc":"2.0","result":{"fullscreen":false,"skin":{"id":"skin.confluence","name":"Confluence"}}}
2015.05.25 11:42:48 4: XBMC_Read: Decoding JSON message. Length: 43 Content: {"id":"472004","jsonrpc":"2.0","result":[]}
2015.05.25 11:42:48 4: XBMC_Read: Decoding JSON message. Length: 44 Content: {"id":15123,"jsonrpc":"2.0","result":"pong"}
2015.05.25 11:42:48 5: XBMC_Read: Tail:
2015.05.25 11:42:48 5: XBMC_Read: PARTIAL:
Die 'offizielle' Modulversion auf meinem anderen System reagiert auf den kill normal.
Nach 'shutdown restart' nur noch:
Zitat192.168.178.20:9090 reappeared (htpc)
und alles normal.
Zitat von: Hans Franz am 25 Mai 2015, 11:12:42
Nach einem harten kill und Neustart von Gotham:
Ich kann das so bei mir erstmal nicht reproduzieren. Also du hast Kodi hart durch ein SIGKILL abgeschossen, ja? Bei mir connected sich FHEM danach wieder ordnungsgemäß.
Wenn Kodi wieder in dem Zustnad ist, kannst du bitte einmal eine Telnet-Verbindung zu Kodi aufmachen (Port 9090) und ihm händisch einen Ping schicken:
{"id":66,"jsonrpc":"2.0","method":"JSONRPC.Ping"}
(ID musst du evtl. hochzählen)
Kodi sollte mit einem Pong antworten.
Ich überlege jedoch gerade, diese Ping/Pong-Geschichte ganz auszubauen. Im Zuge des updateIntervals wird jetzt sowieso regelmäßig mit Kodi kommuniziert. Diese Kommunikation könnte man auch heranziehen, um festzustellen, ob Kodi noch lebt (ohne expliziten Ping).
Trotz aller Bemühungen kriege ich es nicht mehr hin. Normaler Reconnect. Werde es heute Abend noch mal versuchen zu provozieren.
Gruß
Hans
Ok, danke erstmal.
Ich bin gerade dabei, das nochmal etwas umzubauen. Werde nachher die Version posten. Wäre klasse, wenn du die dann nochmal testen könntest.
Bitte mal hiermit probiern...
Mir ist aufgefallen, dass nach einen Update ca. jede min der status abgefragt wird und somit in meiner Umgebung jedes mal das Licht ausgeschaltet wird beim status "play" wenn es manuell angemacht wurde. Hat jemand ein ähnliches Problem und ist dies bakannt - oder liegt der fehler eher bei mir?! Danke...
Schau mal nach dem Attribut "event-on-change-reading". Das könnte für dich sein.
"event-on-change-reading" habe ich ausprobiert - allerdings funktioniert dann das das Licht bei "Pause" an und bei "Play" aus überhaupt nicht mehr. Es erfolgt dann auch keine Ausgabe im EventMonitor. Letztens funktionierte die Konfiguration noch ohne Probleme - also man konnte Licht an machen während ein Film lief und es wurde nicht ausgeschaltet, da nicht jede min die Events von Kodi gelesen wurden. Hat sich dies bezüglich den etwas in der neuen Version geändert?
Ja, es gibt nun alle x Sekunden ein Update. Dadurch kann zB nun das Reading für die aktuelle Position im Film gefüllt werden.
Was hast du denn in event-on-change-reading reingeschrieben, wenn ich fragen darf?
Ich benutzt das Modul auch, um meine Dimmer zu steuern bei Play/Pause/Stop und zumindest bei mir funktioniert es noch einwandfrei.
Ah, ok - dann ist das Verhalten ja zu erklären...
"event-on-change-reading" hatte ich auf 1 stehen.
Schaue mir später mal die Definitionen genauer an - danke für die Unterstützung :)
event-on-change .*
Das erwartet einen RegEx mit readings, auf welche das zutreffen soll.
lg, Ici
Zitat von: Noxus am 30 Mai 2015, 18:20:52
"event-on-change-reading" habe ich ausprobiert - allerdings funktioniert dann das das Licht bei "Pause" an und bei "Play" aus überhaupt nicht mehr. Es erfolgt dann auch keine Ausgabe im EventMonitor. Letztens funktionierte die Konfiguration noch ohne Probleme - also man konnte Licht an machen während ein Film lief und es wurde nicht ausgeschaltet, da nicht jede min die Events von Kodi gelesen wurden. Hat sich dies bezüglich den etwas in der neuen Version geändert?
Hi,
das gleiche Problem habe ich seid meinem Update gestern auch. Steuere mein Licht auch via Play/Pause und nun geht es immer nach 60 Sekunden aus.
@ vbs:
Nach dem Update gestern erwartete mich folgende Fehlermeldung in FHEM:
Error messages while initializing FHEM:
configfile: WZ.MediaPlayer: unknown attribute pingInterval. Type 'attr WZ.MediaPlayer ?' for a detailed list.
Leider habe ich nirgends ein PingInterval gefunden.
Zitat von: Ascos am 31 Mai 2015, 20:17:08
Nach dem Update gestern erwartete mich folgende Fehlermeldung in FHEM:
Error messages while initializing FHEM:
configfile: WZ.MediaPlayer: unknown attribute pingInterval. Type 'attr WZ.MediaPlayer ?' for a detailed list.
Leider habe ich nirgends ein PingInterval gefunden.
Ich hab pingInterval in updateInterval umbenannt. Evt. eine blöde Idee. Sollte sich aber nach dem nächsten Speichern selbst heilen. Wenn nicht, dann einmal mit deleteattr händisch löschen.
Mit "event-on-change-reading" und der definition "playStatus" funzt es nun :)
Danke noch einmal ;)
Wenn man in einer Serie in Kodi auf eine Episode klickt und diese mit OK startet (egal ob mit oder ohne Informatinsfeld vorher), dann startet diese eine Episode. Wenn man "Ab hier abspielen" im Contextmenü auswählt oder direkt auf der Episode Playtaste drückt, dann kann man alle Folgen dieser Staffel, beginnend mit der ausgewählten in die Abspielliste laden.
Jemand eine Idee wie ich das über FHEM hinbekomme? Ich möchte also eine Folge starten, am besten über die DatenbankID, und gleich alle darauffolgenden Episoden dieser Staffel in die Playlist eintragen.
Hallo!
Mein FHEM stürzt ab und zu mit der Meldung
Can't use string ("pong") as an ARRAY ref while "strict refs" in use at ./FHEM/70_XBMC.pm line 602.
ab. Meistens Nachts wenn ich mal vergessen habe Plex zu beenden, ist aber auch schon während der Benutzung geschehen. Ich kann aber keinen Rhythmus erkennen, ab und zu heißt ca. 5-6 mal bisher.
Ich benutze das Modul in Verbindung mit Plex.
Grüße
Bitte einmal mit der Version von hier probiere:
http://forum.fhem.de/index.php/topic,10075.msg297702.html#msg297702
Danke, hab die Version eingespielt. Ich melde mich falls es Probleme gibt!
Ich hatte heute auch ständig Reconnect Probleme mit dem Modul. Ich habe das Testmodul laufen und das funktioniert bei mir bisher einwandfrei!
Ok, hab die Version jetzt so eingecheckt.
Klasse vielen Dank!
Ich hatte bisher eine relativ alte Version im Einsatz, da ich keine Updates gemacht hatte, und die Kommunikation zwischen FHEM und KODI klappte problemlos.
Bis dahin ging es auch nur um die Anzeige einer Nachricht auf Kodi.
Jetzt wollte ich ein bisschen mit der Steuerung rum spielen und habe als erstes ein Update gemacht.
Das führt allerdings dazu, dass auch die Anzeige einer Nachricht nicht funktioniert.
Definiert ist KODI so:
define wz_KODI XBMC 192.168.2.102:8080 tcp user pass
attr wz_KODI devStateIcon opened:rc_GREEN:on disconnected:rc_RED:off Initialized:message_socket_disabled
attr wz_KODI group Multimedia
attr wz_KODI room Wohnzimmer
attr wz_KODI verbose 4
(ich habe auch versucht den Port weg zu lassen und/oder Benutzername und Passwort weg zu lassen)
Ein
set wz_KODI msg 'SmartHome' 'Test1' 5000 info
Führt zu folgendem Eintrag im FHEM-Log
2015.06.09 17:35:02 4: XBMC_Call: Sending: {"method":"GUI.ShowNotification","jsonrpc":"2.0","params":{"message":"Test1","image":"info","title":"SmartHome","displaytime":5000}}
Bei Kodi im Log kommt leider nichts an (Kodi zeigt die Nachricht auch nicht an).
Folgender direkter Aufruf klappt dagegen problemlos:
http://192.168.2.102:8080/jsonrpc?request={"method":"GUI.ShowNotification","params":{"image":"info","displaytime":5000,"title":"SmartHome","message":"Test1"},"jsonrpc":"2.0"}
Kodi und FHEM sind auf dem gleichen Server.
Den Test-Aufruf direkt per url habe ich von einem anderen Rechner gestartet.
Irgendeine Idee, was ich prüfen könnte? Oder sogar was der Grund sein könnte?
Das muss ich jetzt erstmal fragen: Ansonsten funktioniert die Steuerung/die Readings und STATE steht auf "opened", oder?
Hab ich ansonsten erstmal keine guten Ideen. Ein komplettes Log wäre dann erstmal gut.
Erstmal danke für die schnelle Antwort!
Zitat von: vbs am 09 Juni 2015, 18:12:05
Das muss ich jetzt erstmal fragen: Ansonsten funktioniert die Steuerung/die Readings und STATE steht auf "opened", oder?
Frag ruhig alles, was Du fragen willst ;)
STATE steht auf opened, aber playStatus auf stopped obwohl gerade was läuft (würde er Live-TV auch erkennen? Hab noch nie drauf geachtet)
Ein "set wz_KODI pause" macht dementsprechend auch nichts.
Zitat von: vbs am 09 Juni 2015, 18:12:05
Ein komplettes Log wäre dann erstmal gut.
Hier ist das komplette Log seit Neustart gerade eben.
Danach habe ich versucht ein msg zu schicken.
2015.06.09 18:20:49 1: Including fhem.cfg
2015.06.09 18:20:49 3: telnetPort: port 7072 opened
2015.06.09 18:20:49 3: WEB: port 8083 opened
2015.06.09 18:20:49 3: WEBphone: port 8084 opened
2015.06.09 18:20:49 3: WEBtablet: port 8085 opened
2015.06.09 18:20:49 2: eventTypes: loaded 1283 events from ./log/eventTypes.txt
2015.06.09 18:20:49 1: HMLAN_Parse: HMLAN1 new condition disconnected
2015.06.09 18:20:49 3: Opening HMLAN1 device 192.168.2.3:1000
2015.06.09 18:20:49 3: HMLAN1 device opened
2015.06.09 18:20:49 1: HMLAN_Parse: HMLAN1 new condition init
2015.06.09 18:20:49 1: Including ./cfgfiles/rollos.cfg
2015.06.09 18:20:49 1: Including ./cfgfiles/licht.cfg
2015.06.09 18:20:49 1: Including ./cfgfiles/media.cfg
2015.06.09 18:20:49 3: [STV] defined with host: 192.168.2.18 port: 55000 MAC: d0:50:99:3f:17:53
2015.06.09 18:20:49 3: wz_fernbedienung: connected to /dev/input/event3
2015.06.09 18:20:49 1: Including ./cfgfiles/netzwerk.cfg
2015.06.09 18:20:49 3: Connecting to database mysql:database=xxxx
2015.06.09 18:20:49 3: Connection to db mysql:database=xxxx
2015.06.09 18:20:49 3: Connection to db mysql:database=xxxx
2015.06.09 18:20:49 1: Including ./cfgfiles/floorplan.cfg
2015.06.09 18:20:49 1: Including ./cfgfiles/allgemein.cfg
2015.06.09 18:20:50 1: Including ./log/fhem.save
2015.06.09 18:20:50 3: wz_fernbedienung: connected to /dev/input/event3
2015.06.09 18:20:50 3: NTFY return: HM_261F3F:ARRAY(0x2e545f0)
2015.06.09 18:20:50 0: Server started with 76 defined entities (version $Id: fhem.pl 8690 2015-06-04 16:47:20Z rudolfkoenig $, os linux, user fhem, pid 9890)
2015.06.09 18:20:50 3: telnetForBlockingFn: port 42393 opened
2015.06.09 18:20:51 1: HMLAN_Parse: HMLAN1 new condition ok
2015.06.09 18:20:52 1: 192.168.2.18:55000 reappeared (wz_TV)
2015.06.09 18:20:52 1: 192.168.2.102:8080 reappeared (wz_KODI)
2015.06.09 18:20:54 4: XBMC_Call: Sending: {"params":{"properties":["volume","muted","name","version"]},"jsonrpc":"2.0","method":"Application.GetProperties","id":619047}
2015.06.09 18:20:54 4: XBMC_Call: Sending: {"method":"GUI.GetProperties","id":408772,"params":{"properties":["skin","fullscreen"]},"jsonrpc":"2.0"}
2015.06.09 18:20:54 4: XBMC_Call: Sending: {"jsonrpc":"2.0","id":"559037","method":"Player.GetActivePlayers"}
2015.06.09 18:20:54 4: XBMC_UpdatePlayerItem
2015.06.09 18:20:54 4: XBMC_UpdatePlayerItem - cancelled (disconnected or not playing)
2015.06.09 18:20:54 3: CUL_HM set az_rollo statusRequest
2015.06.09 18:20:57 3: CUL_HM set ba_rollo1 statusRequest
2015.06.09 18:20:59 3: CUL_HM set ba_rollo2 statusRequest
2015.06.09 18:21:00 3: CUL_HM set ho_rollo1 statusRequest
2015.06.09 18:21:02 3: CUL_HM set ho_rollo2 statusRequest
2015.06.09 18:21:03 3: CUL_HM set ku_licht statusRequest
2015.06.09 18:21:05 3: CUL_HM set sz_rollo statusRequest
2015.06.09 18:21:06 3: CUL_HM set wz_rollo1 statusRequest
2015.06.09 18:21:07 3: CUL_HM set wz_rollo2 statusRequest
2015.06.09 18:21:08 3: CUL_HM set wz_rollo3 statusRequest
2015.06.09 18:21:10 4: XBMC_Call: Sending: {"method":"GUI.ShowNotification","jsonrpc":"2.0","params":{"displaytime":5000,"image":"info","title":"SmartHome","message":"Test1"}}
2015.06.09 18:21:12 3: CUL_HM set ku_licht getConfig
Hab jetzt nach dem Durchgucken des Logs folgendes probiert:
http://192.168.2.102:8080/jsonrpc?request={"jsonrpc":"2.0","id":"559037","method":"Player.GetActivePlayers"}
Und Kodi liefert das hier:
{"id":"559037","jsonrpc":"2.0","result":[{"playerid":1,"type":"video"}]}
Liegt es also an Kodi vielleicht?
Da habe ich eigentlich nichts dran geändert, wobei ich dieses "eigentlich" kenne ;)
Hm, auffällig ist erstmal, dass FHEM mehrere NAchrichten an Kodi sendet, aber nie eine Antwort bekommt:
2015.06.09 18:20:52 1: 192.168.2.18:55000 reappeared (wz_TV)
2015.06.09 18:20:52 1: 192.168.2.102:8080 reappeared (wz_KODI)
2015.06.09 18:20:54 4: XBMC_Call: Sending: {"params":{"properties":["volume","muted","name","version"]},"jsonrpc":"2.0","method":"Application.GetProperties","id":619047}
2015.06.09 18:20:54 4: XBMC_Call: Sending: {"method":"GUI.GetProperties","id":408772,"params":{"properties":["skin","fullscreen"]},"jsonrpc":"2.0"}
2015.06.09 18:20:54 4: XBMC_Call: Sending: {"jsonrpc":"2.0","id":"559037","method":"Player.GetActivePlayers"}
2015.06.09 18:20:54 4: XBMC_UpdatePlayerItem
2015.06.09 18:20:54 4: XBMC_UpdatePlayerItem - cancelled (disconnected or not playing)
Eine Idee wäre ein Firewall-Problem?
Ansonstne könntest du mal probieren, händisch von der Konsole eine Telnet-Verbindung zu Kodi aufzumachen und mal eine solche Nachricht händisch zu senden und zu gucken, ob da eine Reaktion kommt. Ist das evtl. etwas mit Username/Password im Argen? Hab ich noch nie benutzt, muss ich sagen.
Zitat von: vbs am 09 Juni 2015, 18:32:36
Eine Idee wäre ein Firewall-Problem?
Ansonstne könntest du mal probieren, händisch von der Konsole eine Telnet-Verbindung zu Kodi aufzumachen und mal eine solche Nachricht händisch zu senden und zu gucken, ob da eine Reaktion kommt.
Gilt das auch wenn fhem und kodi auf dem gleichen Server sind? Vielleicht sollte ich localhost statt der IP nehmen?
Probiere ich später mal aus, wenn ich wieder am Rechner bin. Dann gucke ich auch mal ob ich in kodi das Passwort raus nehmen kann.
Username uind Passwort klappen bei mir einwandfrei mit dem aktuellen Modul!
Ist die Fernsteuerung (von anderen Apps) im Kodi aktiviert?
Benutzername und Passwort in Kodi raus nehmen hat leider nicht geholfen, genau so wenig wie in define auf localhost zu gehen.
Zitat von: P.A.Trick am 09 Juni 2015, 19:21:43
Ist die Fernsteuerung (von anderen Apps) im Kodi aktiviert?
Die ist für lokale und auch für entfernte Programme zugelassen.
Jetzt habe ich beim rum probieren ein paar mehr Log-Einträge, vielleicht sagen die Euch ja was:
2015.06.09 19:53:17 4: XBMC_Call: Sending: {"id":38354,"jsonrpc":"2.0","method":"Application.GetProperties","params":{"properties":["volume","muted","name","version"]}}
2015.06.09 19:53:17 4: XBMC_Call: Sending: {"params":{"properties":["skin","fullscreen"]},"jsonrpc":"2.0","id":923339,"method":"GUI.GetProperties"}
2015.06.09 19:53:17 4: XBMC_Call: Sending: {"method":"Player.GetActivePlayers","jsonrpc":"2.0","id":"4704"}
2015.06.09 19:53:17 4: XBMC_UpdatePlayerItem
2015.06.09 19:53:17 4: XBMC_UpdatePlayerItem - cancelled (disconnected or not playing)
2015.06.09 19:54:17 4: XBMC_Check
2015.06.09 19:54:17 3: XBMC_CheckConnection: Connection lost! Last data from Kodi received 120.01108789444 s ago
2015.06.09 19:54:17 1: localhost:8080 disconnected, waiting to reappear (wz_KODI)
2015.06.09 19:54:19 1: localhost:8080 reappeared (wz_KODI)
2015.06.09 19:54:20 4: XBMC_Call: Sending: {"params":{"properties":["volume","muted","name","version"]},"jsonrpc":"2.0","id":316094,"method":"Application.GetProperties"}
2015.06.09 19:54:20 4: XBMC_Call: Sending: {"jsonrpc":"2.0","id":217504,"method":"GUI.GetProperties","params":{"properties":["skin","fullscreen"]}}
2015.06.09 19:54:20 4: XBMC_Call: Sending: {"method":"Player.GetActivePlayers","jsonrpc":"2.0","id":"915948"}
2015.06.09 19:54:20 4: XBMC_UpdatePlayerItem
2015.06.09 19:54:20 4: XBMC_UpdatePlayerItem - cancelled (disconnected or not playing)
2015.06.09 19:55:20 4: XBMC_Check
2015.06.09 19:55:20 4: XBMC_CheckConnection: Connection still alive. Last data from Kodi received 60.0071959495544 s ago
2015.06.09 19:55:20 4: XBMC_Call: Sending: {"method":"Application.GetProperties","id":171390,"jsonrpc":"2.0","params":{"properties":["volume","muted","name","version"]}}
2015.06.09 19:55:20 4: XBMC_Call: Sending: {"method":"GUI.GetProperties","jsonrpc":"2.0","id":731089,"params":{"properties":["skin","fullscreen"]}}
2015.06.09 19:55:20 4: XBMC_Call: Sending: {"method":"Player.GetActivePlayers","id":"971001","jsonrpc":"2.0"}
2015.06.09 19:55:20 4: XBMC_UpdatePlayerItem
2015.06.09 19:55:20 4: XBMC_UpdatePlayerItem - cancelled (disconnected or not playing)
Interessant finde ich, dass die Connection zwischendurch verloren geht.
Müsste nicht irgendwo auf dem Server der ankommende Call gelogt werden?
Also nicht im kodi-log, weil da scheint ja nichts anzukommen.
Hast du im Kodi das Debug-Log aktiviert? Sonst sieht man die JSON-Nachrichten nicht IIRC.
Dass die Verbindung verloren geht, liegt daran, dass FHEM keine Antwort bekommt und daher denkt, dass Kodi weg ist (ist der Ersatz für das ping/pong).
EDIT:
Stimmt gar nicht! Das UpdatePlayer wird einfach nicht ausgeführt, weil Kodi eh gerade nicht abspielt, sorry.
END-EDIT:
Ansonsten würde ich gern nochmal die händische Telnet-Methode vorschlagen.
Zitat von: vbs am 09 Juni 2015, 20:00:21
Hast du im Kodi das Debug-Log aktiviert? Sonst sieht man die JSON-Nachrichten nicht IIRC.
Jepp, andere JSON-Calls werden da angezeigt, nur nichts was von fhem kommt.
Ich habe jetzt in der Definition von tcp auf http gestellt und jetzt geht es.
Aber jetzt sind keine Readings mehr da, was vermutlich auch in der Definition so beschrieben ist:
ZitatTo receive events it is necessary to use TCP.
Zitat von: vbs am 09 Juni 2015, 20:00:21
Ansonsten würde ich gern nochmal die händische Telnet-Methode vorschlagen.
Da brauche ich dann ein bisschen Hilfe ;)
fhem und kodi sind auf dem gleichen Server (kodibuntu). Eine telnet-Verbindung baue ich direkt auf dem Server auf?
Bisher habe ich entweder in der Console auf dem Server selbst oder per Putty von einem Windows-Laptop was gemacht.
Ist ja ein Ding :D Hast du irgendwas an den Ports gemacht in deinem Kodi? Normalerweise ist Port 80 Web (http) und 9090 JSON (tcp). Und wenn es nun mit Port 8080 über http funktioniert, dann ist 8080 offenbar nicht den JSON-Port, oder? Versuch mal tcp mit Port 9090.
Da man mit http keine Events bekommt ist das IMHO ziemlich ungeil.
Zitat von: vbs am 09 Juni 2015, 20:13:40
Ist ja ein Ding :D Hast du irgendwas an den Ports gemacht in deinem Kodi? Normalerweise ist Port 80 Web (http) und 9090 JSON (tcp). Und wenn es nun mit Port 8080 über http funktioniert, dann ist 8080 offenbar nicht den JSON-Port, oder? Versuch mal tcp mit Port 9090.
Oh je, oh je. Da liegt wohl der Fehler.
Gemacht habe ich an den Ports nichts, aber falsch verstanden habe ich sie.
Bei der Definition hatte ich ja :8080 drin. Da habe ich den Einstellungs-Dialog falsch verstanden und die 8080 ist nur für den http-Zugang aber nicht für tcp.
Jetzt habe ich :9090 in der Definition drin und alles scheint gut zu funktionieren.
Danke für die Geduld!
Zitat von: vbs am 09 Juni 2015, 20:13:40
Da man mit http keine Events bekommt ist das IMHO ziemlich ungeil.
Sehe ich genau so ;)
Ich habe heute noch eine Warnungsmeldung bekommmen!
2015.06.14 13:09:54.707 1: PERL WARNING: Use of uninitialized value in string ne at fhem.pl line 3859.
2015.06.14 13:09:54.708 3: stacktrace:
2015.06.14 13:09:54.709 3: main::__ANON__ called by fhem.pl (3859)
2015.06.14 13:09:54.709 3: main::readingsBulkUpdate called by ./FHEM/70_XBMC.pm (706)
2015.06.14 13:09:54.710 3: main::XBMC_CreateReading called by ./FHEM/70_XBMC.pm (615)
2015.06.14 13:09:54.711 3: main::XBMC_ProcessResponse called by ./FHEM/70_XBMC.pm (352)
2015.06.14 13:09:54.712 3: main::XBMC_ProcessRead called by ./FHEM/70_XBMC.pm (313)
2015.06.14 13:09:54.713 3: main::XBMC_Read called by fhem.pl (3023)
2015.06.14 13:09:54.714 3: main::CallFn called by fhem.pl (643)
@vbs: Vielleicht kannst du das beim nächsten Update fixen! Danke im Voraus!
Danke für die Meldung. Kannst du das reproduzieren? Wenn ja, dann bitte mal einen verbose5-Log von der Aktion posten (oder mir sagen, was ich machen kann, um es selbst zu reproduzieren). Ich müsste mal sehen, was Kodi da geschickt hat.
Es ist leider nicht reproduzierbar...ich hatte über Chorus (anderer Webfrontend fuer Kodi) ein Album aus der Übersicht abgespielt. Scheinbar war ein Reading nicht gefüllt und nun ist es gefüllt!? Egal, ist ja auch nur ein Schönheitsfehler!
Naja, schön soll es ja auch sein ;) Kannst dich ja melden, falls es nochmal auftritt.
Ich hab grade wieder ein sehr seltsames Phaenomen. Dieser watchdog:
wz_KODI_status:stopped 00:30 wz_KODI_status:playing { fhem("set entertainment off; set pioneer off; setstate watchdog_wz_KODI defined") }
Funktioniert mit Titeln aus der KODI Bibliothek einwandfrei. Sprich, wenn der Film/Serie aus ist, springt der playStatus auf stop um und der watchdog wird getriggert. Eine halbe Stunde spaeter werden die Befehle ausgefuehrt.
Wenn ich allerdings LiveTV starte, dann ist der Status in fhem im KODI Modul zwar auf playing, der zuvor aktivierte watchdog wird aber nicht zurueckgesetzt und ich kann mir grade nicht erklaeren _warum_ Hat jemand ein aehnliches Problem oder eine Loesung dazu parat?
Kann ich nix zu sagen, da ich LiveTV nicht nutze, aber entscheidend ist, welche Events im EventMonitor zu sehen sind.
Hallo,
ich habe eine kleine (vielleicht ziemlich doofe) Frage.
In meinem fhem.log finde ich folgende Einträge, nachdem ein File abgespielt wurde. Wie kann ich verhindern, dass FHEM diese Einträge loggt?
Ich habe mehrere Kodi Instanzen: AKodi, BKodi, CKodi usw.
Ein Beispiel für einen solchen Eintrag:
2015.06.21 03:18:47 3: deletereading Kodi sd_.* : Deleted reading sd_video0duration for device Kodi
Deleted reading sd_audio0channels for device Kodi
Deleted reading sd_audio0codec for device Kodi
Deleted reading sd_video0width for device Kodi
Deleted reading sd_audio1codec for device Kodi
Deleted reading sd_audio0language for device Kodi
Deleted reading sd_audio1language for device Kodi
Deleted reading sd_video0codec for device Kodi
Deleted reading sd_video0aspect for device Kodi
Deleted reading sd_audio1channels for device Kodi
Deleted reading sd_video0stereomode for device Kodi
Deleted reading sd_subtitle0language for device Kodi
Deleted reading sd_video0height for device Kodi
Kenne leider keinen Weg, außer das globale Loglevel runter zu setzen. Vielleicht finde ich irgendwann einen schöneren Weg, um mehrere Readings mit Wildcard zu löschen.
ich vermute das deletereading wird mit fhem(...) aufgerufen? dann versuch mal noch ein ,1 anzuhängen.
gruss
andre
Ja genau, danke für den Tip! Werd ich gerne ausprobieren!
EDIT:
Version im Anhang mit aktivierter silent-Option. Bitte einmal testen, danke!
wow, vielen Dank für die schnelle Hilfe und Umsetzung :o
Zitat von: vbs am 19 Juni 2015, 21:16:54
Kann ich nix zu sagen, da ich LiveTV nicht nutze, aber entscheidend ist, welche Events im EventMonitor zu sehen sind.
Also es ist schon etwas seltsam. Wenn ich LiveTV starte, dann wird der playStatus erst auf paused gesetzt. Kurze Zeit spaeter spring er auf playing um, wobei der type dabei leer ist. Wiederum kurze Zeit spaeter wird dann der type mit channel gefuellt. Das ist allerdings nicht im EventMonitor zu sehen, sondern nur auf der StatusSeite des KODI plugins in fhem. Dann ist auch das Label mit dem Sendernamen gefuellt.
Wer also auf events bei LiveTV abfragen will (es geht eh nur play oder stop, pause funktioniert gar nicht in KODI), der muss type eq "" nehmen und kann dann den playstatus abfragen. Wie gesagt nur am Anfang etwas unsauber, fuer mich jetzt aber ok. Ich dachte ich schreibe meine Erkenntnisse trotzdem nieder, falls jemand anders vor dem gleichen Problem steht.
Zitat von: hillbicks am 18 Juni 2015, 22:17:14
Ich hab grade wieder ein sehr seltsames Phaenomen. Dieser watchdog:
wz_KODI_status:stopped 00:30 wz_KODI_status:playing { fhem("set entertainment off; set pioneer off; setstate watchdog_wz_KODI defined") }
Funktioniert mit Titeln aus der KODI Bibliothek einwandfrei. Sprich, wenn der Film/Serie aus ist, springt der playStatus auf stop um und der watchdog wird getriggert. Eine halbe Stunde spaeter werden die Befehle ausgefuehrt.
Wenn ich allerdings LiveTV starte, dann ist der Status in fhem im KODI Modul zwar auf playing, der zuvor aktivierte watchdog wird aber nicht zurueckgesetzt und ich kann mir grade nicht erklaeren _warum_ Hat jemand ein aehnliches Problem oder eine Loesung dazu parat?
Hi,
deinen Watchdog finde ich sehr interessant und wollte ihn übernehmen. Ist wz_Kodi_Status bei dir ein Dummy, der als State den Inhalt vom reading playStatus von WZ_Kodi enthält? Kann man das auch ohne Dummy machen? Also einen Watchdog direkt auf das Reading?
Irgendwie bekomm ich aber einfach nicht gebacken...
Hallöchen,
mir gelingt es nicht daten von kodi zu bekommen, die readings sehen bei mir so aus:
Readings
partymode
2015-08-12 23:04:27
playStatus
stopped
2015-08-12 23:04:27
repeat
2015-08-12 23:04:27
shuffle
2015-08-12 23:04:27
speed
2015-08-12 23:04:27
state
opened
2015-08-12 23:04:27
system
wake
2015-08-12 23:04:27
time
2015-08-12 23:04:27
totaltime
2015-08-12 23:04:27
Ich bekomme die Verbindung über TCP auch überhaupt nicht zum laufen es steht im state zwar initialized aber wenn ich einen befehl absetze tut sich nichts.
Über http funktioniert das bisher einwandfrei allerdings werden mir aber auch hier in FHEM keine readings dargestellt hat jemand rat? Bei mir kommt Kodi Isengard momentan zum Einsatz...
Könntest du noch ergänzen, wie du das Device eingerichtet hast und noch einen Log mit mindestens verbose 4 anhängen? Ansonsten könnte ich nur raten. Danke!
Sent from my tablet
Hi sorry,
eingerichtet habe ich es wie folgt, wenn ich das auf tcp umstelle bei default passiert nichts:
define wz_Kodi XBMC 192.168.1.102:8080 http "" ""
attr wz_Kodi icon rc_TV
attr wz_Kodi updateInterval 60
attr wz_Kodi webCmd shutdown
Im log mit verbose 4 erhalte ich folgende Werte ich hoffe das sind soweit die richtigen daten:
2015.08.15 22:47:51 4: XBMC_Call: Sending: {"params":{"properties":["volume","muted","name","version"]},"jsonrpc":"2.0","id":799605,"method":"Application.GetProperties"}
2015.08.15 22:47:51 4: XBMC_Call: Sending: {"params":{"properties":["skin","fullscreen"]},"jsonrpc":"2.0","id":746884,"method":"GUI.GetProperties"}
2015.08.15 22:47:51 4: XBMC_Call: Sending: {"jsonrpc":"2.0","id":"2189","method":"Player.GetActivePlayers"}
2015.08.15 22:47:51 4: XBMC_UpdatePlayerItem
2015.08.15 22:47:51 4: XBMC_UpdatePlayerItem - cancelled (disconnected or not playing)
2015.08.15 22:50:35 4: XBMC_Call: Sending: {"params":{"properties":["volume","muted","name","version"]},"jsonrpc":"2.0","id":53906,"method":"Application.GetProperties"}
2015.08.15 22:50:35 4: XBMC_Call: Sending: {"params":{"properties":["skin","fullscreen"]},"jsonrpc":"2.0","id":848762,"method":"GUI.GetProperties"}
2015.08.15 22:50:35 4: XBMC_Call: Sending: {"jsonrpc":"2.0","id":"618515","method":"Player.GetActivePlayers"}
2015.08.15 22:50:35 4: XBMC_UpdatePlayerItem
2015.08.15 22:50:35 4: XBMC_UpdatePlayerItem - cancelled (disconnected or not playing)
2015.08.15 22:51:18 4: XBMC_Call: Sending: {"params":{"volume":40},"jsonrpc":"2.0","method":"Application.SetVolume"}
Das ist noch mal ein Log wenn ich XBMC mit tcp konfiguriere:
2015.08.15 22:56:52 1: 192.168.1.102:8080 reappeared (wz_Kodi)
2015.08.15 22:56:52 4: XBMC_Call: Sending: {"params":{"properties":["volume","muted","name","version"]},"jsonrpc":"2.0","id":771355,"method":"Application.GetProperties"}
2015.08.15 22:56:52 4: XBMC_Call: Sending: {"params":{"properties":["skin","fullscreen"]},"jsonrpc":"2.0","id":339366,"method":"GUI.GetProperties"}
2015.08.15 22:56:52 4: XBMC_Call: Sending: {"jsonrpc":"2.0","id":"628446","method":"Player.GetActivePlayers"}
2015.08.15 22:56:52 4: XBMC_UpdatePlayerItem
2015.08.15 22:56:52 4: XBMC_UpdatePlayerItem - cancelled (disconnected or not playing)
2015.08.15 22:57:01 4: XBMC_Call: Sending: {"params":{"volume":78},"jsonrpc":"2.0","method":"Application.SetVolume"}
Ich höre auf jeden fall Musik währendessen bzw. bei Kodi läuft musik...
greets
Für HTTP und TCP laufen zwei unterschiedliche Server in Kodi, also auch unterschiedliche Ports. Wenn du TCP verwendest, musst du den Port auf 9090 umstellen.
Danke für den Tipp aber das habe ich natürlich auch schon getestet aber auf tcp unter 9090 gibt es keine verbindung...
Zitat von: speex am 15 August 2015, 22:58:38
Das ist noch mal ein Log wenn ich XBMC mit tcp konfiguriere:
2015.08.15 22:56:52 1: 192.168.1.102:8080 reappeared (wz_Kodi)
2015.08.15 22:56:52 4: XBMC_Call: Sending: {"params":{"properties":["volume","muted","name","version"]},"jsonrpc":"2.0","id":771355,"method":"Application.GetProperties"}
2015.08.15 22:56:52 4: XBMC_Call: Sending: {"params":{"properties":["skin","fullscreen"]},"jsonrpc":"2.0","id":339366,"method":"GUI.GetProperties"}
2015.08.15 22:56:52 4: XBMC_Call: Sending: {"jsonrpc":"2.0","id":"628446","method":"Player.GetActivePlayers"}
2015.08.15 22:56:52 4: XBMC_UpdatePlayerItem
2015.08.15 22:56:52 4: XBMC_UpdatePlayerItem - cancelled (disconnected or not playing)
2015.08.15 22:57:01 4: XBMC_Call: Sending: {"params":{"volume":78},"jsonrpc":"2.0","method":"Application.SetVolume"}
Dann ging da scheinbar irgendwas schief beim Konfigurieren des Ports (oder es ist das falsche Log). Man sieht hier in deinem Log, dass es FHEM weiterhin auf Port 8080 versucht.
Der call auf Port 8080 ist korrekt, da Ich wie gesagt nur über diesen Port eine Verbindung zustande bekomme.
Ich bin inzwischen auch ein wenig weitergekommen,
das System auf dem Kodi läuft ist ein Intel nuc2820 - ubuntu server 14.04 und er hört auch einfach garnicht auf den Port 9090 sondern nur auf 8080.
Also muss ich von einer Fehlkonfiguration meines Kodi Systems ausgehen (sorry für die verwirrung).
Habe auch wie im Kodi Wiki beschrieben die häckchen gesetzt damit das json-rpc aktiviert wird/ist...
http://kodi.wiki/view/JSON-RPC_API#Enabling_JSON-RPC (http://kodi.wiki/view/JSON-RPC_API#Enabling_JSON-RPC)
Edit:
Ich glaube die Fehlerquelle gefunden zu haben, es scheint so als würde port 9090 auf ipv6 hören, wenn ich einen Netstat auf dem Kodi System ausführe:
sudo netstat -anp |grep 9090
tcp6 0 0 ::1:9090 :::* LISTEN 1285/kodi.bin
https://github.com/goldenratio/xbmc-web-remote/issues/19 (https://github.com/goldenratio/xbmc-web-remote/issues/19)
EDIT die 2.te:
Nach umfangreicher bemühung der besten suchmaschine konnte ich das problem lösen, ubuntu legt offensichtlich gerne mal standardmäsig ipv6 adressen an auch wenns deaktiviert ist. Lösen konnte ich mein Problem indem ich noch mal im grub ipv6 disabled habe wie folgt: http://forum.kodi.tv/showthread.php?tid=218006&pid=1951149#pid1951149 (http://forum.kodi.tv/showthread.php?tid=218006&pid=1951149#pid1951149)
sudo nano /etc/default/grub
Find the line that contain "GRUB_CMDLINE_LINUX_DEFAULT":
GRUB_CMDLINE_LINUX_DEFAULT=""
Add "ipv6.disable=1" to the boot option, then save your grub file:
GRUB_CMDLINE_LINUX_DEFAULT="ipv6.disable=1"
Finally, update grub:
sudo update-grub
Nun funktioniert es wie gewünscht, vielen Dank dennoch für die Hilfe.
greets
Hallo zusammen,
ich habe bei meinem "XBMC - Device" das Attribut event-on-change-reading gesetzt:
attr raspbmc event-on-change-reading state,type,currentAlbum,currentArtist,currentTitle,currentTrack,playStatus,3dfile
also sollten ja nur die aufgelisteten Readings ein Event auslösen.
Folgender Readings lösen bei Änderungen aber auch Events aus:
sd_video0duration
sd_audio0channels
sd_video0stereomode
sd_video0aspect
sd_video0width
sd_video0height
sd_audio0language
sd_video0codec
Hat dieses Problem sonst noch jemand? Oder gibt es hier eine andere Lösung die unerwünschten Events zu unterdrücken?
Gruß Schlimbo
Hallo TeeVau,
Zitat von: TeeVau am 27 September 2014, 14:14:12
Ich habe es mit eventghost gelöst. Das ruft einfach per http fhem Befehle auf.
Wie hast du Eventghost konfiguriert?
Ich möchte von FHEM auf einem Raspberry Pi ein Skript auf einem Windows PC mit installierten Eventghost ausführen.
Was muss ich noch machen?
Gruß
TWART016
Hallo miteinander,
ich bräuchte eure Hilfe. Ich schaffe es irgendwie nicht das XBMC Modul mit meinem Plex Client zum Laufen zu bringen.
JSON-RPC habe ich installiert und dann gemäß den Wiki Angegeben folgendes noch eingestellt:
HTTP: In System/Settings/Network/Services activate Allow control of Kodi via HTTP (see Enabling the webserver)
Die Punkte:
Python: Always enabled
TCP: In System/Settings/Network/Services activate Allow programs on this system to control Kodi for localhost access only and Allow programs on other systems to control Kodi for access from other computers as well
Kann ich nicht in Plex eingeben, da diese nicht in den Settings vorhanden sind.
Dann habe ich Plex in FHEM (neueste Version) definiert:
define htpc XBMC 192.168.178.37 tcp # 32400
Anschließend habe ich noch den compatibilityMode auf PLEX gestellt.
Das Modul verbindet sich jedoch einfach nicht mit meinem Plex Client. Ich erhalte immer die Meldung ,,diconnected" und kann wie gesagt PLEX nicht steuern.
Habt ihr vielleicht eine Idee woran es liegen könnte ?
Wäre für jede Hilfe dankbar.
Hier ist übrigens der Auszug meines Plex Moduls in FHEM:
DEF
192.168.178.37 tcp # 32400
DeviceName
192.168.178.37:9090
Host
192.168.178.37
NAME
PLEX
NEXT_OPEN
1441134505
NR
137
PARTIAL
Port
9090
Protocol
tcp
STATE
disconnected
TYPE
XBMC
kannst es sein das du gerade plex und xbmc/kodi durcheinander schmeisst?
die config option die du erwähnst kenne ich nur von kodi. in plex musst du das guisettings.xml file editieren. siehe z.b. hier: http://forum.fhem.de/index.php/topic,10075.msg243251.html#msg243251 (http://forum.fhem.de/index.php/topic,10075.msg243251.html#msg243251).
die readings die es früher auch mit plex gab gibt es aber inzwischen alle nicht mehr. siehe weiter oben im thread.
gruss
andre
Hallo,
zunächst einmal danke für die schnelle Antwort. Ich habe die von Dir oben genannte Vorgehensweise auch schon vorher ausprobiert. Das hat leider auch nicht zum gewünschten Erfolg geführt. Ich habe es nichtsdestotrotz noch einmal versucht. Also die guisettings.xml editiert.
Der Disconnect besteht aber nach wie vor :(
wie es scheint, bin ich einen kleinen Schritt weiter. Ich habe jetzt mal in den PLEX Settings einen Custom Port eingestellt und diesen dann in FHEM gemäß den Angaben ebenfalls eingegeben.
Jetzt steht im XMBC Modul von FHEM schonmal:
STATE
opened
PLEX reagiert jedoch auf keine aus FHEM abgeschickten Kommandos wie "Pause" :(
Hm,irgendwie bekomme ich es einfach nicht zum Laufen. Ich habe, wie oben beschrieben jetzt den Status von PLEX auf "Opend". Steuern lässt sich Plex aber nicht und ich erhalte im Logfile von FHEM immer diese Fehlermeldung:
2015.09.03 21:32:23 1: 192.168.178.37:32400 disconnected, waiting to reappear (PLEX)
2015.09.03 21:32:28 1: 192.168.178.37:32400 reappeared (PLEX)
2015.09.03 21:32:48 1: 192.168.178.37:32400 disconnected, waiting to reappear (PLEX)
2015.09.03 21:32:53 1: 192.168.178.37:32400 reappeared (PLEX)
2015.09.03 21:33:13 1: 192.168.178.37:32400 disconnected, waiting to reappear (PLEX)
2015.09.03 21:33:17 1: 192.168.178.37:32400 reappeared (PLEX)
2015.09.03 21:33:37 1: 192.168.178.37:32400 disconnected, waiting to reappear (PLEX)
Habt ihr vielleicht noch einen Tipp für mich ?
Es sieht so aus als könnte FHEM zwar auf den Port connected, jedoch wird keine Antwort empfangen.
Probier mal bitte mit putty eine Telnet-Verbindung auf den Port zu machen und einen Request händisch zu schicken. Etwa so einen hier:
{"jsonrpc":"2.0","id":4,"method":"Playlist.GetPlaylists"}
Dann solltest du eine Antwort bekommen in der Art:
{"id":4,"jsonrpc":"2.0","result":[{"playlistid":0,"type":"audio"},{"playlistid":1,"type":"video"},{"playlistid":2,"type":"picture"}]}
Wenn das funktioniert, dann ist Plex korrekt eingerichtet und du redest mit dem richtigen Port.
Hallo vbs,
danke für Deine Hilfestellung. In der Tat ist es so, dass ich mich mit der angegeben IP und dem Port NICHT auf den Plex Client verbinden kann, obwohl die IP die richtige meines HTPC's ist und der port Manuell auch so in Plex eingestellt wurde; wie gesagt, lasse ich den Port weg habe ich noch nicht einmal den Status "opened".
Habt ihr vielleicht noch einen Tipp für mich damit ich PLEX bei mir ins FHEM einbinden kann ? Das Commandref gibt diesbezüglich leider auch nichts her :(
Hm, also connecten auf dem Port müsste eigentlich gehen, ansonsten würde FHEM nicht "opened" anzeigen.
Ansonsten ist das erstmal ein Plex-Thema, denke ich. Du musst Plex so konfigurieren, dass du dich auf einem Port connecten kannst und JSON-Requests absetzen kannst (die dann beantwortet werden). Erst wenn du so weit bist, macht es mMn Sinn, FHEM ins Spiel zu bringen. Ich kann leider zu Plex selber nichts sagen.
Ich habe heute XBMC auf meinem FHEM eingerichtet und kann auch steuern etc. Allerdings scheint der State von XBMC sich nicht richtig zu ändern. Folgender Aufbau ist vorhanden:
XBMC liegt auf einem andere PI hinter einer Steckdose, welche über FHEM geschaltet wird. Der Ablauf ist wie folgt, die Steckdose wird angeschaltet, der PI startet und geht automatisch in OSMC (XBMC nachfolger). Sobald der PI im Netzwerk ist, erkennt das Modul, dass XBMC vorhanden ist und setzt system auf wake. Allerdings bleibt State auf disconnected. Jetzt starte ich Filme etc. mit der Fernbedienung mittels IR und sämtliche Änderungen werden im Modul auch erkannt. Lediglich der State bleibt unverändert auf disconnected. Dies ändert sich erst, wenn ich mittels des Moduls ein Befehl absetze, oder set connect starte. Dann wechselt der State auf opened.
Das gleich geschieht anders herum auch. Wenn ich OSMC herunterfahre mittels Fernbedienung und der PI sich ausschalte, ändert sich system zu quit aber der State bleibt auf opened. Auch nach einiger Wartezeit ändert dieser sich nicht. Erst wieder wenn ich mittels set connect ihn prüfe geht er auf disconnected.
Liegt hier ein Fehler vor oder ist das normal?
Hm, ist erstmal nicht normal. Einzig Idee wäre, dass state bei dir kein Event erzeugt und daher nicht automatisch im Web aktualisiert wird. Schonmal probiert, ob es hilft mit F5 die Seite neu zu laden?
Könnte ansonsten auch an dem OSMC liegen, kann ich mir aber eigentlich nicht vorstellen.
EDIT:
Soviel ich weiß, ist OSMC übrigens kein XBMC (bzw. Kodi) Nachfolger sondern nur eine All-In-One-Distribution MIT Kodi.
Hi,
Ich hab da eine Frage. und zwar schalte ich mein Heimkino über FHEM. Ich schalte über das XBMC Modul meine milight LED's und auch meine Homematic Lampen.
und zwar folgendermassen :
Zitatdefine notify_XBMC_status notify NUC:playStatus.* { if (ReadingsVal("NUC", "type", "") eq "movie"){\
if (ReadingsVal("NUC", "playStatus", "") eq "playing"){\
fhem("set Stuff1,Stuff2 0 0 2");;\
}\
if (ReadingsVal("NUC", "playStatus", "") eq "playing"){\
fhem("set Stuff3,Stuff4 off");;\
}\
if (ReadingsVal("NUC", "playStatus", "") eq "playing"){\
fhem("set HUEDevice1,HUEDevice2,HUEDevice3 pct 0 : transitiontime 70");;\
}\
if (ReadingsVal("NUC", "playStatus", "") eq "paused"){\
fhem("set HUEDevice1,HUEDevice2,HUEDevice3 pct 100 : transitiontime 70");;\
}\
if (ReadingsVal("NUC", "playStatus", "") eq "stopped"){\
fhem("set HUEDevice1,HUEDevice2,HUEDevice3 pct 100 : transitiontime 70");;\
}\
if (ReadingsVal("NUC", "playStatus", "") eq "stopped"){\
fhem("set LED_Podest rgb 0AF7FF 5");;\
}\
if (ReadingsVal("NUC", "playStatus", "") eq "paused"){\
fhem("set LED_Podest rgb 0AF7FF 5");;\
}\
if (ReadingsVal("NUC", "playStatus", "") eq "playing"){\
fhem("set LED_Podest off 2");;\
}\
if (ReadingsVal("NUC", "playStatus", "") eq "stopped"){\
fhem("set LED_Traap rgb 0AF7FF 2");;\
}\
if (ReadingsVal("NUC", "playStatus", "") eq "paused"){\
fhem("set LED_Traap rgb 0AF7FF 2");;\
}\
if (ReadingsVal("NUC", "playStatus", "") eq "playing"){\
fhem("set LED_Traap off 2");;\
}\
}\
}\
Allerdings geht während dem Film schauen die LED kurz an und dann wieder aus. Dieses an und aus der milight LED's passiert unregelmässig , alle 10-15min während eines Films. Ausserdem merke ich dass ich dass während dem playback mein Logfile zugespammt wird mit folgenden Meldungen.
Zitat2015.09.17 21:26:37.825 3: CUL_HM set Stuff2 0 0 2
2015.09.17 21:26:37.826 3: CUL_HM set Stuff3 off
2015.09.17 21:26:37.828 3: CUL_HM set Stuff4 off
2015.09.17 21:27:42.752 3: CUL_HM set Stuff1 0 0 2
2015.09.17 21:27:42.757 3: CUL_HM set Stuff2 0 0 2
2015.09.17 21:27:42.759 3: CUL_HM set Stuff3 off
2015.09.17 21:27:42.763 3: CUL_HM set Stuff4 off
2015.09.17 21:28:47.770 3: CUL_HM set Stuff1 0 0 2
2015.09.17 21:28:47.773 3: CUL_HM set Stuff2 0 0 2
2015.09.17 21:28:47.791 3: CUL_HM set Stuff3 off
2015.09.17 21:28:47.792 3: CUL_HM set Stuff4 off
2015.09.17 21:29:47.730 3: CUL_HM set Stuff1 0 0 2
2015.09.17 21:29:47.734 3: CUL_HM set Stuff2 0 0 2
2015.09.17 21:29:47.736 3: CUL_HM set Stuff3 off
2015.09.17 21:29:47.738 3: CUL_HM set Stuff4 off
2015.09.17 21:30:50.787 3: CUL_HM set Stuff1 0 0 2
2015.09.17 21:30:50.791 3: CUL_HM set Stuff2 0 0 2
Könnte mir bitte jemand einen Tipp geben wie ich das mit der LED gelöst bekommen könnte ?
P.S. ich hab's mal in XBMC Thread getan da ich nicht weiss ob es ein milight Problem ist oder nicht.
playStatus wird regelmäßig neu gesetzt (ohne, dass sich der Inhalt tatsächlich ändert), was auch jedes Mal ein Event generiert. Du solltest wahrscheinlich playStatus in event-on-change-reading eintragen. Dann werden nur Events erzeugt, wenn sich der Wert von playStatus tatsächlich ändert. Dann sollte das Spammen aufhören. event-on-change ist eigentlich fast überall eine gute Idee, dass es auch die Rechenlast senken kann.
ok , klingt logisch.
aber wie müsste ich das dann einbauen damit es funktioniert.
einfach nur hinzusetzen von :
attr NUC event-on-change-reading .*
?
danke für deine Hilfe !
Bei mir sieht das so aus als Attribut vom Device:
event-on-change-reading (state|playStatus|time|totaltime|season|episode|currentTitle|currentShowtitle)
geil , danke
wieso nimmst du noch time|totaltime|season|episode|currentTitle|currentShowtitle mit rein ?
wozu nutzt du das ?
Bei mir sind alle anderen Events über event-on-update deaktiviert. Nur die, die da eben in on-change stehen sind überhaupt vorhanden bei mir. Und das sind eben die einzigen Events, die mich interessieren und die ich auch im FHEM-Web anzeige. Nur Readings die ein Event generieren, werden im Web automatisch upgedatet.
Prinzipiell wollte ich mal was bauen, dass zB die Beleuchtung schon ganz langsam so 3-4 Minuten vor Ende des Films hochgefahren wird.
Ansonsten ist aber der ".*"-Ansatz auch erstmal gut mMn...
gibt es vielleicht die Möglichkeit noch ein disable einzubauen? Hintergrund ist, dass ich es quasi mit einer Steckdose ein- bzw. ausschalte. Dann muss FHEM nicht ständig testen, ob es on ist.
Zitat von: Amenophis86 am 28 September 2015, 21:03:48
gibt es vielleicht die Möglichkeit noch ein disable einzubauen? Hintergrund ist, dass ich es quasi mit einer Steckdose ein- bzw. ausschalte. Dann muss FHEM nicht ständig testen, ob es on ist.
Kannst du nicht das Power-on/off Attribut verwenden?
Nein, geht leider nicht. Hintergrund ist, dass Kodi den Pi über das Menü ausschaltet und vorher noch über eine SSH Verbindung den Dummy in FHEM (auf dem anderen Pi) auf Aus setzt. Kurz darauf schaltet dann FHEM auch die Steckdose und ein weiteres Licht aus.
Dies muss leider so gemacht werden, da der WLan Stick im Kodi-Pi beim starten nicht automatisch angeschaltet wird. (Ja, extra USB Hub mit Power wurde versucht, hat nicht geholfen). FHEM erkennt dann nicht, dass der Kodi-Pi angeht und schaltet nach kurzer Zeit wieder die Steckdose aus, weil kein Verbraucher an ist. Daher das Workaround. Ist bissi komplizierter, nur, weil der Scheiß WLan Stick von Anfang an nicht erkannt wird :D
Ist sicherlich machbar. Werd ich mir mal ansehen bei Gelegenheit...
Super, danke
Im Anhang mal eine Version mit disable-Attribut. Bitte einmal ausprobieren, ob das so recht ist :)
Wenn man das setzt, dann werden alle aktuellen Verbindungen geschlossen.
Bin jetzt 2 Wochen im Urlaub, aber danach werde ich es versuchen. Danke :)
Edit:
Habe mir gestern Abend mal die Datei runtergeladen und installiert. Bisher konnte ich noch keinen Fehler feststellen. Der PI steht seit gestern auf disable und im Log ist nichts besonders zu merken. Werde es mal weiter testen und berichten.
Edit2:
Was mir noch aufgefallen ist, um das vollschreiben des Logfiles mit folgendem Inhalt:
2015.10.15 23:16:24 3: deletereading WZ.PI sd_.* : Deleted reading sd_subtitle0language for device WZ.PI
Deleted reading sd_video0duration for device WZ.PI
Deleted reading sd_subtitle1language for device WZ.PI
Deleted reading sd_audio1codec for device WZ.PI
Deleted reading sd_video0height for device WZ.PI
Deleted reading sd_video0aspect for device WZ.PI
Deleted reading sd_audio1language for device WZ.PI
Deleted reading sd_video0stereomode for device WZ.PI
Deleted reading sd_audio1channels for device WZ.PI
Deleted reading sd_video0width for device WZ.PI
Deleted reading sd_audio0language for device WZ.PI
Deleted reading sd_audio0channels for device WZ.PI
Deleted reading sd_audio0codec for device WZ.PI
Deleted reading sd_video0codec for device WZ.PI
2015.10.15 23:17:54 3: deletereading WZ.PI sd_.* : Deleted reading sd_video0stereomode for device WZ.PI
Deleted reading sd_audio1channels for device WZ.PI
Deleted reading sd_video0width for device WZ.PI
Deleted reading sd_audio0language for device WZ.PI
Deleted reading sd_audio0channels for device WZ.PI
Deleted reading sd_audio0codec for device WZ.PI
Deleted reading sd_video0codec for device WZ.PI
Deleted reading sd_video0duration for device WZ.PI
Deleted reading sd_audio1codec for device WZ.PI
Deleted reading sd_video0height for device WZ.PI
Deleted reading sd_video0aspect for device WZ.PI
Deleted reading sd_audio1language for device WZ.PI
2015.10.15 23:19:16 3: deletereading WZ.PI sd_.* : Deleted reading sd_audio1codec for device WZ.PI
Deleted reading sd_video0duration for device WZ.PI
Deleted reading sd_audio1language for device WZ.PI
Deleted reading sd_video0aspect for device WZ.PI
Deleted reading sd_video0height for device WZ.PI
Deleted reading sd_audio0channels for device WZ.PI
Deleted reading sd_audio0language for device WZ.PI
Deleted reading sd_video0width for device WZ.PI
Deleted reading sd_audio1channels for device WZ.PI
Deleted reading sd_video0stereomode for device WZ.PI
Deleted reading sd_video0codec for device WZ.PI
Deleted reading sd_audio0codec for device WZ.PI
zu verhindern, muss ich das wohl über verbose machen, oder?
Hallo liebe Community.
Ersteinmal vielen Dank und großes Lob für dieses hervorragende Plugin.
Ich möchte anfragen, ob es möglich ist die jeweiligs aktuelle showID mit in die readings aufzunehmen?
Wenn ich die JsonAPI richtig verstanden habe, ist es nur möglich auf Serien (TVShows) mittels ID aber nicht mit dem Namen zuzugreifen. Sollte das zuviel Streß/Arbeit bedeuten ;) würde ich mir eine Liste im FHEM generieren die alle Serien mit ihren IDs enthält. Das hätte nachtürlich den Nachteil, das ich bei jedem Serienbibliotheksupdate in Kodi auch diese Liste neu generieren musste (läßt sich bestimmt über ein xbmc reading als Trigger automatisieren). Allerdings benötige ich nur die ShowID der aktuell gespielten Serie.
Ich bedanke mich schonmal und verbleibe mit freundlichen Grüßen
fishware
Davon abgesehen, hat vielleicht jemand einen Tipp wie ich live TV starten kann das fand ich auch sehr cool!
Zitat von: fishware am 21 Oktober 2015, 02:57:14
Ich möchte anfragen, ob es möglich ist die jeweiligs aktuelle showID mit in die readings aufzunehmen?
Ja keine große Sache. Bitte mal die Version im Anhang testen!
:)
Vielen Dank. Du bist echt Klasse. Das gilt übrigens für die komplette Community. Ein "geiles" Stück Software habt ihr an den Start gestellt, und der Support ist großartig -ich weiß wovon ich rede, ich arbeite im Support für eine kommerzielle Firma :-\ Die können einfach nur lernen, lernen, lernen.....
You made my day....
LG fishware
falls es noch plex andweder gibt: zur info: http://forum.fhem.de/index.php/topic,43052.0.html (http://forum.fhem.de/index.php/topic,43052.0.html).
gruss
andre
Hi,
bei mir hat das 70_XBMC Modul mittlerweile 3 mal fhem zum Absturz gebracht. Folgende Fehlermeldung:
2015.10.29 00:03:46 1: 192.168.1.159:9090 reappeared (kodi)
Not an ARRAY reference at ./FHEM/70_XBMC.pm line 647.
Letzte Version ist installiert (update check zeigt kein Update für das Modul an).
Des weiteren wäre super, wenn man in die Readings noch die Start und Endzeit des aktuellen Programms aufnehmen könnte. Oder die Restlaufzeit. Ich möchte einen Sleeptimer konfigurieren und aktuell muss ich dabei totaltime-time rechnen wofür ich Perl Code benötige. Wäre die Restlaufzeit gleich als Reading verfügbar (bitte ohne Millisekunden) könnte ich das direkt verwenden :)
Bitte entweder beschreiben, wie ich das hier nachstellen kann und/oder ein Log mit verbose 4 machen von dem Crash und hier posten.
Auch ich hatte das jetzt schon 2 mal warum das passiert konnte ich bisher auch noch nicht nach voll ziehen.
2015.10.24 19:34:55 3: XBMC_CheckConnection: Connection lost! Last data from Kodi received 119.176008939743 s ago
2015.10.24 19:34:55 1: 192.168.1.102:9090 disconnected, waiting to reappear (wz_Kodi)
2015.10.24 19:34:56 1: 192.168.1.102:9090 reappeared (wz_Kodi)
2015.10.24 19:36:56 3: XBMC_CheckConnection: Connection lost! Last data from Kodi received 120.025707006454 s ago
2015.10.24 19:36:56 1: 192.168.1.102:9090 disconnected, waiting to reappear (wz_Kodi)
2015.10.24 19:36:59 1: 192.168.1.102:9090 reappeared (wz_Kodi)
2015.10.24 19:38:59 3: XBMC_CheckConnection: Connection lost! Last data from Kodi received 120.027947902679 s ago
2015.10.24 19:38:59 1: 192.168.1.102:9090 disconnected, waiting to reappear (wz_Kodi)
2015.10.24 19:39:01 1: 192.168.1.102:9090 reappeared (wz_Kodi)
2015.10.24 19:41:01 3: XBMC_CheckConnection: Connection lost! Last data from Kodi received 120.026947021484 s ago
2015.10.24 19:41:01 1: 192.168.1.102:9090 disconnected, waiting to reappear (wz_Kodi)
2015.10.24 19:41:04 1: 192.168.1.102:9090 reappeared (wz_Kodi)
2015.10.24 19:43:04 3: XBMC_CheckConnection: Connection lost! Last data from Kodi received 120.026176929474 s ago
2015.10.24 19:43:04 1: 192.168.1.102:9090 disconnected, waiting to reappear (wz_Kodi)
2015.10.24 19:43:06 1: 192.168.1.102:9090 reappeared (wz_Kodi)
2015.10.24 19:45:06 3: XBMC_CheckConnection: Connection lost! Last data from Kodi received 120.019275903702 s ago
2015.10.24 19:45:06 1: 192.168.1.102:9090 disconnected, waiting to reappear (wz_Kodi)
2015.10.24 19:45:07 1: 192.168.1.102:9090 reappeared (wz_Kodi)
2015.10.24 19:47:07 3: XBMC_CheckConnection: Connection lost! Last data from Kodi received 120.022305965424 s ago
2015.10.24 19:47:07 1: 192.168.1.102:9090 disconnected, waiting to reappear (wz_Kodi)
2015.10.24 19:47:09 1: 192.168.1.102:9090 reappeared (wz_Kodi)
2015.10.24 19:49:09 3: XBMC_CheckConnection: Connection lost! Last data from Kodi received 120.051135063171 s ago
2015.10.24 19:49:09 1: 192.168.1.102:9090 disconnected, waiting to reappear (wz_Kodi)
2015.10.24 19:49:09 1: 192.168.1.102:9090 reappeared (wz_Kodi)
2015.10.24 19:51:09 3: XBMC_CheckConnection: Connection lost! Last data from Kodi received 120.023770093918 s ago
2015.10.24 19:51:09 1: 192.168.1.102:9090 disconnected, waiting to reappear (wz_Kodi)
2015.10.24 19:51:13 1: 192.168.1.102:9090 reappeared (wz_Kodi)
2015.10.24 19:53:13 3: XBMC_CheckConnection: Connection lost! Last data from Kodi received 120.021176815033 s ago
2015.10.24 19:53:13 1: 192.168.1.102:9090 disconnected, waiting to reappear (wz_Kodi)
2015.10.24 19:53:18 1: 192.168.1.102:9090 reappeared (wz_Kodi)
2015.10.24 19:55:18 3: XBMC_CheckConnection: Connection lost! Last data from Kodi received 120.026907920837 s ago
2015.10.24 19:55:18 1: 192.168.1.102:9090 disconnected, waiting to reappear (wz_Kodi)
2015.10.24 19:55:22 1: 192.168.1.102:9090 reappeared (wz_Kodi)
2015.10.24 19:57:22 3: XBMC_CheckConnection: Connection lost! Last data from Kodi received 120.026036977768 s ago
2015.10.24 19:57:22 1: 192.168.1.102:9090 disconnected, waiting to reappear (wz_Kodi)
2015.10.24 19:57:22 1: 192.168.1.102:9090 reappeared (wz_Kodi)
2015.10.24 19:58:26 1: 192.168.1.102:9090 disconnected, waiting to reappear (wz_Kodi)
2015.10.24 19:58:27 1: 192.168.1.102:9090 reappeared (wz_Kodi)
2015.10.24 19:59:31 1: 192.168.1.102:9090 disconnected, waiting to reappear (wz_Kodi)
2015.10.24 19:59:33 1: 192.168.1.102:9090 reappeared (wz_Kodi)
2015.10.24 20:00:37 1: 192.168.1.102:9090 disconnected, waiting to reappear (wz_Kodi)
2015.10.24 20:00:39 1: 192.168.1.102:9090 reappeared (wz_Kodi)
2015.10.24 20:01:44 1: 192.168.1.102:9090 disconnected, waiting to reappear (wz_Kodi)
2015.10.24 20:01:47 1: 192.168.1.102:9090 reappeared (wz_Kodi)
2015.10.24 20:02:51 1: 192.168.1.102:9090 disconnected, waiting to reappear (wz_Kodi)
2015.10.24 20:02:52 1: 192.168.1.102:9090 reappeared (wz_Kodi)
2015.10.24 20:03:56 1: 192.168.1.102:9090 disconnected, waiting to reappear (wz_Kodi)
2015.10.24 20:03:58 1: 192.168.1.102:9090 reappeared (wz_Kodi)
2015.10.24 20:05:02 1: 192.168.1.102:9090 disconnected, waiting to reappear (wz_Kodi)
2015.10.24 20:05:03 1: 192.168.1.102:9090 reappeared (wz_Kodi)
2015.10.24 20:06:07 1: 192.168.1.102:9090 disconnected, waiting to reappear (wz_Kodi)
2015.10.24 20:06:09 1: 192.168.1.102:9090 reappeared (wz_Kodi)
2015.10.24 20:07:14 1: 192.168.1.102:9090 disconnected, waiting to reappear (wz_Kodi)
2015.10.24 20:07:14 1: 192.168.1.102:9090 reappeared (wz_Kodi)
2015.10.24 20:08:18 1: 192.168.1.102:9090 disconnected, waiting to reappear (wz_Kodi)
2015.10.24 20:08:18 1: 192.168.1.102:9090 reappeared (wz_Kodi)
2015.10.24 20:09:22 1: 192.168.1.102:9090 disconnected, waiting to reappear (wz_Kodi)
2015.10.24 20:09:22 1: 192.168.1.102:9090 reappeared (wz_Kodi)
Not an ARRAY reference at ./FHEM/70_XBMC.pm line 599.
Werde das Kodi device auf Verbose 4 setzen und berichten sobald es wieder passiert ist.
Passiert das erst seit dem letzten Update? Diese ständigen Connects/Disconnects sehen auch nicht sehr gesund aus :o
wollte mal fragen wie ich TV oder Radio Sender mit dem Modul schalten kann, geht das?
Wenn ja wie ...
Am laufen openelec KODI 15.2
VNSI TV und Radio
Ich habe ebenfalls die Fehlermeldung "Not an ARRAY reference at ./FHEM/70_XBMC.pm line 647." beobachten können. Bisher ist es mir auch noch nicht gelungen, das zuverlässig zu reproduzieren. Mein Kodi läuft eigentlich 24/7 und ich bekomme trotzdem relativ viele Meldungen über disconnects/reconnects. Ich habe das bisher immer aufs WLAN geschoben, aber scheinbar bin ich nicht der einzige, also vielleicht doch ein Problem im Modul?
Die Abstürze mit dem ARRAY-Fehler hatte ich übrigens sowohl unter OpenELEC 5.0.8, als auch unter OpeneELEC 5.95.5 (aktuelle Beta).
Bitte einmal diese Version laufen lassen. Die sollte den Zustand erkennen können und gibt dann die Nachricht aus, die Kodi geschickt hat und dazu geführt hat.
Das sollte dann im Log so aussehen:
2015.10.31 12:49:32 3: XBMC_ProcessResponse: Not received a player array! Pending command cancelled!
2015.10.31 12:49:32 3: XBMC_ProcessRead: Faulty message: {"id":"803541","jsonrpc":"2.0","result":[]}
Also bitte lasst das mal laufen und postet dann die Logmeldungen.
Achso: Abstürzen wird fhem mit der Version dann auch nicht mehr (vermutlich). Jedoch wird das Modul dann irgendeinen Befehl nicht wie erwartet verarbeitet/ausgeführt haben.
Danke vbs, hab es mal eingespielt und werde es die nächsten Tage beobachten.
Hallöchen also warum nach wie vor keine Ahnung heute ist es wieder passiert um 19 uhr.
2015.11.01 19:07:45 4: XBMC_Check
2015.11.01 19:07:45 4: XBMC_CheckConnection: Connection still alive. Last data from Kodi received 19.957524061203 s ago
2015.11.01 19:07:45 4: XBMC_Call: Sending: {"params":{"properties":["volume","muted","name","version"]},"jsonrpc":"2.0","id":577114,"method":"Application.GetProperties"}
2015.11.01 19:07:45 4: XBMC_Call: Sending: {"params":{"properties":["skin","fullscreen"]},"jsonrpc":"2.0","id":736224,"method":"GUI.GetProperties"}
2015.11.01 19:07:45 4: XBMC_Call: Sending: {"jsonrpc":"2.0","id":"856114","method":"Player.GetActivePlayers"}
2015.11.01 19:07:45 4: XBMC_UpdatePlayerItem
2015.11.01 19:07:45 4: XBMC_Call: Sending: {"jsonrpc":"2.0","id":"823582","method":"Player.GetActivePlayers"}
2015.11.01 19:07:45 4: XBMC_Read: Decoding JSON message. Length: 149 Content: {"id":577114,"jsonrpc":"2.0","result":{"muted":false,"name":"Kodi","version":{"major":15,"minor":2,"revision":"02e7013","tag":"stable"},"volume":45}}
2015.11.01 19:07:45 4: XBMC_Read: Decoding JSON message. Length: 110 Content: {"id":736224,"jsonrpc":"2.0","result":{"fullscreen":true,"skin":{"id":"skin.confluence","name":"Confluence"}}}
2015.11.01 19:07:45 4: XBMC_Read: Decoding JSON message. Length: 72 Content: {"id":"856114","jsonrpc":"2.0","result":[{"playerid":1,"type":"video"}]}
2015.11.01 19:07:45 4: XBMC_Call: Sending: {"params":{"playerid":1,"properties":["time","totaltime","repeat","shuffled","speed","partymode"]},"jsonrpc":"2.0","id":778487,"method":"Player.GetProperties"}
2015.11.01 19:07:45 4: XBMC_Read: Decoding JSON message. Length: 72 Content: {"id":"823582","jsonrpc":"2.0","result":[{"playerid":1,"type":"video"}]}
2015.11.01 19:07:45 4: XBMC_Call: Sending: {"params":{"playerid":1,"properties":["artist","album","thumbnail","file","title","track","year","streamdetails","tvshowid"]},"jsonrpc":"2.0","id":755942,"method":"Player.GetItem"}
2015.11.01 19:07:45 4: XBMC_Read: Decoding JSON message. Length: 227 Content: {"id":778487,"jsonrpc":"2.0","result":{"partymode":false,"repeat":"off","shuffled":false,"speed":1,"time":{"hours":0,"milliseconds":0,"minutes":2,"seconds":41},"totaltime":{"hours":1,"milliseconds":0,"minutes":10,"seconds":1}}}
2015.11.01 19:07:45 4: XBMC_Read: Decoding JSON message. Length: 189 Content: {"id":755942,"jsonrpc":"2.0","result":{"item":{"id":22,"label":"ProSieben","thumbnail":"image://%2fhome%2fSenderlogos%2fProsieben.png/","title":"Galileo","type":"channel","year":0}}}
2015.11.01 19:08:05 4: XBMC_Check
2015.11.01 19:08:05 4: XBMC_CheckConnection: Connection still alive. Last data from Kodi received 20.6257348060608 s ago
2015.11.01 19:08:05 4: XBMC_Call: Sending: {"params":{"properties":["volume","muted","name","version"]},"jsonrpc":"2.0","id":868570,"method":"Application.GetProperties"}
2015.11.01 19:08:05 4: XBMC_Call: Sending: {"params":{"properties":["skin","fullscreen"]},"jsonrpc":"2.0","id":871351,"method":"GUI.GetProperties"}
2015.11.01 19:08:05 4: XBMC_Call: Sending: {"jsonrpc":"2.0","id":"513409","method":"Player.GetActivePlayers"}
2015.11.01 19:08:05 4: XBMC_UpdatePlayerItem
2015.11.01 19:08:05 4: XBMC_Call: Sending: {"jsonrpc":"2.0","id":"2108","method":"Player.GetActivePlayers"}
2015.11.01 19:08:05 4: XBMC_Read: Decoding JSON message. Length: 149 Content: {"id":868570,"jsonrpc":"2.0","result":{"muted":false,"name":"Kodi","version":{"major":15,"minor":2,"revision":"02e7013","tag":"stable"},"volume":45}}
2015.11.01 19:08:05 4: XBMC_Read: Decoding JSON message. Length: 110 Content: {"id":871351,"jsonrpc":"2.0","result":{"fullscreen":true,"skin":{"id":"skin.confluence","name":"Confluence"}}}
2015.11.01 19:08:05 4: XBMC_Read: Decoding JSON message. Length: 72 Content: {"id":"513409","jsonrpc":"2.0","result":[{"playerid":1,"type":"video"}]}
2015.11.01 19:08:05 4: XBMC_Call: Sending: {"params":{"playerid":1,"properties":["time","totaltime","repeat","shuffled","speed","partymode"]},"jsonrpc":"2.0","id":648517,"method":"Player.GetProperties"}
2015.11.01 19:08:05 4: XBMC_Read: Decoding JSON message. Length: 70 Content: {"id":"2108","jsonrpc":"2.0","result":[{"playerid":1,"type":"video"}]}
2015.11.01 19:08:05 4: XBMC_Call: Sending: {"params":{"playerid":1,"properties":["artist","album","thumbnail","file","title","track","year","streamdetails","tvshowid"]},"jsonrpc":"2.0","id":156411,"method":"Player.GetItem"}
2015.11.01 19:08:05 4: XBMC_Read: Decoding JSON message. Length: 226 Content: {"id":648517,"jsonrpc":"2.0","result":{"partymode":false,"repeat":"off","shuffled":false,"speed":1,"time":{"hours":0,"milliseconds":0,"minutes":3,"seconds":2},"totaltime":{"hours":1,"milliseconds":0,"minutes":10,"seconds":1}}}
2015.11.01 19:08:05 4: XBMC_Read: Decoding JSON message. Length: 189 Content: {"id":156411,"jsonrpc":"2.0","result":{"item":{"id":22,"label":"ProSieben","thumbnail":"image://%2fhome%2fSenderlogos%2fProsieben.png/","title":"Galileo","type":"channel","year":0}}}
2015.11.01 19:08:17 4: XBMC_Check
2015.11.01 19:08:17 4: XBMC_CheckConnection: Connection still alive. Last data from Kodi received 11.2379698753357 s ago
2015.11.01 19:08:17 4: XBMC_Call: Sending: {"params":{"properties":["volume","muted","name","version"]},"jsonrpc":"2.0","id":170119,"method":"Application.GetProperties"}
2015.11.01 19:08:17 4: XBMC_Call: Sending: {"params":{"properties":["skin","fullscreen"]},"jsonrpc":"2.0","id":988834,"method":"GUI.GetProperties"}
2015.11.01 19:08:17 4: XBMC_Call: Sending: {"jsonrpc":"2.0","id":"444430","method":"Player.GetActivePlayers"}
2015.11.01 19:08:17 4: XBMC_UpdatePlayerItem
2015.11.01 19:08:17 4: XBMC_Call: Sending: {"jsonrpc":"2.0","id":"639801","method":"Player.GetActivePlayers"}
2015.11.01 19:08:17 4: XBMC_Read: Decoding JSON message. Length: 149 Content: {"id":170119,"jsonrpc":"2.0","result":{"muted":false,"name":"Kodi","version":{"major":15,"minor":2,"revision":"02e7013","tag":"stable"},"volume":45}}
2015.11.01 19:08:17 4: XBMC_Read: Decoding JSON message. Length: 110 Content: {"id":988834,"jsonrpc":"2.0","result":{"fullscreen":true,"skin":{"id":"skin.confluence","name":"Confluence"}}}
2015.11.01 19:08:17 4: XBMC_Read: Decoding JSON message. Length: 72 Content: {"id":"444430","jsonrpc":"2.0","result":[{"playerid":1,"type":"video"}]}
2015.11.01 19:08:17 4: XBMC_Call: Sending: {"params":{"playerid":1,"properties":["time","totaltime","repeat","shuffled","speed","partymode"]},"jsonrpc":"2.0","id":950858,"method":"Player.GetProperties"}
2015.11.01 19:08:17 4: XBMC_Read: Decoding JSON message. Length: 72 Content: {"id":"639801","jsonrpc":"2.0","result":[{"playerid":1,"type":"video"}]}
2015.11.01 19:08:17 4: XBMC_Call: Sending: {"params":{"playerid":1,"properties":["artist","album","thumbnail","file","title","track","year","streamdetails","tvshowid"]},"jsonrpc":"2.0","id":519880,"method":"Player.GetItem"}
2015.11.01 19:08:17 4: XBMC_Read: Decoding JSON message. Length: 227 Content: {"id":950858,"jsonrpc":"2.0","result":{"partymode":false,"repeat":"off","shuffled":false,"speed":1,"time":{"hours":0,"milliseconds":0,"minutes":3,"seconds":13},"totaltime":{"hours":1,"milliseconds":0,"minutes":10,"seconds":1}}}
2015.11.01 19:08:17 4: XBMC_Read: Decoding JSON message. Length: 189 Content: {"id":519880,"jsonrpc":"2.0","result":{"item":{"id":22,"label":"ProSieben","thumbnail":"image://%2fhome%2fSenderlogos%2fProsieben.png/","title":"Galileo","type":"channel","year":0}}}
2015.11.01 19:08:25 4: XBMC_Check
2015.11.01 19:08:25 4: XBMC_CheckConnection: Connection still alive. Last data from Kodi received 7.95038890838623 s ago
2015.11.01 19:08:25 4: XBMC_Call: Sending: {"params":{"properties":["volume","muted","name","version"]},"jsonrpc":"2.0","id":772780,"method":"Application.GetProperties"}
2015.11.01 19:08:25 4: XBMC_Call: Sending: {"params":{"properties":["skin","fullscreen"]},"jsonrpc":"2.0","id":95286,"method":"GUI.GetProperties"}
2015.11.01 19:08:25 4: XBMC_Call: Sending: {"jsonrpc":"2.0","id":"714529","method":"Player.GetActivePlayers"}
2015.11.01 19:08:25 4: XBMC_UpdatePlayerItem
2015.11.01 19:08:25 4: XBMC_Call: Sending: {"jsonrpc":"2.0","id":"97051","method":"Player.GetActivePlayers"}
2015.11.01 19:08:25 4: XBMC_Read: Decoding JSON message. Length: 149 Content: {"id":772780,"jsonrpc":"2.0","result":{"muted":false,"name":"Kodi","version":{"major":15,"minor":2,"revision":"02e7013","tag":"stable"},"volume":45}}
2015.11.01 19:08:25 4: XBMC_Read: Decoding JSON message. Length: 109 Content: {"id":95286,"jsonrpc":"2.0","result":{"fullscreen":true,"skin":{"id":"skin.confluence","name":"Confluence"}}}
2015.11.01 19:08:25 4: XBMC_Read: Decoding JSON message. Length: 72 Content: {"id":"714529","jsonrpc":"2.0","result":[{"playerid":1,"type":"video"}]}
2015.11.01 19:08:25 4: XBMC_Call: Sending: {"params":{"playerid":1,"properties":["time","totaltime","repeat","shuffled","speed","partymode"]},"jsonrpc":"2.0","id":502472,"method":"Player.GetProperties"}
2015.11.01 19:08:25 4: XBMC_Read: Decoding JSON message. Length: 71 Content: {"id":"97051","jsonrpc":"2.0","result":[{"playerid":1,"type":"video"}]}
2015.11.01 19:08:25 4: XBMC_Call: Sending: {"params":{"playerid":1,"properties":["artist","album","thumbnail","file","title","track","year","streamdetails","tvshowid"]},"jsonrpc":"2.0","id":674679,"method":"Player.GetItem"}
2015.11.01 19:08:25 4: XBMC_Read: Decoding JSON message. Length: 227 Content: {"id":502472,"jsonrpc":"2.0","result":{"partymode":false,"repeat":"off","shuffled":false,"speed":1,"time":{"hours":0,"milliseconds":0,"minutes":3,"seconds":21},"totaltime":{"hours":1,"milliseconds":0,"minutes":10,"seconds":1}}}
2015.11.01 19:08:25 4: XBMC_Read: Decoding JSON message. Length: 189 Content: {"id":674679,"jsonrpc":"2.0","result":{"item":{"id":22,"label":"ProSieben","thumbnail":"image://%2fhome%2fSenderlogos%2fProsieben.png/","title":"Galileo","type":"channel","year":0}}}
2015.11.01 19:08:45 4: XBMC_Check
2015.11.01 19:08:45 4: XBMC_CheckConnection: Connection still alive. Last data from Kodi received 19.9567220211029 s ago
2015.11.01 19:08:45 4: XBMC_Call: Sending: {"params":{"properties":["volume","muted","name","version"]},"jsonrpc":"2.0","id":640694,"method":"Application.GetProperties"}
2015.11.01 19:08:45 4: XBMC_Call: Sending: {"params":{"properties":["skin","fullscreen"]},"jsonrpc":"2.0","id":259668,"method":"GUI.GetProperties"}
2015.11.01 19:08:45 4: XBMC_Call: Sending: {"jsonrpc":"2.0","id":"652177","method":"Player.GetActivePlayers"}
2015.11.01 19:08:45 4: XBMC_UpdatePlayerItem
2015.11.01 19:08:45 4: XBMC_Call: Sending: {"jsonrpc":"2.0","id":"804891","method":"Player.GetActivePlayers"}
2015.11.01 19:08:45 4: XBMC_Read: Decoding JSON message. Length: 149 Content: {"id":640694,"jsonrpc":"2.0","result":{"muted":false,"name":"Kodi","version":{"major":15,"minor":2,"revision":"02e7013","tag":"stable"},"volume":45}}
2015.11.01 19:08:45 4: XBMC_Read: Decoding JSON message. Length: 110 Content: {"id":259668,"jsonrpc":"2.0","result":{"fullscreen":true,"skin":{"id":"skin.confluence","name":"Confluence"}}}
2015.11.01 19:08:45 4: XBMC_Read: Decoding JSON message. Length: 72 Content: {"id":"652177","jsonrpc":"2.0","result":[{"playerid":1,"type":"video"}]}
2015.11.01 19:08:45 4: XBMC_Call: Sending: {"params":{"playerid":1,"properties":["time","totaltime","repeat","shuffled","speed","partymode"]},"jsonrpc":"2.0","id":338975,"method":"Player.GetProperties"}
2015.11.01 19:08:45 4: XBMC_Read: Decoding JSON message. Length: 72 Content: {"id":"804891","jsonrpc":"2.0","result":[{"playerid":1,"type":"video"}]}
2015.11.01 19:08:45 4: XBMC_Call: Sending: {"params":{"playerid":1,"properties":["artist","album","thumbnail","file","title","track","year","streamdetails","tvshowid"]},"jsonrpc":"2.0","id":712998,"method":"Player.GetItem"}
2015.11.01 19:08:45 4: XBMC_Read: Decoding JSON message. Length: 227 Content: {"id":338975,"jsonrpc":"2.0","result":{"partymode":false,"repeat":"off","shuffled":false,"speed":1,"time":{"hours":0,"milliseconds":0,"minutes":3,"seconds":41},"totaltime":{"hours":1,"milliseconds":0,"minutes":10,"seconds":1}}}
2015.11.01 19:08:45 4: XBMC_Read: Decoding JSON message. Length: 189 Content: {"id":712998,"jsonrpc":"2.0","result":{"item":{"id":22,"label":"ProSieben","thumbnail":"image://%2fhome%2fSenderlogos%2fProsieben.png/","title":"Galileo","type":"channel","year":0}}}
2015.11.01 19:09:05 4: XBMC_Check
2015.11.01 19:09:05 4: XBMC_CheckConnection: Connection still alive. Last data from Kodi received 20.6297829151154 s ago
2015.11.01 19:09:05 4: XBMC_Call: Sending: {"params":{"properties":["volume","muted","name","version"]},"jsonrpc":"2.0","id":520224,"method":"Application.GetProperties"}
2015.11.01 19:09:05 4: XBMC_Call: Sending: {"params":{"properties":["skin","fullscreen"]},"jsonrpc":"2.0","id":108137,"method":"GUI.GetProperties"}
2015.11.01 19:09:05 4: XBMC_Call: Sending: {"jsonrpc":"2.0","id":"337516","method":"Player.GetActivePlayers"}
2015.11.01 19:09:05 4: XBMC_UpdatePlayerItem
2015.11.01 19:09:05 4: XBMC_Call: Sending: {"jsonrpc":"2.0","id":"371889","method":"Player.GetActivePlayers"}
2015.11.01 19:09:05 4: XBMC_Read: Decoding JSON message. Length: 149 Content: {"id":520224,"jsonrpc":"2.0","result":{"muted":false,"name":"Kodi","version":{"major":15,"minor":2,"revision":"02e7013","tag":"stable"},"volume":45}}
2015.11.01 19:09:05 4: XBMC_Read: Decoding JSON message. Length: 110 Content: {"id":108137,"jsonrpc":"2.0","result":{"fullscreen":true,"skin":{"id":"skin.confluence","name":"Confluence"}}}
2015.11.01 19:09:05 4: XBMC_Read: Decoding JSON message. Length: 72 Content: {"id":"337516","jsonrpc":"2.0","result":[{"playerid":1,"type":"video"}]}
2015.11.01 19:09:05 4: XBMC_Call: Sending: {"params":{"playerid":1,"properties":["time","totaltime","repeat","shuffled","speed","partymode"]},"jsonrpc":"2.0","id":863115,"method":"Player.GetProperties"}
2015.11.01 19:09:05 4: XBMC_Read: Decoding JSON message. Length: 72 Content: {"id":"371889","jsonrpc":"2.0","result":[{"playerid":1,"type":"video"}]}
2015.11.01 19:09:05 4: XBMC_Call: Sending: {"params":{"playerid":1,"properties":["artist","album","thumbnail","file","title","track","year","streamdetails","tvshowid"]},"jsonrpc":"2.0","id":297803,"method":"Player.GetItem"}
2015.11.01 19:09:05 4: XBMC_Read: Decoding JSON message. Length: 226 Content: {"id":863115,"jsonrpc":"2.0","result":{"partymode":false,"repeat":"off","shuffled":false,"speed":1,"time":{"hours":0,"milliseconds":0,"minutes":4,"seconds":2},"totaltime":{"hours":1,"milliseconds":0,"minutes":10,"seconds":1}}}
2015.11.01 19:09:05 4: XBMC_Read: Decoding JSON message. Length: 189 Content: {"id":297803,"jsonrpc":"2.0","result":{"item":{"id":22,"label":"ProSieben","thumbnail":"image://%2fhome%2fSenderlogos%2fProsieben.png/","title":"Galileo","type":"channel","year":0}}}
2015.11.01 19:09:17 4: XBMC_Check
2015.11.01 19:09:17 4: XBMC_CheckConnection: Connection still alive. Last data from Kodi received 11.2451090812683 s ago
2015.11.01 19:09:17 4: XBMC_Call: Sending: {"params":{"properties":["volume","muted","name","version"]},"jsonrpc":"2.0","id":732408,"method":"Application.GetProperties"}
2015.11.01 19:09:17 4: XBMC_Call: Sending: {"params":{"properties":["skin","fullscreen"]},"jsonrpc":"2.0","id":269227,"method":"GUI.GetProperties"}
2015.11.01 19:09:17 4: XBMC_Call: Sending: {"jsonrpc":"2.0","id":"398042","method":"Player.GetActivePlayers"}
2015.11.01 19:09:17 4: XBMC_UpdatePlayerItem
2015.11.01 19:09:17 4: XBMC_Call: Sending: {"jsonrpc":"2.0","id":"319069","method":"Player.GetActivePlayers"}
2015.11.01 19:09:17 4: XBMC_Read: Decoding JSON message. Length: 149 Content: {"id":732408,"jsonrpc":"2.0","result":{"muted":false,"name":"Kodi","version":{"major":15,"minor":2,"revision":"02e7013","tag":"stable"},"volume":45}}
2015.11.01 19:09:17 4: XBMC_Read: Decoding JSON message. Length: 110 Content: {"id":269227,"jsonrpc":"2.0","result":{"fullscreen":true,"skin":{"id":"skin.confluence","name":"Confluence"}}}
2015.11.01 19:09:17 4: XBMC_Read: Decoding JSON message. Length: 72 Content: {"id":"398042","jsonrpc":"2.0","result":[{"playerid":1,"type":"video"}]}
2015.11.01 19:09:17 4: XBMC_Call: Sending: {"params":{"playerid":1,"properties":["time","totaltime","repeat","shuffled","speed","partymode"]},"jsonrpc":"2.0","id":394412,"method":"Player.GetProperties"}
2015.11.01 19:09:17 4: XBMC_Read: Decoding JSON message. Length: 72 Content: {"id":"319069","jsonrpc":"2.0","result":[{"playerid":1,"type":"video"}]}
2015.11.01 19:09:17 4: XBMC_Call: Sending: {"params":{"playerid":1,"properties":["artist","album","thumbnail","file","title","track","year","streamdetails","tvshowid"]},"jsonrpc":"2.0","id":958995,"method":"Player.GetItem"}
2015.11.01 19:09:17 4: XBMC_Read: Decoding JSON message. Length: 227 Content: {"id":394412,"jsonrpc":"2.0","result":{"partymode":false,"repeat":"off","shuffled":false,"speed":1,"time":{"hours":0,"milliseconds":0,"minutes":4,"seconds":13},"totaltime":{"hours":1,"milliseconds":0,"minutes":10,"seconds":1}}}
2015.11.01 19:09:17 4: XBMC_Read: Decoding JSON message. Length: 189 Content: {"id":958995,"jsonrpc":"2.0","result":{"item":{"id":22,"label":"ProSieben","thumbnail":"image://%2fhome%2fSenderlogos%2fProsieben.png/","title":"Galileo","type":"channel","year":0}}}
2015.11.01 19:09:25 4: XBMC_Check
2015.11.01 19:09:25 4: XBMC_CheckConnection: Connection still alive. Last data from Kodi received 7.95134496688843 s ago
2015.11.01 19:09:25 4: XBMC_Call: Sending: {"params":{"properties":["volume","muted","name","version"]},"jsonrpc":"2.0","id":318661,"method":"Application.GetProperties"}
2015.11.01 19:09:25 4: XBMC_Call: Sending: {"params":{"properties":["skin","fullscreen"]},"jsonrpc":"2.0","id":560014,"method":"GUI.GetProperties"}
2015.11.01 19:09:25 4: XBMC_Call: Sending: {"jsonrpc":"2.0","id":"128031","method":"Player.GetActivePlayers"}
2015.11.01 19:09:25 4: XBMC_UpdatePlayerItem
2015.11.01 19:09:25 4: XBMC_Call: Sending: {"jsonrpc":"2.0","id":"460462","method":"Player.GetActivePlayers"}
2015.11.01 19:09:25 4: XBMC_Read: Decoding JSON message. Length: 149 Content: {"id":318661,"jsonrpc":"2.0","result":{"muted":false,"name":"Kodi","version":{"major":15,"minor":2,"revision":"02e7013","tag":"stable"},"volume":45}}
2015.11.01 19:09:25 4: XBMC_Read: Decoding JSON message. Length: 110 Content: {"id":560014,"jsonrpc":"2.0","result":{"fullscreen":true,"skin":{"id":"skin.confluence","name":"Confluence"}}}
2015.11.01 19:09:25 4: XBMC_Read: Decoding JSON message. Length: 72 Content: {"id":"128031","jsonrpc":"2.0","result":[{"playerid":1,"type":"video"}]}
2015.11.01 19:09:25 4: XBMC_Call: Sending: {"params":{"playerid":1,"properties":["time","totaltime","repeat","shuffled","speed","partymode"]},"jsonrpc":"2.0","id":189083,"method":"Player.GetProperties"}
2015.11.01 19:09:25 4: XBMC_Read: Decoding JSON message. Length: 72 Content: {"id":"460462","jsonrpc":"2.0","result":[{"playerid":1,"type":"video"}]}
2015.11.01 19:09:25 4: XBMC_Call: Sending: {"params":{"playerid":1,"properties":["artist","album","thumbnail","file","title","track","year","streamdetails","tvshowid"]},"jsonrpc":"2.0","id":643290,"method":"Player.GetItem"}
2015.11.01 19:09:25 4: XBMC_Read: Decoding JSON message. Length: 227 Content: {"id":189083,"jsonrpc":"2.0","result":{"partymode":false,"repeat":"off","shuffled":false,"speed":1,"time":{"hours":0,"milliseconds":0,"minutes":4,"seconds":21},"totaltime":{"hours":1,"milliseconds":0,"minutes":10,"seconds":1}}}
2015.11.01 19:09:25 4: XBMC_Read: Decoding JSON message. Length: 189 Content: {"id":643290,"jsonrpc":"2.0","result":{"item":{"id":22,"label":"ProSieben","thumbnail":"image://%2fhome%2fSenderlogos%2fProsieben.png/","title":"Galileo","type":"channel","year":0}}}
2015.11.01 19:09:45 4: XBMC_Check
2015.11.01 19:09:45 4: XBMC_CheckConnection: Connection still alive. Last data from Kodi received 19.9570348262787 s ago
2015.11.01 19:09:45 4: XBMC_Call: Sending: {"params":{"properties":["volume","muted","name","version"]},"jsonrpc":"2.0","id":819895,"method":"Application.GetProperties"}
2015.11.01 19:09:45 4: XBMC_Call: Sending: {"params":{"properties":["skin","fullscreen"]},"jsonrpc":"2.0","id":651441,"method":"GUI.GetProperties"}
2015.11.01 19:09:45 4: XBMC_Call: Sending: {"jsonrpc":"2.0","id":"191262","method":"Player.GetActivePlayers"}
2015.11.01 19:09:45 4: XBMC_UpdatePlayerItem
2015.11.01 19:09:45 4: XBMC_Call: Sending: {"jsonrpc":"2.0","id":"961414","method":"Player.GetActivePlayers"}
2015.11.01 19:09:45 4: XBMC_Read: Decoding JSON message. Length: 149 Content: {"id":819895,"jsonrpc":"2.0","result":{"muted":false,"name":"Kodi","version":{"major":15,"minor":2,"revision":"02e7013","tag":"stable"},"volume":45}}
2015.11.01 19:09:45 4: XBMC_Read: Decoding JSON message. Length: 110 Content: {"id":651441,"jsonrpc":"2.0","result":{"fullscreen":true,"skin":{"id":"skin.confluence","name":"Confluence"}}}
Not an ARRAY reference at ./FHEM/70_XBMC.pm line 647.
2015.11.01 19:09:46 1: CallBlockingFn: Can't connect to localhost:7072: IO::Socket::INET: connect: Verbindungsaufbau abgelehnt
2015.11.02 03:36:12 1: Including fhem.cfg
Leider war zu diesem Zeitpunkt noch nicht die modifizierte version vom 31.10 eingespielt allerdings hatte ich das verbose noch hochgesetzt.
Um 19.09uhr hat es sich verabschiedet, jetzt eben ist es mir aufgefallen...
Werde die andere Version noch einspielen und berichten...
Ok, danke. Bringt schon mal etwas Erkenntnis, aber leider noch keinen Durchbruch. Bitte nochmal die Version im Anhang laufen lassen, die macht dann noch ein paar mehr Ausgaben, die mir dann evtl. etwas sagen. Wer es verantworten kann, gerne mit verbose 4.
Habe das Erzeugen der Message-IDs etwas verändert. Evtl. tritt es dadurch jetzt auch gar nicht mehr auf.
Nochmal ein paar Fragen zur Sache:
- seit wann tritt das Problem auf? So wie ich das im Moment sehe, sollte das schon sehr lange der Fall sein
- ist ein Muster zu erkennen wann es passiert? Zum Beispiel nur, wenn FHEM sehr lange läuft?
Zu 1.tens - Da hast du recht also bevor ich es darauf zu ordnen konnte ist das auch schon öfter passiert da war ich nur noch nicht schlau genug fehlersuche etc. ich kann dazu auch nochmal die alten logs vernehmen da wird aber wegen verbose level warscheinlich auch nicht viel drinstehen.
Zu 2.tens - Leider Nein ich wüsste da nicht wo ich anfangen soll ist auf jeden fall 2 mal während meiner abwesenheit auch passiert als quasi nichts wissentlich am system kodi sowie fhem verändert wurde. Wenn ich das haus verlasse schaltet ein notify auch kodi auf stop aber das ist zum Zeitpunkt des Absturzes schon stunden her gewesen. Wenn ich heim komme wird automatisch musik gestartet, da ist des neulich auch mal passiert als ich was vergessen hatte und nochmal kurz zurück musste hat er mir die musik und alles angeschaltet als ich dann kurz darauf wieder verschwunden bin hat er sich wieder verabschiedet...
Bei mir läuft Kodi AIO-style Musik TV Serien alles lass ich darüber laufen das ding läuft 24/7 auf einem NUC mit ubuntu Server. Das gleiche gilt auch für fhem das aber aktuell auf nem rpi2 direkt daneben läuft...
Gibt es eine Möglichkeit über das Modul eine LiveTv Sender zu wechseln. In Kodi wäre das möglich mit
{ "jsonrpc": "2.0", "method": "Player.Open", "params": { "item": { "channelid": 5} }, "id": 1 } Für Channel 5 als Beispiel
Geht im Moment nicht. Habs mir aber auf Todo gesetzt...
Hi mit deinem Codeschnipsel kann ich das per Jsonraw aber machen. :) Zwar etwas unkomfortabel aber es geht. :D
set <device> jsonraw { "jsonrpc": "2.0", "method": "Player.Open", "params": { "item": { "channelid": 21} }, "id": 1 }
Die 21 ist bei mir z.B. ProSieben, muss man dann aus den Readings die ID's fischen.
Cool danke fürs Todo und danke für die Zwischenlösung.
Bitte mal ausprobieren. Channel schalten mit "set kodi openchannelid 5". Kann es bei mir leider nicht probieren, weil ich kein TV hab in Kodi.
Jo funktioniert, klasse! :)
Danke dir!
Bisher auch keine neuen Vorkommnisse bzgl. der abstürze...
Kann auch bestätigen, dass ich keine weiteren Abstürze mehr hatte.
hi,
ich habe Kodi (aktuell) via
define HTPC XBMC 192.168.100.80:8080 http xbmc xbmc
angelegt, Port&User korrekt, User+PW auch. Teilweise kann ich Steuerbefehle abschicken, teilweise taucht in den Logs folgendes auf.
ZitatXBMC_HTTP_Request http://192.168.100.80:8080/jsonrpc: Select timeout/error:
Kommunikation über LAN. Der Device Status von "HTPC" steht dauerhaft auf Initialized, müsste da nicht connected stehen? Angelegte Notifys abhängig vom Play/Pause Status von Kodi sind wirkungslos. Unter dem Modul selbst habe ich auch kein Get-Befehl sondern nur Set. Ist das normal oder liegt das daran dass die Kommunikation eventuell nicht komplett aufgebaut worden ist? Löschen und Neuanlegen ändert nichts.
Danke im Voraus!
LG Thomas
Benutzt du bewusst http anstatt tcp? Wenn nein, dann solltest du auf tcp umstellen, da der Funktionsumfang von http sehr eingeschränkt ist (zB keine Statusänderungen, wie du auch bemerkt hast).
Hallo,
Ist die Version aus #561 nur eine Versuchsversion oder die offizielle? Denn ich habe im log mehrfach soetwas:
2015.11.08 08:50:27 2: XBMC_ProcessResponse: Not received a player array! Pending command cancelled!
2015.11.08 08:50:27 2: XBMC_ProcessResponse: Keys in PendingPlayerCMDs: ,110451,197696,972371,221358,398822,947368,378372,16021,319792,805527,648505,844207,42848,191078,930526,74489,120757,492482,71426,936926,487807,956461,560071,290531,254925,479417,882276,585564,624673,993661,768456,688590,839996,688022,845935,469208,338269,678077,944792,230984,361207,843607,457030,964200,48219,199419,251821,276506,542991,232066,411141,99270,257741,633066,188758,839834,754841,413600,594216,921482,114562,634926,442801,587862,308263,715369,833897,289316,904434,264046,80019,60096,49129,73583,146221,437527,579414,979269,47456,946082,286044,463,269881,81864,394721,527456,194820,853468,571366,35286,870065,933350,655595,822139,962222,594493,911453,582934,272598,281683,512283,220030,796356,699117,604347,521821,308534,541973,710076,726765,654965,856200,909235,863267,923668,444317,593013,6903,809480,664543,57748,198864,863840,29786,773950,938432,452540,611765,74599,721739,909832,920337,511112,879982,192552,27695,377866,86355,605311,475545,619552,546214,776568,595361,226756,821506,809790,851335,787652,728549,707920,413967,597188,806553,376984,495092,720637,159344,416301,723100,797911,568052,647577,330924,985170,973170,297903,356254,612633,816708,830742,252365,936578,610461,705312,342846,340942,481434,757442,655705,87833,36654,31568,859220,356957,878352,197496,410854,749381,849831,20361,557030,341930,417051,116834,800421,257267,222812,857198,355219,740499,551218,197130,8742,136044,129145,845569,805828,959546,151280,700224,966451,212037,533638,218613,712741,855140,992411,916569,628409,578478,872692,713321,474689,854602,504776,547458,854040,16316,162372,222587,557777,775915,912154,458045,501191,347815,799570,13754,586747,455120,65924,959085,603441,486459,163111,411622,17891,372269,169099,456658,622457,451454,81236,516895,482020,824257,614300,786661,334773,873595,51351,786110,310113,281423,898814,40255,926866,378194,862585,502573,129827,340580,940035,354574,620519,375620,689352,154307,316499,394477,223299,609968,975217,978722,819161,182690,328124,485867,750458,766111,466747,761732,405799,679373,966110,410066,11695,608493,730211,504865,411592,647869,222798,768758,732787,176298,16130,71474,372871,480345,773160,579114,82295,888335,115225,908295,723500,780516,197195,101020,557642,793283,228145,512642,813580,131002,469257,788854,311769,454814,562608,553643,903042,479528,997415,532302,739435,871280,242185,278766,246451,657331,265523,29261,339793,883685,459031,32553,978803,493248,256225,858178,866654,201531,671408,278097,240099,995561,580097,120434,383585,672939,521402,654178,771056,776488,76403,82050,312762,293902,827660,37076,799496,29039,829480,44997,206681,955513,454800,901131,155855,382874,323445,385890,270591,876051,631538,745012,969611,288946,693745,846898,494446,376108,882013,133581,51203,499844,910373,932185,599333,518937,769924,514874,732529,269333,322004,438863,799115,58406,722551,67420,921775,655402,932240,870181,436383,16954,263302,66306,870625,701809,266237,701787,545694,300008,900727,97730,704398,221486,350212,598706,165472,604464,668969,773194,782646,400187,721167,95678,140965,110948,311151,785210,563734,670952,366768,648215,113197,688489,385969,115253,407128,486172,570094,880909,769448,492806,781957,364349,842367,993879,789799,884717,275412,236828,592896,379596,994099,652266,533727,235873,560223,891407,249076,574812,399436,711475,83722,134977,712432,91683,335921,897072,41381,710569,346028,735353,353604,13486,502508,297826,540341,403105,860788,66414,581369,450054,557947,157796,205197,790185,585558,133090,976872,180360,894496,596303,819551,809174,629906,888001,290622,324177,758215,232324,702507,616970,764760,438844,439594,676095,494726,33637,162518,541377,948985,60654,523995,517307,639558,31859,55302,638926,28755,92400,733972,466841,632300,774415,333796,879465,258920,717531,8707,882459,691244,751212,206797,318407,171069,190184,537146,352035,135226,944811,970637,20220,565060,21700,518924,430471,504340,670608,303155,698481,693808,827176,210518,450758,133523,448582,515988,90907,273355,766953,532092,306083,396976,318612,669171,403001,601994,746290,808068,683256,806823,744830,586060,546173,885472,854156,598487,406193,882870,65210,534595,167399,580999,222141,330742,253060,328708,302310,652755,709230,297413,352906,605408,711001,416045,335195,37494,922508,414994,950638,990828,242513,42442,43312,117126,792669,846075,877088,118720,369835,54877,657130,742566,432097,424717,253409,139935,775356,376013,962294,429465,573213,142289,996997,773348,242381,185830,511354,981589,705395,455624,548838,146104,680314,509105,592645,457710,471352,780138,261740,724539,852976,371492,966240,217632,410077,405290,446344,700026,201122,798236,675289,376889,277338,702880,824170,244685,588966,584183,49249,49298,755731,791666,145454,78298,331460,199766,882597,369531,717794,467275,402576,947607,11994,960565,200224,346227,148047,930668,766002,885685,440553,52304,415678,181977,373308,146594,64568,362855,858938,570924,357796,493850,753693,109806,539896,578988,365030,392696,627767,985919,901280,78281,507157,289373,783205,625149,573768,345519,968028,945200,987393,364047,555196,62781,323420,282019,22097,498011,617274,625852,972697,297731,918237,404439,540694,456512,666372,124694,655807,683212,351232,506794,984430,554418,677887,123721,244248,620611,158116,269820,266981,479242,743191,659982,687484,724348,134001,772647,777887,221721,615130,503040,837816,929874,22690,276188,139948,140721,641413,648390,252994,260439,455802,134846,123907,457459,601369,80073,146278,470745,952887,333347,340584,479657,997853,453539,298036,695976,477061,435571,133396,468015,339522,142458,739241,416559,399073,142857,655898,745298,821356,835651,402544,771847,228081,729754,393507,788871,930583,854398,722770,738098,117865,258701,209515,188338,510449,37124,418021,697322,985144,699222,500624,813306,619172,756057,86649,520172,399964,101741,43056,315946,398053,678378,583884,470687,313727,947207,621552,503375,315018,373405,602081,557504,364753,330528,241729,529952,413867,657652,29672,456259,470034,503590,794211,108435,210569,516053,379108,444202,297282,667390,94420,703935,496741,387180,378518,80301,695641,953957,518680,77578,9923,124013,851688,629827,849639,863332,422635,316146,189278,608015,326231,779813,553702,112075,529359,944025,956379,114678,631952,766779,633107,700887,414657,21078,239503,832335,192172,16725,794681,470938,945643,960397,672511,408077,436525,389792,584047,953734,162504,640121,13503,843069,549652,558542,229221,276866,383334,584834,411312,55229,415130,413304,216552,349459,314799,39168,314103,481506,57208,27788,460892,936491,994754,840151,628127,134757,506053,648819,582164,365300,751753,103201,914989,609467,257235,570834,994069,804750,168240,741452,70253,312064,350140,175331,775062,716465,998555,228800,576993,518317,658866,551207,819980,807834,702485,988834,51178,183054,246135,627783,962740,31657,466338,844930,618626,647770,466756,855448,677130,454256,805941,833670,628364,233479,964780,35034,697225,732574,194106,605362,176517,91459,967154,429460,23764,506966,481750,191584,984574,69275,31870,461614,466784,586206,560747,223612,180274,37870,104921,889795,978567,879092,200402,774271,939490,980761,442503,152374,131595,554977,365314,916047,595926,549570,371112,461855,216854,9936,559763,320905,177139,350720,809664,6013,821386,775900,941986,623808,341380,453831,480737,352653,559936,87070,94798,502007,683067,64006,109934,688897,242633,191557,417872,462976,143091,355770,851456,232122,366642,640621,808839,675731,742650,592322,565221,359906,740854,97121,772929,332031,756908,992482,480624,983977,712387,920482,443906,51002,430919,352560,881153,702149,746856,495461,770171,36321,212792,738442,912885,42861,988424,965308,732304,266733,137917,527552,897653,339715,796637,432743,18175,221961,818392,730274,625792,950380,628666,346083,288692,679693,51497,616465,562654,877079,497049,896812,77951,511306,758278,199101,200013,890070,371282,60230,411159,346680,398272,407673,106890,365431,717725,623749,304686,689866,165026,983912,621902,362070,367037,756595,954755,936383,904157,850341,785995,295008,481123,777563,396609,160648,33473,813138,313878,963664,235993,241030,726089,897646,858681,620104,470638,833591,261430,770159,371350,868501,930224,713329,698957,800835,483171,488449,450573,982865,873561,46871,382856,791636,729802,673107,66485,832444,920518,954959,984576,583915,529885,80788,126113,786507,688656,271867,360994,411316,227205,835440,816603,763756,825024,320714,888398,753704,202698,506438,12058,890215,910947,277122,249979,807200,948338,632857,606570,545756,635264,543182,12271,278474,684628,421259,455908,561037,876600,109098,130175,244512,33294,634018,776639,821547,23492,660354,895803,45163,267123,927999,212808,351237,118710,151204,385680,587460,569332,630083,238394,806723,946919,657524,237150,898026,753950,339747,632997,484989,690360,967051,674089,552453,982600,398867,860696,197677,396120,777689,106014,970686,996513,587492,37803,819747,911395,794144,38665,650471,931702,457148,263531,346654,720805,611025,466134,168822,22499,948962,704916,14193,507322,514550,60194,348689,395752,512373,159006,845496,804710,96260,169440,653655,692938,198126,502011,130091,448731,96388,961835,823225,704575,877235,332930,978537,578299,843638,6012,365209,977956,12137,779212,187894,193719,956433,420817,153753,152358,555870,822164,866384,768960,319062,521371,345330,268028,423054,355360,628387,715492,128908,111589,842922,474738,223256,82620,711691,266740,335937,511289,792360,434185,555329,405911,887446,887475,67771,541681,907682,459188,565124,573343,549401,284669,588492,551868,145131,712711,413606,404983,918038,585414,697110,958718,624106,720195,898833,832857,384258,663856,411331,171396,720919,873040,185970,916475,601037,893663,252818,536288,258143,187898,742499,568569,335845,377875,234221,290512,722229,586618,392115,839661,979767,31050,193099,147587,898877,901761,884532,943195,303934,139985,64449,835769,518328,772865,355975,497577,607485,428449,103311,723999,130455,89876,624829,160430,544281,125221,699781,523546,103315,132196,775200,706922,160468,162314,448447,654654,402749,751222,109509,448848,953996,993918,687564,465829,838087,771169,658223,395840,850939,595722,159761,567646,311521,317185,492443,958858,446728,492384,93841,721084,733211,235738,242459,455103,812241,183280,324898,354155,43721,315177,460346,413981,890955,348727,247060,982657,214256,823572,761018,897410,132199,88060,535015,870931,64428,587616,646748,38016,189244,953244,571460,734345,261595,189192,980097,389325,702165,265100,219791,416917,986831,213262,429957,385298,825789,141731,293810,159362,842875,155937,272423,842561,801229,218510,254730,136301,140155,726412,631845,21215,58226,581267,974204,404069,619080,277675,822858,255889,511564,316992,334071,55274,520315,951215,48442,592326,479588,353253,282785,468111,830436,645444,606127,853266,254071,875696,693142,485700,18354,541044,902202,512900,980023,758836,29971,788119,99048,645288,88443,489157,782578,650070,16281,81489,914695,911658,416027,166363,541928,331816,283563,239154,780646,869098,13239,200321,316796,169985,992905,668277,825421,432645,960925,672500,844977,562973,396146,783595,437406,967944,784472,68384,151318,654187,566974,952752,173557,185857,463314,924090,539790,171300,265451,572303,966109,15933,976689,294224,654162,237554,569437,765495,286127,618336,142814,257476,351605,609083,584831,614340,32493,702666,586543,135520,856687,411887,75194,625186,919017,643567,779558,409564,795911,121095,664121,168340,177008,977835,799034,353016,540882,285557,717771,143570,375888,993137,280416,212188,782093,14111,834670,293601,122992,594316,991941,337522,638241,597215,936916,69538,784953,458878,836954,628649,358640,135322,107090,398370,262647,822964,802951,374674,430379,624685,556872,379631,157019,424842,781264,757853,219383,504986,35061,197314,328290,695874,499062,363042,605484,863427,526979,343488,433772,745070,232870,393561,634613,247790,558935,624661,509857,301025,457152,448001,307709,733648,968636,200809,525583,34744,94936,757452,371861,292752,782433,202560,683571,842905,238011,195470,158475,782598,225132,809724,279975,536057,567683,310782,963864,767156,763431,837336,656793,311234,952747,653801,203027,908225,559618,108701,457457,779494,203692,454900,169125,15901,786413,105946,441063,432990,69338,128824,123272,853697,350941,718156,432421,111401,229143,707077,772262,961675,477017,544174,380077,96108,295035,225113,215313,137626,18888,236844,190636,544521,918522,244736,834057,637705,264238,901903,846448,217135,308645,805668,116073,682291,628033,959299,564059,603464,499862,664405,894614,68194,68338,354108,63753,853900,771455,859459,191507,397067,281770,880531,845865,969354,400733,174814,774520,851350,478217,303193,35910,238851,540384,17791,740750,778981,539470,776872,17794,231578,115115,214741,156018,441853,117342,413185,550354,652453,980708,319968,725030,991187,732173,69765,909209,169801,883956,287887,577839,542479,988616,358008,695200,578016,914477,290750,532272,792650,862211,878737,120140,845560,69168,709521,827308,659797,243346,161806,487930,68845,364504,941938,448313,314807,773384,810445,907116,735921,125240,153217,181565,942875,588446,762017,190477,568032,676483,110514,932704,593072,357232,700693,555203,951467,777889,149543,156412,813463,355340,27361,46114,907684,52393,667812,356827,562160,142167,41279,452270,519484,799872,200629,130239,544679,365889,453039,506343,945664,996316,815218,323642,954948,252086,620069,272550,542365,409961,253464,415711,487442,191179,117243,787256,479826,647696,54593,209831,874422,170816,231871,273378,671506,823079,382851,731633,584321,156799,578947,415950,183251,333112,582292,323106,665262,423811,822833,536737,738992,803619,896770,63302,43237,932380,672200,489295,816565,561605,952971,476834,28494,527434,205677,508479,492423,588109,16655,587585,145512,259892,835306,517475,30382,936361,321473,126132,815443,261703,73182,443039,68219,693256,855534,120095,497128,409789,136509,512598,479476,971053,360154,511190,355170,584460,741104,785821,182210,694963,451000,882250,654715,69783,962520,984443,238336,600578,364199,512450,502467,473731,837416,699457,280461,988200,413819,931958,921671,930490,91331,926507,417293,503686,631540,90270,623175,16155,870820,396294,959388,794487,972237,536205,659632,908429,112521,385953,946091,747135,344124,957414,831595,345342,793742,685085,579259,518519,76464,927959,129182,691002,836391,264894,619038,786786,693401,206022,813057,163131,458589,245970,962180,119617,545837,85034,933619,254640,594989,351142,228459,563227,486274,844683,648387,455165,686216,835210,268838,72486,119798,417569,37180,869265,121871,226120,178924,889236,19377,140951,976885,147111,250509,880077,203969,467954,14755,439336,13479,252711,629176,482125,827864,450062,300930,546071,791039,533988,223083,339884,930497,462387,300203,136035,225735,15989,931135,585899,662598,638043,977344,208534,815259,392126,976952,253590,824446,687556,215150,403303,62639,975823,342836,599975,148385,788973,848493,346940,261378,547866,886729,973390,365219,485837,922940,759108,396266
2015.11.08 08:50:27 2: XBMC_ProcessRead: Faulty message: {"id":6012,"jsonrpc":"2.0","result":{"fullscreen":false,"skin":{"id":"skin.confluence","name":"Confluence"}}}
Bei laufendem TV allerdings nicht.
Umschalten kann ich mit dem von dir genannten Befehl auf den vierten Kanal, andere Kanäle gehen nicht.
Aber es wird immer brauchbarer :)
Gruß
Hans
Sehr interessant! Das ist jetzt die offizielle Version, aber ich hab die Prüfung erstmal drin gelassen. Immer wenn die Meldung kommt, wäre fhem ansonsten abgestürzt.
Da es bei dir regelmäßig aufzutreten scheint: Könntest du mir bitte mal ein verbose5-Log machen? Vor allem auch mit viel XBMC-Log davor. Diese Liste "Keys in PendingPlayerCMDs" sind alles Kommandos, die irgendwann mal nicht zufriedenstellend bearbeitet worden sind.
Zu dem TV-Ding:
Seltsam das nur 4 geht :| Auch hier bitte mal ein verbose5-Log. Bitte einmal von der vier, die ja funktioniert und einmal von einem Kanal, der nicht funktioniert.
Nur eine Idee (ich kenn das TV-Ding nicht): Man gibt ja eine Channel-ID an. Kann es sein, dass die Channel-IDs nicht 1:1 den Programmnummern entsprechen?
Klar, gerne:
2015.11.08 13:55:41 1: joescompi:9090 reappeared (xbmc_joe)
2015.11.08 13:55:41 4: XBMC_Call: Sending: {"params":{"properties":["volume","muted","name","version"]},"id":6920,"method":"Application.GetProperties","jsonrpc":"2.0"}
2015.11.08 13:55:41 5: SW: 7b22706172616d73223a7b2270726f70657274696573223a5b22766f6c756d65222c226d75746564222c226e616d65222c2276657273696f6e225d7d2c226964223a363932302c226d6574686f64223a224170706c69636174696f6e2e47657450726f70657274696573222c226a736f6e727063223a22322e30227d
2015.11.08 13:55:41 4: XBMC_Call: Sending: {"jsonrpc":"2.0","params":{"properties":["skin","fullscreen"]},"id":6921,"method":"GUI.GetProperties"}
2015.11.08 13:55:41 5: SW: 7b226a736f6e727063223a22322e30222c22706172616d73223a7b2270726f70657274696573223a5b22736b696e222c2266756c6c73637265656e225d7d2c226964223a363932312c226d6574686f64223a224755492e47657450726f70657274696573227d
2015.11.08 13:55:41 4: XBMC_Call: Sending: {"method":"Player.GetActivePlayers","id":"6922","jsonrpc":"2.0"}
2015.11.08 13:55:41 5: SW: 7b226d6574686f64223a22506c617965722e476574416374697665506c6179657273222c226964223a2236393232222c226a736f6e727063223a22322e30227d
2015.11.08 13:55:41 4: XBMC_UpdatePlayerItem
2015.11.08 13:55:41 4: XBMC_UpdatePlayerItem - cancelled (disconnected or not playing)
2015.11.08 13:55:41 5: XBMC_ProcessRead
2015.11.08 13:55:41 5: No PARTIAL buffer
2015.11.08 13:55:41 5: XBMC_Read: Incoming data: {"id":6920,"jsonrpc":"2.0","result":{"muted":false,"name":"Kodi","version":{"major":15,"minor":2,"revision":"02e7013","tag":"stable"},"volume":70}}
2015.11.08 13:55:41 5: XBMC_Read: Current processing buffer (PARTIAL + incoming data): {"id":6920,"jsonrpc":"2.0","result":{"muted":false,"name":"Kodi","version":{"major":15,"minor":2,"revision":"02e7013","tag":"stable"},"volume":70}}
2015.11.08 13:55:41 4: XBMC_Read: Decoding JSON message. Length: 147 Content: {"id":6920,"jsonrpc":"2.0","result":{"muted":false,"name":"Kodi","version":{"major":15,"minor":2,"revision":"02e7013","tag":"stable"},"volume":70}}
2015.11.08 13:55:41 5: XBMC_Read: Tail:
2015.11.08 13:55:41 5: XBMC_Read: PARTIAL:
2015.11.08 13:55:41 5: XBMC_ProcessRead
2015.11.08 13:55:41 5: No PARTIAL buffer
2015.11.08 13:55:41 5: XBMC_Read: Incoming data: {"id":6921,"jsonrpc":"2.0","result":{"fullscreen":false,"skin":{"id":"skin.confluence","name":"Confluence"}}}
2015.11.08 13:55:41 5: XBMC_Read: Current processing buffer (PARTIAL + incoming data): {"id":6921,"jsonrpc":"2.0","result":{"fullscreen":false,"skin":{"id":"skin.confluence","name":"Confluence"}}}
2015.11.08 13:55:41 4: XBMC_Read: Decoding JSON message. Length: 109 Content: {"id":6921,"jsonrpc":"2.0","result":{"fullscreen":false,"skin":{"id":"skin.confluence","name":"Confluence"}}}
2015.11.08 13:55:41 5: XBMC_Read: Tail:
2015.11.08 13:55:41 5: XBMC_Read: PARTIAL:
2015.11.08 13:55:41 5: XBMC_ProcessRead
2015.11.08 13:55:41 5: No PARTIAL buffer
2015.11.08 13:55:41 5: XBMC_Read: Incoming data: {"id":"6922","jsonrpc":"2.0","result":[]}
2015.11.08 13:55:41 5: XBMC_Read: Current processing buffer (PARTIAL + incoming data): {"id":"6922","jsonrpc":"2.0","result":[]}
2015.11.08 13:55:41 4: XBMC_Read: Decoding JSON message. Length: 41 Content: {"id":"6922","jsonrpc":"2.0","result":[]}
2015.11.08 13:55:41 5: XBMC_Read: Tail:
2015.11.08 13:55:41 5: XBMC_Read: PARTIAL:
2015.11.08 13:56:01 5: XBMC_ProcessRead
2015.11.08 13:56:01 5: No PARTIAL buffer
2015.11.08 13:56:01 5: XBMC_Read: Incoming data: {"jsonrpc":"2.0","method":"Player.OnPlay","params":{"data":{"item":{"channeltype":"tv","id":84,"title":"Das Erste","type":"channel"},"player":{"playerid":1,"speed":1}},"sender":"xbmc"}}
2015.11.08 13:56:01 5: XBMC_Read: Current processing buffer (PARTIAL + incoming data): {"jsonrpc":"2.0","method":"Player.OnPlay","params":{"data":{"item":{"channeltype":"tv","id":84,"title":"Das Erste","type":"channel"},"player":{"playerid":1,"speed":1}},"sender":"xbmc"}}
2015.11.08 13:56:01 4: XBMC_Read: Decoding JSON message. Length: 185 Content: {"jsonrpc":"2.0","method":"Player.OnPlay","params":{"data":{"item":{"channeltype":"tv","id":84,"title":"Das Erste","type":"channel"},"player":{"playerid":1,"speed":1}},"sender":"xbmc"}}
2015.11.08 13:56:01 4: XBMC_Call: Sending: {"jsonrpc":"2.0","id":"6924","method":"Player.GetActivePlayers"}
2015.11.08 13:56:01 5: SW: 7b226a736f6e727063223a22322e30222c226964223a2236393234222c226d6574686f64223a22506c617965722e476574416374697665506c6179657273227d
2015.11.08 13:56:01 5: XBMC_Read: Tail:
2015.11.08 13:56:01 5: XBMC_Read: PARTIAL:
2015.11.08 13:56:01 5: XBMC_ProcessRead
2015.11.08 13:56:01 5: No PARTIAL buffer
2015.11.08 13:56:01 5: XBMC_Read: Incoming data: {"id":"6924","jsonrpc":"2.0","result":[{"playerid":1,"type":"video"}]}
2015.11.08 13:56:01 5: XBMC_Read: Current processing buffer (PARTIAL + incoming data): {"id":"6924","jsonrpc":"2.0","result":[{"playerid":1,"type":"video"}]}
2015.11.08 13:56:01 4: XBMC_Read: Decoding JSON message. Length: 70 Content: {"id":"6924","jsonrpc":"2.0","result":[{"playerid":1,"type":"video"}]}
2015.11.08 13:56:01 4: XBMC_Call: Sending: {"jsonrpc":"2.0","method":"Player.GetProperties","id":6925,"params":{"properties":["time","totaltime","repeat","shuffled","speed","partymode"],"playerid":1}}
2015.11.08 13:56:01 5: SW: 7b226a736f6e727063223a22322e30222c226d6574686f64223a22506c617965722e47657450726f70657274696573222c226964223a363932352c22706172616d73223a7b2270726f70657274696573223a5b2274696d65222c22746f74616c74696d65222c22726570656174222c2273687566666c6564222c227370656564222c2270617274796d6f6465225d2c22706c617965726964223a317d7d
2015.11.08 13:56:01 5: XBMC_Read: Tail:
2015.11.08 13:56:01 5: XBMC_Read: PARTIAL:
2015.11.08 13:56:01 5: XBMC_ProcessRead
2015.11.08 13:56:01 5: No PARTIAL buffer
2015.11.08 13:56:01 5: XBMC_Read: Incoming data: {"id":6925,"jsonrpc":"2.0","result":{"partymode":false,"repeat":"off","shuffled":false,"speed":0,"time":{"hours":0,"milliseconds":0,"minutes":26,"seconds":1},"totaltime":{"hours":1,"milliseconds":0,"minutes":30,"seconds":0}}}
2015.11.08 13:56:01 5: XBMC_Read: Current processing buffer (PARTIAL + incoming data): {"id":6925,"jsonrpc":"2.0","result":{"partymode":false,"repeat":"off","shuffled":false,"speed":0,"time":{"hours":0,"milliseconds":0,"minutes":26,"seconds":1},"totaltime":{"hours":1,"milliseconds":0,"minutes":30,"seconds":0}}}
2015.11.08 13:56:01 4: XBMC_Read: Decoding JSON message. Length: 225 Content: {"id":6925,"jsonrpc":"2.0","result":{"partymode":false,"repeat":"off","shuffled":false,"speed":0,"time":{"hours":0,"milliseconds":0,"minutes":26,"seconds":1},"totaltime":{"hours":1,"milliseconds":0,"minutes":30,"seconds":0}}}
2015.11.08 13:56:01 5: XBMC_Read: Tail:
2015.11.08 13:56:01 5: XBMC_Read: PARTIAL:
2015.11.08 13:56:11 5: XBMC_ProcessRead
2015.11.08 13:56:11 5: No PARTIAL buffer
2015.11.08 13:56:11 5: XBMC_Read: Incoming data: {"jsonrpc":"2.0","method":"Player.OnStop","params":{"data":{"end":true,"item":{"channeltype":"tv","id":94,"title":"ZDF","type":"channel"}},"sender":"xbmc"}}
2015.11.08 13:56:11 5: XBMC_Read: Current processing buffer (PARTIAL + incoming data): {"jsonrpc":"2.0","method":"Player.OnStop","params":{"data":{"end":true,"item":{"channeltype":"tv","id":94,"title":"ZDF","type":"channel"}},"sender":"xbmc"}}
2015.11.08 13:56:11 4: XBMC_Read: Decoding JSON message. Length: 156 Content: {"jsonrpc":"2.0","method":"Player.OnStop","params":{"data":{"end":true,"item":{"channeltype":"tv","id":94,"title":"ZDF","type":"channel"}},"sender":"xbmc"}}
2015.11.08 13:56:11 5: XBMC_Read: Tail:
2015.11.08 13:56:11 5: XBMC_Read: PARTIAL:
2015.11.08 13:56:11 5: XBMC_ProcessRead
2015.11.08 13:56:11 5: No PARTIAL buffer
2015.11.08 13:56:11 5: XBMC_Read: Incoming data: {"jsonrpc":"2.0","method":"Player.OnPlay","params":{"data":{"item":{"channeltype":"tv","id":94,"title":"ZDF","type":"channel"},"player":{"playerid":1,"speed":1}},"sender":"xbmc"}}
2015.11.08 13:56:11 5: XBMC_Read: Current processing buffer (PARTIAL + incoming data): {"jsonrpc":"2.0","method":"Player.OnPlay","params":{"data":{"item":{"channeltype":"tv","id":94,"title":"ZDF","type":"channel"},"player":{"playerid":1,"speed":1}},"sender":"xbmc"}}
2015.11.08 13:56:11 4: XBMC_Read: Decoding JSON message. Length: 179 Content: {"jsonrpc":"2.0","method":"Player.OnPlay","params":{"data":{"item":{"channeltype":"tv","id":94,"title":"ZDF","type":"channel"},"player":{"playerid":1,"speed":1}},"sender":"xbmc"}}
2015.11.08 13:56:11 4: XBMC_Call: Sending: {"method":"Player.GetActivePlayers","id":"6927","jsonrpc":"2.0"}
2015.11.08 13:56:11 5: SW: 7b226d6574686f64223a22506c617965722e476574416374697665506c6179657273222c226964223a2236393237222c226a736f6e727063223a22322e30227d
2015.11.08 13:56:11 5: XBMC_Read: Tail:
2015.11.08 13:56:11 5: XBMC_Read: PARTIAL:
2015.11.08 13:56:11 5: XBMC_ProcessRead
2015.11.08 13:56:11 5: No PARTIAL buffer
2015.11.08 13:56:11 5: XBMC_Read: Incoming data: {"id":"6927","jsonrpc":"2.0","result":[{"playerid":1,"type":"video"}]}
2015.11.08 13:56:11 5: XBMC_Read: Current processing buffer (PARTIAL + incoming data): {"id":"6927","jsonrpc":"2.0","result":[{"playerid":1,"type":"video"}]}
2015.11.08 13:56:11 4: XBMC_Read: Decoding JSON message. Length: 70 Content: {"id":"6927","jsonrpc":"2.0","result":[{"playerid":1,"type":"video"}]}
2015.11.08 13:56:11 4: XBMC_Call: Sending: {"params":{"properties":["time","totaltime","repeat","shuffled","speed","partymode"],"playerid":1},"method":"Player.GetProperties","id":6928,"jsonrpc":"2.0"}
2015.11.08 13:56:11 5: SW: 7b22706172616d73223a7b2270726f70657274696573223a5b2274696d65222c22746f74616c74696d65222c22726570656174222c2273687566666c6564222c227370656564222c2270617274796d6f6465225d2c22706c617965726964223a317d2c226d6574686f64223a22506c617965722e47657450726f70657274696573222c226964223a363932382c226a736f6e727063223a22322e30227d
2015.11.08 13:56:11 5: XBMC_Read: Tail:
2015.11.08 13:56:11 5: XBMC_Read: PARTIAL:
2015.11.08 13:56:11 5: XBMC_ProcessRead
2015.11.08 13:56:11 5: No PARTIAL buffer
2015.11.08 13:56:11 5: XBMC_Read: Incoming data: {"id":6928,"jsonrpc":"2.0","result":{"partymode":false,"repeat":"off","shuffled":false,"speed":0,"time":{"hours":0,"milliseconds":0,"minutes":31,"seconds":11},"totaltime":{"hours":0,"milliseconds":0,"minutes":40,"seconds":0}}}
2015.11.08 13:56:11 5: XBMC_Read: Current processing buffer (PARTIAL + incoming data): {"id":6928,"jsonrpc":"2.0","result":{"partymode":false,"repeat":"off","shuffled":false,"speed":0,"time":{"hours":0,"milliseconds":0,"minutes":31,"seconds":11},"totaltime":{"hours":0,"milliseconds":0,"minutes":40,"seconds":0}}}
2015.11.08 13:56:11 4: XBMC_Read: Decoding JSON message. Length: 226 Content: {"id":6928,"jsonrpc":"2.0","result":{"partymode":false,"repeat":"off","shuffled":false,"speed":0,"time":{"hours":0,"milliseconds":0,"minutes":31,"seconds":11},"totaltime":{"hours":0,"milliseconds":0,"minutes":40,"seconds":0}}}
2015.11.08 13:56:11 5: XBMC_Read: Tail:
2015.11.08 13:56:11 5: XBMC_Read: PARTIAL:
2015.11.08 13:56:18 5: XBMC_ProcessRead
2015.11.08 13:56:18 5: No PARTIAL buffer
2015.11.08 13:56:18 5: XBMC_Read: Incoming data: {"jsonrpc":"2.0","method":"Player.OnStop","params":{"data":{"end":true,"item":{"channeltype":"tv","id":21,"title":"RTL Television","type":"channel"}},"sender":"xbmc"}}
2015.11.08 13:56:18 5: XBMC_Read: Current processing buffer (PARTIAL + incoming data): {"jsonrpc":"2.0","method":"Player.OnStop","params":{"data":{"end":true,"item":{"channeltype":"tv","id":21,"title":"RTL Television","type":"channel"}},"sender":"xbmc"}}
2015.11.08 13:56:18 4: XBMC_Read: Decoding JSON message. Length: 167 Content: {"jsonrpc":"2.0","method":"Player.OnStop","params":{"data":{"end":true,"item":{"channeltype":"tv","id":21,"title":"RTL Television","type":"channel"}},"sender":"xbmc"}}
2015.11.08 13:56:18 5: XBMC_Read: Tail:
2015.11.08 13:56:18 5: XBMC_Read: PARTIAL:
2015.11.08 13:56:18 5: XBMC_ProcessRead
2015.11.08 13:56:18 5: No PARTIAL buffer
2015.11.08 13:56:18 5: XBMC_Read: Incoming data: {"jsonrpc":"2.0","method":"Player.OnPlay","params":{"data":{"item":{"channeltype":"tv","id":21,"title":"RTL Television","type":"channel"},"player":{"playerid":1,"speed":1}},"sender":"xbmc"}}
2015.11.08 13:56:18 5: XBMC_Read: Current processing buffer (PARTIAL + incoming data): {"jsonrpc":"2.0","method":"Player.OnPlay","params":{"data":{"item":{"channeltype":"tv","id":21,"title":"RTL Television","type":"channel"},"player":{"playerid":1,"speed":1}},"sender":"xbmc"}}
2015.11.08 13:56:18 4: XBMC_Read: Decoding JSON message. Length: 190 Content: {"jsonrpc":"2.0","method":"Player.OnPlay","params":{"data":{"item":{"channeltype":"tv","id":21,"title":"RTL Television","type":"channel"},"player":{"playerid":1,"speed":1}},"sender":"xbmc"}}
2015.11.08 13:56:18 4: XBMC_Call: Sending: {"jsonrpc":"2.0","method":"Player.GetActivePlayers","id":"6930"}
2015.11.08 13:56:18 5: SW: 7b226a736f6e727063223a22322e30222c226d6574686f64223a22506c617965722e476574416374697665506c6179657273222c226964223a2236393330227d
2015.11.08 13:56:18 5: XBMC_Read: Tail:
2015.11.08 13:56:18 5: XBMC_Read: PARTIAL:
2015.11.08 13:56:18 5: XBMC_ProcessRead
2015.11.08 13:56:18 5: No PARTIAL buffer
2015.11.08 13:56:18 5: XBMC_Read: Incoming data: {"id":"6930","jsonrpc":"2.0","result":[{"playerid":1,"type":"video"}]}
2015.11.08 13:56:18 5: XBMC_Read: Current processing buffer (PARTIAL + incoming data): {"id":"6930","jsonrpc":"2.0","result":[{"playerid":1,"type":"video"}]}
2015.11.08 13:56:18 4: XBMC_Read: Decoding JSON message. Length: 70 Content: {"id":"6930","jsonrpc":"2.0","result":[{"playerid":1,"type":"video"}]}
2015.11.08 13:56:18 4: XBMC_Call: Sending: {"params":{"properties":["time","totaltime","repeat","shuffled","speed","partymode"],"playerid":1},"method":"Player.GetProperties","id":6931,"jsonrpc":"2.0"}
2015.11.08 13:56:18 5: SW: 7b22706172616d73223a7b2270726f70657274696573223a5b2274696d65222c22746f74616c74696d65222c22726570656174222c2273687566666c6564222c227370656564222c2270617274796d6f6465225d2c22706c617965726964223a317d2c226d6574686f64223a22506c617965722e47657450726f70657274696573222c226964223a363933312c226a736f6e727063223a22322e30227d
2015.11.08 13:56:18 5: XBMC_Read: Tail:
2015.11.08 13:56:18 5: XBMC_Read: PARTIAL:
2015.11.08 13:56:18 5: XBMC_ProcessRead
2015.11.08 13:56:18 5: No PARTIAL buffer
2015.11.08 13:56:18 5: XBMC_Read: Incoming data: {"id":6931,"jsonrpc":"2.0","result":{"partymode":false,"repeat":"off","shuffled":false,"speed":0,"time":{"hours":0,"milliseconds":0,"minutes":51,"seconds":18},"totaltime":{"hours":2,"milliseconds":0,"minutes":40,"seconds":0}}}
2015.11.08 13:56:18 5: XBMC_Read: Current processing buffer (PARTIAL + incoming data): {"id":6931,"jsonrpc":"2.0","result":{"partymode":false,"repeat":"off","shuffled":false,"speed":0,"time":{"hours":0,"milliseconds":0,"minutes":51,"seconds":18},"totaltime":{"hours":2,"milliseconds":0,"minutes":40,"seconds":0}}}
2015.11.08 13:56:18 4: XBMC_Read: Decoding JSON message. Length: 226 Content: {"id":6931,"jsonrpc":"2.0","result":{"partymode":false,"repeat":"off","shuffled":false,"speed":0,"time":{"hours":0,"milliseconds":0,"minutes":51,"seconds":18},"totaltime":{"hours":2,"milliseconds":0,"minutes":40,"seconds":0}}}
2015.11.08 13:56:18 5: XBMC_Read: Tail:
2015.11.08 13:56:18 5: XBMC_Read: PARTIAL:
2015.11.08 13:56:38 4: XBMC_Call: Sending: {"jsonrpc":"2.0","method":"Player.Open","params":{"item":{"channelid":5}}}
2015.11.08 13:56:38 5: SW: 7b226a736f6e727063223a22322e30222c226d6574686f64223a22506c617965722e4f70656e222c22706172616d73223a7b226974656d223a7b226368616e6e656c6964223a357d7d7d
2015.11.08 13:56:39 5: XBMC_ProcessRead
2015.11.08 13:56:39 5: No PARTIAL buffer
2015.11.08 13:56:39 5: XBMC_Read: Incoming data: {"jsonrpc":"2.0","method":"Player.OnStop","params":{"data":{"end":true,"item":{"channeltype":"tv","id":5,"title":"SAT.1","type":"channel"}},"sender":"xbmc"}}
2015.11.08 13:56:39 5: XBMC_Read: Current processing buffer (PARTIAL + incoming data): {"jsonrpc":"2.0","method":"Player.OnStop","params":{"data":{"end":true,"item":{"channeltype":"tv","id":5,"title":"SAT.1","type":"channel"}},"sender":"xbmc"}}
2015.11.08 13:56:39 4: XBMC_Read: Decoding JSON message. Length: 157 Content: {"jsonrpc":"2.0","method":"Player.OnStop","params":{"data":{"end":true,"item":{"channeltype":"tv","id":5,"title":"SAT.1","type":"channel"}},"sender":"xbmc"}}
2015.11.08 13:56:39 5: XBMC_Read: Tail:
2015.11.08 13:56:39 5: XBMC_Read: PARTIAL:
2015.11.08 13:56:39 5: XBMC_ProcessRead
2015.11.08 13:56:39 5: No PARTIAL buffer
2015.11.08 13:56:39 5: XBMC_Read: Incoming data: {"jsonrpc":"2.0","method":"Player.OnPlay","params":{"data":{"item":{"channeltype":"tv","id":5,"title":"SAT.1","type":"channel"},"player":{"playerid":1,"speed":1}},"sender":"xbmc"}}
2015.11.08 13:56:39 5: XBMC_Read: Current processing buffer (PARTIAL + incoming data): {"jsonrpc":"2.0","method":"Player.OnPlay","params":{"data":{"item":{"channeltype":"tv","id":5,"title":"SAT.1","type":"channel"},"player":{"playerid":1,"speed":1}},"sender":"xbmc"}}
2015.11.08 13:56:39 4: XBMC_Read: Decoding JSON message. Length: 180 Content: {"jsonrpc":"2.0","method":"Player.OnPlay","params":{"data":{"item":{"channeltype":"tv","id":5,"title":"SAT.1","type":"channel"},"player":{"playerid":1,"speed":1}},"sender":"xbmc"}}
2015.11.08 13:56:39 4: XBMC_Call: Sending: {"jsonrpc":"2.0","id":"6933","method":"Player.GetActivePlayers"}
2015.11.08 13:56:39 5: SW: 7b226a736f6e727063223a22322e30222c226964223a2236393333222c226d6574686f64223a22506c617965722e476574416374697665506c6179657273227d
2015.11.08 13:56:39 5: XBMC_Read: Tail:
2015.11.08 13:56:39 5: XBMC_Read: PARTIAL:
2015.11.08 13:56:39 5: XBMC_ProcessRead
2015.11.08 13:56:39 5: No PARTIAL buffer
2015.11.08 13:56:39 5: XBMC_Read: Incoming data: {"id":"6933","jsonrpc":"2.0","result":[{"playerid":1,"type":"video"}]}
2015.11.08 13:56:39 5: XBMC_Read: Current processing buffer (PARTIAL + incoming data): {"id":"6933","jsonrpc":"2.0","result":[{"playerid":1,"type":"video"}]}
2015.11.08 13:56:39 4: XBMC_Read: Decoding JSON message. Length: 70 Content: {"id":"6933","jsonrpc":"2.0","result":[{"playerid":1,"type":"video"}]}
2015.11.08 13:56:39 4: XBMC_Call: Sending: {"jsonrpc":"2.0","method":"Player.GetProperties","id":6934,"params":{"playerid":1,"properties":["time","totaltime","repeat","shuffled","speed","partymode"]}}
2015.11.08 13:56:39 5: SW: 7b226a736f6e727063223a22322e30222c226d6574686f64223a22506c617965722e47657450726f70657274696573222c226964223a363933342c22706172616d73223a7b22706c617965726964223a312c2270726f70657274696573223a5b2274696d65222c22746f74616c74696d65222c22726570656174222c2273687566666c6564222c227370656564222c2270617274796d6f6465225d7d7d
2015.11.08 13:56:39 5: XBMC_Read: Tail:
2015.11.08 13:56:39 5: XBMC_Read: PARTIAL:
2015.11.08 13:56:39 5: XBMC_ProcessRead
2015.11.08 13:56:39 5: No PARTIAL buffer
2015.11.08 13:56:39 5: XBMC_Read: Incoming data: {"id":6934,"jsonrpc":"2.0","result":{"partymode":false,"repeat":"off","shuffled":false,"speed":0,"time":{"hours":0,"milliseconds":0,"minutes":20,"seconds":38},"totaltime":{"hours":1,"milliseconds":0,"minutes":48,"seconds":19}}}
2015.11.08 13:56:39 5: XBMC_Read: Current processing buffer (PARTIAL + incoming data): {"id":6934,"jsonrpc":"2.0","result":{"partymode":false,"repeat":"off","shuffled":false,"speed":0,"time":{"hours":0,"milliseconds":0,"minutes":20,"seconds":38},"totaltime":{"hours":1,"milliseconds":0,"minutes":48,"seconds":19}}}
2015.11.08 13:56:39 4: XBMC_Read: Decoding JSON message. Length: 227 Content: {"id":6934,"jsonrpc":"2.0","result":{"partymode":false,"repeat":"off","shuffled":false,"speed":0,"time":{"hours":0,"milliseconds":0,"minutes":20,"seconds":38},"totaltime":{"hours":1,"milliseconds":0,"minutes":48,"seconds":19}}}
2015.11.08 13:56:39 5: XBMC_Read: Tail:
2015.11.08 13:56:39 5: XBMC_Read: PARTIAL:
2015.11.08 13:56:41 4: XBMC_Check
2015.11.08 13:56:41 4: XBMC_CheckConnection: Connection still alive. Last data from Kodi received 1 s ago
2015.11.08 13:56:41 4: XBMC_Call: Sending: {"jsonrpc":"2.0","id":6935,"method":"Application.GetProperties","params":{"properties":["volume","muted","name","version"]}}
2015.11.08 13:56:41 5: SW: 7b226a736f6e727063223a22322e30222c226964223a363933352c226d6574686f64223a224170706c69636174696f6e2e47657450726f70657274696573222c22706172616d73223a7b2270726f70657274696573223a5b22766f6c756d65222c226d75746564222c226e616d65222c2276657273696f6e225d7d7d
2015.11.08 13:56:41 4: XBMC_Call: Sending: {"jsonrpc":"2.0","params":{"properties":["skin","fullscreen"]},"id":6936,"method":"GUI.GetProperties"}
2015.11.08 13:56:41 5: SW: 7b226a736f6e727063223a22322e30222c22706172616d73223a7b2270726f70657274696573223a5b22736b696e222c2266756c6c73637265656e225d7d2c226964223a363933362c226d6574686f64223a224755492e47657450726f70657274696573227d
2015.11.08 13:56:41 4: XBMC_Call: Sending: {"method":"Player.GetActivePlayers","id":"6937","jsonrpc":"2.0"}
2015.11.08 13:56:41 5: SW: 7b226d6574686f64223a22506c617965722e476574416374697665506c6179657273222c226964223a2236393337222c226a736f6e727063223a22322e30227d
2015.11.08 13:56:41 4: XBMC_UpdatePlayerItem
2015.11.08 13:56:41 4: XBMC_UpdatePlayerItem - cancelled (disconnected or not playing)
2015.11.08 13:56:41 5: XBMC_ProcessRead
2015.11.08 13:56:41 5: No PARTIAL buffer
2015.11.08 13:56:41 5: XBMC_Read: Incoming data: {"id":6935,"jsonrpc":"2.0","result":{"muted":false,"name":"Kodi","version":{"major":15,"minor":2,"revision":"02e7013","tag":"stable"},"volume":70}}{"id":6936,"jsonrpc":"2.0","result":{"fullscreen":false,"skin":{"id":"skin.confluence","name":"Confluence"}}}{"id":"6937","jsonrpc":"2.0","result":[{"playerid":1,"type":"video"}]}
2015.11.08 13:56:41 5: XBMC_Read: Current processing buffer (PARTIAL + incoming data): {"id":6935,"jsonrpc":"2.0","result":{"muted":false,"name":"Kodi","version":{"major":15,"minor":2,"revision":"02e7013","tag":"stable"},"volume":70}}{"id":6936,"jsonrpc":"2.0","result":{"fullscreen":false,"skin":{"id":"skin.confluence","name":"Confluence"}}}{"id":"6937","jsonrpc":"2.0","result":[{"playerid":1,"type":"video"}]}
2015.11.08 13:56:41 4: XBMC_Read: Decoding JSON message. Length: 147 Content: {"id":6935,"jsonrpc":"2.0","result":{"muted":false,"name":"Kodi","version":{"major":15,"minor":2,"revision":"02e7013","tag":"stable"},"volume":70}}
2015.11.08 13:56:41 4: XBMC_Read: Decoding JSON message. Length: 109 Content: {"id":6936,"jsonrpc":"2.0","result":{"fullscreen":false,"skin":{"id":"skin.confluence","name":"Confluence"}}}
2015.11.08 13:56:41 4: XBMC_Read: Decoding JSON message. Length: 70 Content: {"id":"6937","jsonrpc":"2.0","result":[{"playerid":1,"type":"video"}]}
2015.11.08 13:56:41 4: XBMC_Call: Sending: {"jsonrpc":"2.0","params":{"properties":["time","totaltime","repeat","shuffled","speed","partymode"],"playerid":1},"method":"Player.GetProperties","id":6938}
2015.11.08 13:56:41 5: SW: 7b226a736f6e727063223a22322e30222c22706172616d73223a7b2270726f70657274696573223a5b2274696d65222c22746f74616c74696d65222c22726570656174222c2273687566666c6564222c227370656564222c2270617274796d6f6465225d2c22706c617965726964223a317d2c226d6574686f64223a22506c617965722e47657450726f70657274696573222c226964223a363933387d
2015.11.08 13:56:41 5: XBMC_Read: Tail:
2015.11.08 13:56:41 5: XBMC_Read: PARTIAL:
2015.11.08 13:56:41 5: XBMC_ProcessRead
2015.11.08 13:56:41 5: No PARTIAL buffer
2015.11.08 13:56:41 5: XBMC_Read: Incoming data: {"id":6938,"jsonrpc":"2.0","result":{"partymode":false,"repeat":"off","shuffled":false,"speed":1,"time":{"hours":0,"milliseconds":0,"minutes":20,"seconds":40},"totaltime":{"hours":1,"milliseconds":0,"minutes":48,"seconds":19}}}
2015.11.08 13:56:41 5: XBMC_Read: Current processing buffer (PARTIAL + incoming data): {"id":6938,"jsonrpc":"2.0","result":{"partymode":false,"repeat":"off","shuffled":false,"speed":1,"time":{"hours":0,"milliseconds":0,"minutes":20,"seconds":40},"totaltime":{"hours":1,"milliseconds":0,"minutes":48,"seconds":19}}}
2015.11.08 13:56:41 4: XBMC_Read: Decoding JSON message. Length: 227 Content: {"id":6938,"jsonrpc":"2.0","result":{"partymode":false,"repeat":"off","shuffled":false,"speed":1,"time":{"hours":0,"milliseconds":0,"minutes":20,"seconds":40},"totaltime":{"hours":1,"milliseconds":0,"minutes":48,"seconds":19}}}
2015.11.08 13:56:41 5: XBMC_Read: Tail:
2015.11.08 13:56:41 5: XBMC_Read: PARTIAL:
2015.11.08 13:57:05 4: XBMC_Call: Sending: {"jsonrpc":"2.0","params":{"item":{"channelid":1}},"method":"Player.Open"}
2015.11.08 13:57:05 5: SW: 7b226a736f6e727063223a22322e30222c22706172616d73223a7b226974656d223a7b226368616e6e656c6964223a317d7d2c226d6574686f64223a22506c617965722e4f70656e227d
2015.11.08 13:57:41 4: XBMC_Check
2015.11.08 13:57:41 4: XBMC_CheckConnection: Connection still alive. Last data from Kodi received 60 s ago
2015.11.08 13:57:41 4: XBMC_Call: Sending: {"id":6939,"method":"Application.GetProperties","params":{"properties":["volume","muted","name","version"]},"jsonrpc":"2.0"}
2015.11.08 13:57:41 5: SW: 7b226964223a363933392c226d6574686f64223a224170706c69636174696f6e2e47657450726f70657274696573222c22706172616d73223a7b2270726f70657274696573223a5b22766f6c756d65222c226d75746564222c226e616d65222c2276657273696f6e225d7d2c226a736f6e727063223a22322e30227d
2015.11.08 13:57:41 4: XBMC_Call: Sending: {"jsonrpc":"2.0","params":{"properties":["skin","fullscreen"]},"method":"GUI.GetProperties","id":6940}
2015.11.08 13:57:41 5: SW: 7b226a736f6e727063223a22322e30222c22706172616d73223a7b2270726f70657274696573223a5b22736b696e222c2266756c6c73637265656e225d7d2c226d6574686f64223a224755492e47657450726f70657274696573222c226964223a363934307d
2015.11.08 13:57:41 4: XBMC_Call: Sending: {"method":"Player.GetActivePlayers","id":"6941","jsonrpc":"2.0"}
2015.11.08 13:57:41 5: SW: 7b226d6574686f64223a22506c617965722e476574416374697665506c6179657273222c226964223a2236393431222c226a736f6e727063223a22322e30227d
2015.11.08 13:57:41 4: XBMC_UpdatePlayerItem
2015.11.08 13:57:41 4: XBMC_Call: Sending: {"jsonrpc":"2.0","id":"6942","method":"Player.GetActivePlayers"}
2015.11.08 13:57:41 5: SW: 7b226a736f6e727063223a22322e30222c226964223a2236393432222c226d6574686f64223a22506c617965722e476574416374697665506c6179657273227d
2015.11.08 13:57:41 5: XBMC_ProcessRead
2015.11.08 13:57:41 5: No PARTIAL buffer
2015.11.08 13:57:41 5: XBMC_Read: Incoming data: {"id":6939,"jsonrpc":"2.0","result":{"muted":false,"name":"Kodi","version":{"major":15,"minor":2,"revision":"02e7013","tag":"stable"},"volume":70}}{"id":6940,"jsonrpc":"2.0","result":{"fullscreen":false,"skin":{"id":"skin.confluence","name":"Confluence"}}}{"id":"6941","jsonrpc":"2.0","result":[{"playerid":1,"type":"video"}]}{"id":"6942","jsonrpc":"2.0","result":[{"playerid":1,"type":"video"}]}
2015.11.08 13:57:41 5: XBMC_Read: Current processing buffer (PARTIAL + incoming data): {"id":6939,"jsonrpc":"2.0","result":{"muted":false,"name":"Kodi","version":{"major":15,"minor":2,"revision":"02e7013","tag":"stable"},"volume":70}}{"id":6940,"jsonrpc":"2.0","result":{"fullscreen":false,"skin":{"id":"skin.confluence","name":"Confluence"}}}{"id":"6941","jsonrpc":"2.0","result":[{"playerid":1,"type":"video"}]}{"id":"6942","jsonrpc":"2.0","result":[{"playerid":1,"type":"video"}]}
2015.11.08 13:57:41 4: XBMC_Read: Decoding JSON message. Length: 147 Content: {"id":6939,"jsonrpc":"2.0","result":{"muted":false,"name":"Kodi","version":{"major":15,"minor":2,"revision":"02e7013","tag":"stable"},"volume":70}}
2015.11.08 13:57:41 4: XBMC_Read: Decoding JSON message. Length: 109 Content: {"id":6940,"jsonrpc":"2.0","result":{"fullscreen":false,"skin":{"id":"skin.confluence","name":"Confluence"}}}
2015.11.08 13:57:41 4: XBMC_Read: Decoding JSON message. Length: 70 Content: {"id":"6941","jsonrpc":"2.0","result":[{"playerid":1,"type":"video"}]}
2015.11.08 13:57:41 4: XBMC_Call: Sending: {"jsonrpc":"2.0","params":{"playerid":1,"properties":["time","totaltime","repeat","shuffled","speed","partymode"]},"id":6943,"method":"Player.GetProperties"}
2015.11.08 13:57:41 5: SW: 7b226a736f6e727063223a22322e30222c22706172616d73223a7b22706c617965726964223a312c2270726f70657274696573223a5b2274696d65222c22746f74616c74696d65222c22726570656174222c2273687566666c6564222c227370656564222c2270617274796d6f6465225d7d2c226964223a363934332c226d6574686f64223a22506c617965722e47657450726f70657274696573227d
2015.11.08 13:57:41 4: XBMC_Read: Decoding JSON message. Length: 70 Content: {"id":"6942","jsonrpc":"2.0","result":[{"playerid":1,"type":"video"}]}
2015.11.08 13:57:41 4: XBMC_Call: Sending: {"method":"Player.GetItem","id":6944,"params":{"properties":["artist","album","thumbnail","file","title","track","year","streamdetails","tvshowid"],"playerid":1},"jsonrpc":"2.0"}
2015.11.08 13:57:41 5: SW: 7b226d6574686f64223a22506c617965722e4765744974656d222c226964223a363934342c22706172616d73223a7b2270726f70657274696573223a5b22617274697374222c22616c62756d222c227468756d626e61696c222c2266696c65222c227469746c65222c22747261636b222c2279656172222c2273747265616d64657461696c73222c22747673686f776964225d2c22706c617965726964223a317d2c226a736f6e727063223a22322e30227d
2015.11.08 13:57:41 5: XBMC_Read: Tail:
2015.11.08 13:57:41 5: XBMC_Read: PARTIAL:
2015.11.08 13:57:41 5: XBMC_ProcessRead
2015.11.08 13:57:41 5: No PARTIAL buffer
2015.11.08 13:57:41 5: XBMC_Read: Incoming data: {"id":6943,"jsonrpc":"2.0","result":{"partymode":false,"repeat":"off","shuffled":false,"speed":1,"time":{"hours":0,"milliseconds":0,"minutes":21,"seconds":40},"totaltime":{"hours":1,"milliseconds":0,"minutes":48,"seconds":19}}}{"id":6944,"jsonrpc":"2.0","result":{"item":{"id":5,"label":"SAT.1","thumbnail":"image://%2fhome%2fjoe%2fchannellogos%2fSAT.1.png/","title":"Gregs Tagebuch - Von Idioten umzingelt!","type":"channel","year":0}}}
2015.11.08 13:57:41 5: XBMC_Read: Current processing buffer (PARTIAL + incoming data): {"id":6943,"jsonrpc":"2.0","result":{"partymode":false,"repeat":"off","shuffled":false,"speed":1,"time":{"hours":0,"milliseconds":0,"minutes":21,"seconds":40},"totaltime":{"hours":1,"milliseconds":0,"minutes":48,"seconds":19}}}{"id":6944,"jsonrpc":"2.0","result":{"item":{"id":5,"label":"SAT.1","thumbnail":"image://%2fhome%2fjoe%2fchannellogos%2fSAT.1.png/","title":"Gregs Tagebuch - Von Idioten umzingelt!","type":"channel","year":0}}}
2015.11.08 13:57:41 4: XBMC_Read: Decoding JSON message. Length: 227 Content: {"id":6943,"jsonrpc":"2.0","result":{"partymode":false,"repeat":"off","shuffled":false,"speed":1,"time":{"hours":0,"milliseconds":0,"minutes":21,"seconds":40},"totaltime":{"hours":1,"milliseconds":0,"minutes":48,"seconds":19}}}
2015.11.08 13:57:41 4: XBMC_Read: Decoding JSON message. Length: 210 Content: {"id":6944,"jsonrpc":"2.0","result":{"item":{"id":5,"label":"SAT.1","thumbnail":"image://%2fhome%2fjoe%2fchannellogos%2fSAT.1.png/","title":"Gregs Tagebuch - Von Idioten umzingelt!","type":"channel","year":0}}}
2015.11.08 13:57:41 5: XBMC_Read: Tail:
2015.11.08 13:57:41 5: XBMC_Read: PARTIAL:
Habe kodi gestartet, Tv gestartet, drei Kanäle in kodi geschaltet. Einige Leerzeilen eingefügt, dann den set-Befehl mit channelid=5, Leerzeilen, set-Befehl mit channelid=1.
Gruß
Hans
Hm, auf dein "openchannelid 1" kommt einfach keine Anwort :/
Also ich hab mal spaßeshalber das TV bei mir mit meiner Dreambox eingerichtet. Das klappt ja tatsächlich spontan :D Auch wenns ziemlich hakelig ist. Bei mir klappts mit dem openchannelid erstmal für alle möglichen Kanäle. Wenn ich jedoch eine channelid angeben, die es nicht gibt (zb 94), dann kommt auch gar keine Reaktion (wie in deinem Fall).
Guck doch mal bitte, welche Kanäle Kodi glaubt zu kennen.
Mach mal bitte im Browser (openelec durch IP/Name deines Kodis ersetzen):
http://openelec/jsonrpc?request={"id":6939,"method":"PVR.GetChannelGroups","params":{"channeltype":"tv"},"jsonrpc":"2.0"}
Da kommt bei mir (also ich hab zwei Channel-Groups):
{"id":6939,"jsonrpc":"2.0","result":{"channelgroups":[{"channelgroupid":1,"channeltype":"tv","label":"Alle Kanäle"},{"channelgroupid":2,"channeltype":"tv","label":"Favourites (TV)"}],"limits":{"end":2,"start":0,"total":2}}}
Und dann das hier für eine Channel-Group (also 1 hier im Beispiel):
http://openelec/jsonrpc?request={"id":6939,"method":"PVR.GetChannels","params":{"channelgroupid":1},"jsonrpc":"2.0"}
Dann spuckt er dir alle Kanäle aus der Channel-Group aus.
Ich habe keine ChannelGroups und deshhalb wohl:404 Not found.
Gruß
Hans
Edit:
Habe um 14:10 kodi-TV gestoppt und warte auf die Keys in PendingPlayerCMDs-Meldung. Aber das dauert...
Edit2:
Habe Blödsinn erzählt :'(
Auf Port 8091:
{"id":6939,"jsonrpc":"2.0","result":{"channelgroups":[{"channelgroupid":1,"channeltype":"tv","label":"Alle Kanäle"}],"limits":{"end":1,"start":0,"total":1}}}
{"id":6939,"jsonrpc":"2.0","result":{"channels":[{"channelid":84,"label":"Das Erste"},{"channelid":94,"label":"ZDF"},{"channelid":21,"label":"RTL Television"},{"channelid":5,"label":"SAT.1"},{"channelid":38,"label":"ProSieben"},{"channelid":33,"label":"kabel eins"},{"channelid":48,"label":"RTL2"},{"channelid":60,"label":"SUPER RTL"},{"channelid":74,"label":"VOX"},{"channelid":58,"label":"DMAX"},{"channelid":42,"label":"SIXX"},{"channelid":54,"label":"Disney Channel"},{"channelid":98,"label":"3sat"},{"channelid":100,"label":"Bayerisches FS Süd"},{"channelid":106,"label":"hr-fernsehen"},{"channelid":83,"label":"WDR Köln"},{"channelid":111,"label":"SWR Fernsehen BW"},{"channelid":88,"label":"WDR Bielefeld"},{"channelid":110,"label":"Radio Bremen TV"},{"channelid":102,"label":"WDR Test A"},{"channelid":108,"label":"Einsfestival"},{"channelid":81,"label":"EinsPlus"},{"channelid":82,"label":"arte"},{"channelid":103,"label":"PHOENIX"},{"channelid":96,"label":"SR Fernsehen"},{"channelid":90,"label":"ARD-alpha"},{"channelid":79,"label":"rbb Brandenburg"},{"channelid":85,"label":"rbb Berlin"},{"channelid":91,"label":"ARD-TEST-1"},{"channelid":89,"label":"NDR FS NDS"},{"channelid":99,"label":"MDR Thüringen"},{"channelid":87,"label":"SWR Fernsehen RP"},{"channelid":49,"label":"N24"},{"channelid":40,"label":"SAT.1 Gold"},{"channelid":72,"label":"ProSieben MAXX"},{"channelid":107,"label":"ALT - SUCHLAUF STARTEN"},{"channelid":63,"label":"Comedy Central/VIVA"},{"channelid":64,"label":"KiKA"},{"channelid":95,"label":"ZDFinfo"},{"channelid":97,"label":"zdf_neo"},{"channelid":86,"label":"zdf.kultur"},{"channelid":101,"label":"tagesschau24"},{"channelid":68,"label":"n-tv"},{"channelid":104,"label":"CBC01"},{"channelid":92,"label":"VOX CH"},{"channelid":39,"label":"RTLNITRO"},{"channelid":80,"label":"RTL Living"},{"channelid":56,"label":"Eurosport Deutschland"},{"channelid":45,"label":"TELE 5"},{"channelid":62,"label":"ServusTV Deutschland"},{"channelid":93,"label":"ServusTV Oesterreich"}],"limits":{"end":51,"start":0,"total":51}}}
Joa passt ja, oder? Du hast scheinbar einfach keinen Channel 1, Channel 5 gibts aber.
Yep, passt. Danke.
Zitat von: vbs am 08 November 2015, 10:43:55
Benutzt du bewusst http anstatt tcp? Wenn nein, dann solltest du auf tcp umstellen, da der Funktionsumfang von http sehr eingeschränkt ist (zB keine Statusänderungen, wie du auch bemerkt hast).
Ok, daran lags. Danke!
Hallo,
openchannelid fehlt noch in der Liste der möglichen Argumente.
Um einen Dummy mit den für ein notify nötigen Readings zu befüllen:
#!/usr/bin/perl
use strict;
use warnings;
use LWP::UserAgent;
use HTTP::Request;
use JSON qw( decode_json );
my $jsonUser = "xbmc";
my $jsonPass = "";
my $jsonHost = "localhost:8091";
my $jsonUrl = sprintf("http://%s:%s@%s/jsonrpc",$jsonUser,$jsonPass,$jsonHost);
my $fhem_port = "7072";
my $dummy_name = "xbmc_channels";
my $jsonReq =sprintf("{
\"jsonrpc\" : \"2.0\",
\"id\" : 1,
\"method\" : \"PVR.GetChannels\",
\"params\" : {\"channelgroupid\" : 1 }
}");
my $http = HTTP::Request->new('POST', $jsonUrl);
$http->header('Content-Type' => 'application/json');
$http->content($jsonReq);
my $ua = LWP::UserAgent->new;
my $res = $ua->request($http);
if ($res){
my $setlist;
my $data = decode_json($res->content);
system("/opt/fhem/fhem.pl $fhem_port 'defmod $dummy_name dummy'");
system("/opt/fhem/fhem.pl $fhem_port 'deletereading '.$dummy_name.' .*'");
foreach my $key1 (keys %$data->{result}->{channels}) {
my $reading = $data->{result}->{channels}[$key1]->{label};
my $value = $data->{result}->{channels}[$key1]->{channelid};
$reading =~ s/ /_/g;
system("/opt/fhem/fhem.pl $fhem_port 'setreading $dummy_name $reading $value'");
$setlist = $setlist.' '.$reading;
}
system("/opt/fhem/fhem.pl $fhem_port 'attr $dummy_name setList $setlist'");
exit(0);
}
Gruß
Hans
openchannelid hab ich gestern ergänzt, sollte heute im Update sein.
Ich könnte theoretisch diese Channel-Listen-Sachen hinzufügen. Wäre das nützlich? Wenn ja, wofür? Man müsste dann ja auch die Channel-Groups erstmal anfragen.
Muss, glaube ich, nicht sein. Kann sich ja jeder selber anpassen. Wann wechselt man schon mal die Kanalzuordnung in Kodi?
Gruß
Hans
Hi,
Nachdem ihr mir so schnell geholfen hattet nochmal eine Frage:
Ich schalte über FHEM Licht ein, wenn bei XBMC Pause ist. aber 2 Nachteile:
-schalte ich über XBMC von Kanal 1 auf 2 ist ca. eine Sekunde Status pause, also geht licht an
-schalte ich über die Harmony alles aus, geht der HTPC nicht schnell genug aus, demnach gibt FHEM nochmal ein Licht-Einschalt-Signal obwohl eigentlich alles aus sein sollte
Der aktuelle Notify sieht so aus:
HTPC.playStatus:.paused set LEDLichtleiste PowerOn
Kann ich da ein 2-3 Sekunden Delay einsetzen? Bzw. auch verhindern dass das Licht anbleibt wenn Harmony Status = PowerOff?
Cool wäre auch generell: wenn Wechsel von Harmony Status auf PowerOff 5 Minuten Licht an, ist aber ja wahrsch. Ein eigenes Notify, oder?
Vielen Dank!!
Thomas
Schau dir mal in der commandref DOIF und dabei das wait Attribut noch. Erklärungen dazu findest du viele hier im Forum und in der Commandref.
Hallo Amenophis86,
Erstmal danke.. Tut mir leid, aber ich muss nochmal nerven.. Ich habe es versucht aber ich sag ganz ehrlich dass ichs nicht so ganz raffe.. Mit dem sleep befehl hat es auch nicht geklappt.
Könntet ihr mir vll. Bei der Syntax etwas helfen?
Nochmal Sry, fange gerade erst mit FHEM an.
Gruß Thomas
Es gehört zwar eigentlich nicht hier her, aber es könnte in etwa so aussehen:
define LichtTV DOIF ([HTPC:playStatus] eq "paused") (set LEDLichtleiste PowerOn) DOELSE (set LEDLichtleiste PowerOff)
attr LichtTV wait 4:4
Der Code ist jetzt geschrieben, ohne dass ich deine genaue Syntax kenne. Er soll quasi ein Anhaltspunkt sein. Wenn du damit nicht weiter kommst, dann mach doch ein extra Thema auf und ich helfe dir dort gerne weiter.
Hallo Amenophis86,
Danke für die Hilfe. Ich habe dass mal in einem eigenen Thread eröffnet.
Würde mich freuen wenn du mir weiterhelfen könntest.
http://forum.fhem.de/index.php/topic,43905.0.html
LG!
Hat das Modul jemand mit Kodi 15.2 am laufen? Ich kann machen und einstellen was ich will aber ich bekomme nicht mal eine Verbindung von FEHM zu Kodi :(
Ja läuft.
Kodi ist richtig konfiguriert (steuerung von externen programmen erlauben) und mehr als das Modul mit tcp einrichten ist doch nicht nötig. Ich verstehe daher nicht waurm er Kodi einfach nicht erkennt und als disconnected anzeigt.
Alle nötigen Plugins installiert?
Auch bei mir läuft Kodi up to date, ich hatte in der Vergangenheit das problem das bei mir da was mit IPv6 nen Strich durch die Rechnung gemacht hat check doch mal folgendes:
Zitat von: speex am 16 August 2015, 15:44:18
Der call auf Port 8080 ist korrekt, da Ich wie gesagt nur über diesen Port eine Verbindung zustande bekomme.
Ich bin inzwischen auch ein wenig weitergekommen,
das System auf dem Kodi läuft ist ein Intel nuc2820 - ubuntu server 14.04 und er hört auch einfach garnicht auf den Port 9090 sondern nur auf 8080.
Also muss ich von einer Fehlkonfiguration meines Kodi Systems ausgehen (sorry für die verwirrung).
Habe auch wie im Kodi Wiki beschrieben die häckchen gesetzt damit das json-rpc aktiviert wird/ist...
http://kodi.wiki/view/JSON-RPC_API#Enabling_JSON-RPC (http://kodi.wiki/view/JSON-RPC_API#Enabling_JSON-RPC)
Edit:
Ich glaube die Fehlerquelle gefunden zu haben, es scheint so als würde port 9090 auf ipv6 hören, wenn ich einen Netstat auf dem Kodi System ausführe:
sudo netstat -anp |grep 9090
tcp6 0 0 ::1:9090 :::* LISTEN 1285/kodi.bin
https://github.com/goldenratio/xbmc-web-remote/issues/19 (https://github.com/goldenratio/xbmc-web-remote/issues/19)
EDIT die 2.te:
Nach umfangreicher bemühung der besten suchmaschine konnte ich das problem lösen, ubuntu legt offensichtlich gerne mal standardmäsig ipv6 adressen an auch wenns deaktiviert ist. Lösen konnte ich mein Problem indem ich noch mal im grub ipv6 disabled habe wie folgt: http://forum.kodi.tv/showthread.php?tid=218006&pid=1951149#pid1951149 (http://forum.kodi.tv/showthread.php?tid=218006&pid=1951149#pid1951149)
sudo nano /etc/default/grub
Find the line that contain "GRUB_CMDLINE_LINUX_DEFAULT":
GRUB_CMDLINE_LINUX_DEFAULT=""
Add "ipv6.disable=1" to the boot option, then save your grub file:
GRUB_CMDLINE_LINUX_DEFAULT="ipv6.disable=1"
Finally, update grub:
sudo update-grub
Nun funktioniert es wie gewünscht, vielen Dank dennoch für die Hilfe.
greets
Viele Dank für die Hilfe,
deinen Beitrag kenne ich auch schon nur läuft bei mir im Wohnzimmer Kodi auf Win10. Ich habe es auch schon mit http 8080 probiert aber leider auch da keinen Erfolg.
Welche Plugins benötige ich noch ausser "sudo apt-get install libjson-perl" auf dem FHEM server?
Bekommst du grundsätzlich keine Verbindung auch von einem anderen Gerät Handy-App zum fernsteuern?
Ansonsten würde ich die Windows Firewall mal genau unter die Lupe nehmen und ggf. ports, regeln etc. checken.
Weiterer tipp wäre mit "netstat -a -b -n" zu checken ob überhaupt auf ports gelauscht wird auf deinem Win System, da sollte etwas in der art auftauchen zb.:
netstat -a -b -n
[xbmc.exe] 0.0.0.0:8080 LISTENING
Grüße und viel erfolg!
Doch ich steuere mein Kodi ausschließlich mit Yatse und über Http kann ich Kodi auch steuern. Momentan nutze ich die Kodi FHEM App um beim Filmstart zumindest das Licht runterzuregeln und das geht. Nur finde ich das aus Kodi raus blöd und würde gerne über FHEM komplexere Aktionen definieren aber da scheitere ich leider schon beim Verbindungsaufbau wie beschrieben :(
Das mit netstat ist ein guter Tipp das probiere ich mal aus. :)
Also mittels netstat konnte ich sehen das Kodi mit 8080 und 9090 auf mein smartphone verbunden ist wo ja yatse läuft. Daher läuft es ja grundsätzlich auf diesen Ports. Gleichzeitige Verbindungen sollten ja auch gehen da ich auch yatse auf mehreren Geräten laufen lassen kann.
Auf meiner CubiBox mit Openelec Kodi 15 konnte ich das Modul eben ohne weitere Probleme zum laufen bringen..
Edit: Beim Win10 Rechner lag es wohl am Port. Ich habe den tcp nun von standard 9090 auf 80 in der advanced setting umgestellt, das xbmc modul angepasst und siehe da es geht sofort. Warum dann Yatse auf 9090 funktioniert kann ich nicht sagen. Die Firewall von Windows war auch Kodi freundlich eingestellt. Wie auch immer es geht jetzt :)
Nein funktioniert doch nicht :( Über port 80 bekomme ich das Modul zwar auf opened aber es werden keine Daten von Kodi in die readings übergeben und ich kann keine Befehle an Kodi senden. Wenn ich einen anderen Port als 80 in den advanced settings konfiguiere (zb 81 oder 9000) ist überhaupt keine Verbindung möglich so wie mit dem standard port 9090.
Irgendwas scheint mit diesem blöden Win10 Rechner zu sein aber ich komme nicht dahinter. Es verwundert mich auch das ja Yatse einwandfrei funktioniert und die gleichen Ports verwendet.
Hab auch mal wieder eine Frage:
Wie kann ich ein Video starten was im Pause Modus ist? Ich habe in MyUtils folgenden Ablauf:
fhem "set $zxbmc openmovieid $movieid";
fhem "set $zxbmc pause";
Das funktioniert auch, jedoch passiert es ab und an, dass das Video nicht pausiert startet sondern einfach weiter läuft. Wahrscheinlich weil das Video nicht sofort anläuft und das Pause Kommando zu früh abgesendet und daher nicht mehr von Kodi interpretiert wird. Jemand eine Idee wie ich das Problem lösen kann? Eine Art "führe den Pause Befehl erst aus wenn das Video gestartet ist"?!
Einige Ideen hätte ich. Du musst nur die schlechten rausfiltern und hoffen das eine gute übrig bleibt... :P
Wie wärs wenn du ein temporäres notify erzeugst, das auf "playStatus play" lauscht. Das würde dann "pause" aufrufen und sich dann wieder löschen.
Oder du könntest dir ein Fake-Reading machen (als Flag) mit setreading, zb "pauseOnPlay". Dazu ein DOIF, das auf playStatus UND das FakeReading reagiert und dann pausiert. Nicht vergessen, das Flag dann wieder zu löschen.
Oder (unschön aber schnell), du machst einfach "sleep 3;set $zxbmc pause" (wenn 3 Sekunden immer reichen).
Oder ein at, der regelmäßig guckt, ob der Film jetzt läuft: define startPausedAt at +00:00:02 { if (Reading("xbmc", "playStatus", "") eq "playing") fhem("set xbmc pause") else [at modifizieren so dass es in 2 Sekunden wieder prüft]}
Zitat von: vbs am 14 November 2015, 12:34:31
Einige Ideen hätte ich. Du musst nur die schlechten rausfiltern und hoffen das eine gute übrig bleibt... :P
Wie wärs wenn du ein temporäres notify erzeugst, das auf "playStatus play" lauscht. Das würde dann "pause" aufrufen und sich dann wieder löschen.
Oder du könntest dir ein Fake-Reading machen (als Flag) mit setreading, zb "pauseOnPlay". Dazu ein DOIF, das auf playStatus UND das FakeReading reagiert und dann pausiert. Nicht vergessen, das Flag dann wieder zu löschen.
Oder (unschön aber schnell), du machst einfach "sleep 3;set $zxbmc pause" (wenn 3 Sekunden immer reichen).
Oder ein at, der regelmäßig guckt, ob der Film jetzt läuft: define startPausedAt at +00:00:02 { if (Reading("xbmc", "playStatus", "") eq "playing") fhem("set xbmc pause") else [at modifizieren so dass es in 2 Sekunden wieder prüft]}
Ah, das Notify ist eine gute Idee! Ich denke so werde ich das umsetzen, danke für den Tipp! :)
Hat jemand das Modul mit einem Windows Kodi am laufen?
Ich habe 2 Windows Rechner mit Kodi 15.2 installiert und ich bekomme keine Verbindung zum laufen.
Mit einem Openelec Kodi 15.1 läuft es aber auf anhieb ohne Probleme.
Ich bin so langsam an Ende was ich noch ausprobieren soll. Mein Hauptkodi im Wohnzimmer läuft wegen 3D Filmen leider unveränderlich auf Windows. :(
Ich würde: Firewalls/Virenscanner deaktivieren, mit netstat kontrollieren ob xbmc auf den konfigurierten Ports lauscht, mit Wireshark den Verbindungsaufbau anschauen.
Also Firewall und Virenscanner habe ich schon ausgeschaltet, mit Netstat geprüft ob Kodi auf den Ports lauscht (ja) und die Yatse App läuft ja auch auf diesen Ports einwandfrei. Mit Wireshark habe ich noch nicht gearbeitet aber ich lese mich mal ein. Ich verstehe nur nicht warum Yatse läuft und warum beide Windows Rechner einfach nicht mit FHEM reden wollen :(
Ich habe momentan kein xbmc instaliert um nachzusehen, aber gibt es nicht zwei verschiedene Varianten xmbc remote zu steuern, die auch getrennt konfiguriert werden?
Hi,
bei mir war das Problem, dass ich auch den Logitech Media Server auf dem selben Windows PC hatte, wo auch Kodi lief. Der Logitech Server öffnet ebenfalls einen Port 9090 für das CLI. Kodi läuft auch auf 9090 und das funktioniert natürlich nicht!
Hab den LMS auf 9091 gelegt und Kodi auf 9090 gelassen und nun funktioniert wieder alles. Kodi und LMS!
Ich bekomme beim FHEM restart immer die folgende Warnung!
each on reference is experimental at ./FHEM/70_XBMC.pm line 661, <$fh> line 1785.
Ist nicht wirklich schlimm, aber mich nerven solche Meldungen :-)
Habs mal gefixt, mich hats auch schon gestört, aber hab gedacht es merkt keiner 8)
Zitat von: vbs am 22 November 2015, 19:32:34
Habs mal gefixt, mich hats auch schon gestört, aber hab gedacht es merkt keiner 8)
Hehe....Danke du bist ein Schatz!
Zitat von: TeeVau am 20 November 2015, 14:56:28
Hi,
bei mir war das Problem, dass ich auch den Logitech Media Server auf dem selben Windows PC hatte, wo auch Kodi lief. Der Logitech Server öffnet ebenfalls einen Port 9090 für das CLI. Kodi läuft auch auf 9090 und das funktioniert natürlich nicht!
Hab den LMS auf 9091 gelegt und Kodi auf 9090 gelassen und nun funktioniert wieder alles. Kodi und LMS!
Nur habe ich keine andere Anwendung auf Port 9090 am laufen auf dem Rechner. Auch ein Ändern des ports auf einen beliebig anderen hat nichts geändert :(
Zitat von: vbs am 22 November 2015, 19:32:34
Habs mal gefixt, mich hats auch schon gestört, aber hab gedacht es merkt keiner 8)
Hm bei mir klappt es nicht!
Using a hash as a reference is deprecated at ./FHEM/70_XBMC.pm line 661, <$fh> line 1784.
each on reference is experimental at ./FHEM/70_XBMC.pm line 661, <$fh> line 1784.
Perl : v5.20.2
Ja, hatte dich missverstanden. Ich dachte du wolltest eine Warning mehr und nicht eine weniger... :P
Sorry, ist mir auch aufgefallen. Hab heute morgen schon einen neuen Versuch eingecheckt. Danke fürs melden!
Zitat von: vbs am 27 November 2015, 18:22:47
Ja, hatte dich missverstanden. Ich dachte du wolltest eine Warning mehr und nicht eine weniger... :P
Sorry, ist mir auch aufgefallen. Hab heute morgen schon einen neuen Versuch eingecheckt. Danke fürs melden!
*gröhl* wie geil :-) You made my day! Vielen Dank ich teste morgen weiter! 8)
So getestet, Meldung ist weg! Vielen Dank vbs!
Hi zusammen,
ich habe grade festgestellt das ein Reading dieses Moduls "thumbnail" ist. Leider wird der Pfad in dem Reading fuer mich nicht brauchbar zurueckgeliefert. Ein / im Pfad wird mit %2f encodiert, allerdings ist die korrekte Encodierung fuer ein / in URLs die %252f.
Wenn man den thumbnail nun per http aufrufen will, dann muss man in dem Link %2f durch %252f ersetzen und bekommt dann das aktuelle thumbnail angezeigt, ein Feature was ich sehr gerne fuer FTUI haette.
Waere es moeglich ein zusaetzliches Reading einzubauen, z.b. http_thumbnail und das besteht aus dem kompletten Code?
Man braeuchte dafuer:
1) Eine weitere Definition fuer den HTTP port (Standard 8080)
2) im reading thumbnail %2f mit %252f ersetzen
3) URL zusammenbauen: http://$Host:$HTTP_PORT/image/$HTTP_THUMBNAIL
Dann koennte man in den Oberflaechen fuer FHEM zu dem Titel, Laufzeit, etc auch das Cover anzeigen. Ich wuerde es auch selber machen, da muesste mir nur jemand Schuetzenhilfe leisten, ich weiss naemlich nicht wo ich da anfangen sollte.
Gruss
Ne ne, die URL-Kodierung für ein Slash '/' ist '%2f'. '%252f' wäre die doppelte Kodierung.
Davon abgesehen, tritt das bei mir so nicht auf. Müsstest mal ein konkretes Beispiel mit Logs posten, damit ich das verstehen kann.
Ansonsten wenn du Fragen zum Code hast, kannst du die auch gerne stellen.
Ok, ich versuche es nochmal :)
Wenn ich die Weboberflaeche von KODI aufrufe und den Link vom Cover kopiere, dann sieht der folgendermassen aus:
http://192.168.0.5:8080/image/image://%252fmedia%252fnfs%252fMovies%252fZero.Dark.Thirty.2012%252fZero.Dark.Thirty.2012.tt1790885.tbn/
Der Wert von thumbnail im KODI Modul von fhem lautet hingegen:
image://%2fmedia%2fnfs%2fMovies%2fZero.Dark.Thirty.2012%2fZero.Dark.Thirty.2012.tt1790885.tbn/
Zum einen fehlt der vordere Teil mit http, host, port und /image/ UND der / fuer die Pfadangabe ist lediglich die einfach Kodierung, nicht die doppelte. Wenn ich an das thumbnail reading ein http://192.168.0.5:8080/image/ voranstelle und versuche das ueber den Browser aufzurufen, so bekomme ich kein Bild zurueck geliefert. Erst wenn ich die doppelte Kodierung anwende, wird mir im Browser auch das Bild angezeigt. Ich hoffe das war etwas klarer.
EDIT: Noch eine Ergaenzung: Was ich also machen moechte, das thumbnail reading zu duplizieren, die einfach Kodierung durch die doppelte zu ersetzen und ein http://192.168.0.5:8080/image/ voranzustellen. Wenn dieses reading dann http_thumbnail genannt wird, dann koennen ich das in einer Bedienoberflaeche fuer fhem sehr einfach einbinden und anzeigen lassen. Das soll das Ziel sein.
Bzgl. des Codes, mir ist z.b. gar nicht klar an welcher Stelle ein neuer Eintrag hinzukommen muesste, damit dieser ein "reading" von dem Modul wird, auf den dann auch andere Module zugreifen koennen. Irgendwo muss ja die html Seite zusammengebaut werden. :)
Zitat von: hillbicks am 13 Dezember 2015, 20:33:53
Wenn ich die Weboberflaeche von KODI aufrufe und den Link vom Cover kopiere, dann sieht der folgendermassen aus:
http://192.168.0.5:8080/image/image://%252fmedia%252fnfs%252fMovies%252fZero.Dark.Thirty.2012%252fZero.Dark.Thirty.2012.tt1790885.tbn/
Glaube ich verstehe: Was du in Kodi siehst, ist ja die gleiche URI, aber eben nochmal in einen http-Link "verpackt", darum auch nochmals kodiert. Was du in FHEM siehst ist eben nur der eigentliche Inhalt. Du könntest dir als userReading ein eigenes "http_thumbnail" basteln, was die URL genau so anzeigt, wie du es brauchst. Du müsstest vermutlich nur das vorhandene Reading einmal URL-kodieren und deinen Kodi-Präfix "davor hängen.
Das müssen jedoch nicht immer Links sein, die auf Kodi zeigen. Bei mir steht zB drin:
image://http%3a%2f%2fthetvdb.com%2fbanners%2fepisodes%2f264492%2f4558744.jpg/
Also ein direkter Verweis auf thetvdb.
Zum Code:
Das Modul arbeitet da recht generisch: Normalerweise werden alle Datenfelder, die ein JSON-Nachrichten enthalten sind, 1:1 als FHEM-Reading angelegt. Du müsstest also irgendwo drauf achten, ob "thumbnail" reinkommt, und dann in dem Zuge dein eigens Reading anlegen. Aber wie gesagt: ich bin mir nicht sicher, ob die URLs immer so aussehen, wie jetzt in deinem Fall.
Ah, ok. das klingt erstmal relativ simpel. Dann werde ich jetzt mal gucken wie ich ein solches userreadings zusammen bauen muss, das habe ich bisher noch nicht gemacht. Ich denke irgendwo im Forum/Wiki wird es da ja was geben. Das ist dann schonmal ein erster Schritt.
Danke Dir!
EDIT: Geschafft
Im KODI Modul ein userreadings Attribut mit dem folgenden Wert hinzufuegen:
http_thumbnail { my $val = (ReadingsVal("$name", "thumbnail", 0)); $val =~ s/\%2f/\%252f/g;; return "http://192.168.0.5:8080/image/".$val;; }
Anschliessend kann http_thumbnail abgefragt werden. Das funktioniert allerdings nur solange der Pfad lokal ist.
Ich schon wieder :)
Waere es vielleicht moeglich noch mehr Informationen von KODI ueber das Interface abzufragen? Ich waere noch sehr interessiert daran so Sachen wie Plot, Tagline, Director, Actor, jahr, Studio, etc. abfragen zu koennen.
Was muesste dafuer gemacht werden? 70_XBMC.pm anpassen nehme ich an und die zusaetzlichen Daten aus dem JSON feed abfragen? Wo werden die einzelnen Elemente dann den readings zugeordnet? Wenn mir jemand ein Beispiel geben koennte, dann wuerde ich mich auch selbst daran versuchen.
Danke schonmal!
Ich werde da bei Gelegenheit mal reinschauen. Mit etwas Glück ist es schnell gemacht.
Hallo,
ich nutze das Modul erfolgreich, aber eine Frage/Anregung habe ich:
Auf meinem XBMC-Rechner hatte ich etwas abgespielt und ihn dann ausgeschaltet. Nun zeigt das Modul u.a. folgende Readings:
2015-12-15 18:03:18 playStatus playing
2015-12-15 18:04:04 state disconnected
Wäre es nicht logisch, den playStatus auf leer ("") zu setzen, wenn XBMC disconnected ist? Schließlich ist der playStatus ja unbekannt, wenn XBMC disconnected ist.
In meinem Use Case habe ich einen Taster, der abhängig vom playStatus verschiedene Dinge auslösen soll. Jetzt muss ich neben dem Reading playStatus auch noch state auswerten, um zu prüfen, ob beim Taster-Event wirklich etwas abgespielt wird. Wenn bei state = disconnected der playStatus auf "" stehen würde, wären entsprechende Abfragen einfacher zu gestalten.
Oder ist das eine schlechte Idee?
Du kannst dir das Reading doch selbst überschreiben mit einem notify o.ä. wenn du diese Funktion benötigst?
Ich finde die Idee nicht schlecht und kenne auch die Problematik. Ich werte bei mir auch sowohl playStatus als auch system aus. Für ein paar Readings hatte ich mal das Löschen eingebaut: Zum Beispiel wenn man Musik abspielt, wird episodeid gelöscht, was ja dann offensichtlich nicht mehr aktuell ist (weil zum Videoplayer gehörig).
Bin da hin und her gerissen: Einerseits ist es doof, andererseits entspricht es mMn der FHEM-Logik, den letztbekannten Wert des Readings mit dem Zeitstempel anzuzeigen. Würde ein Thermometer-Device das Temperatur-Reading löschen, falls sich das Thermometer abmelden würde? Ernstgemeinte Frage.
Also ich bin da für Diskussionen offen und lasse mich gerne von Argumenten bzw. einer Mehrheit überzeugen :)
Nun wenn die LAN/WAN Verbindung abbricht weiß ich doch auch nicht den korrekten Status oder? Meine Meinung: Ich würde die Logik auch so sehen......letzter Wert mit Timestamp!
Hallo,
ich persönlich halte von dem ganzen "Readings löschen wenn aktuell nicht gebraucht" nichts. Die Readings sind, meiner Ansicht nach, Inhalte des Backends. Und dort gibt es eben eine ganze Reihe an Informationen, die vielleicht aktuell nicht gebraucht werden. Wirklich stören tut es aber auch nichts ;-)
Meiner Ansicht nach treten damit mehr Probleme auf als es Nutzen bringt (z.B. wenn ein Reading mit Inhalt A gelöscht wird und nach kurzer Zeit wieder mit Inhalt A erstellt wird). Dann greift nämlich ggf. ein notify darauf, obwohl sich der Zustand von dem Reading gar nicht geändert hat. Ich finde es leichter aus einer Sammlung von Informationen mir die passenden rauszusuchen, anstatt raus zu finden ob die "aktuellen" informationen wirklich aktuell/verändert sind oder nicht.
Oder arbeiten wirklich so viele Menschen mit der Detailansicht? Im täglichen Leben versuche ich das zu vermeiden, weshalb mich auch nicht wirklich 50 Readings stören :-D
Guten Start in den Tag, Tobias
Danke für eure Antworten, mit den Readings wie sie aktuell sind komm ich ja auch klar ;-)
Ich hab auch noch ein anderes Projektchen, und zwar möchte ich gerne eine Lampe etwas hochdimmen, wenn ich während des Abspanns eines Films die Lautstärke ändere. Meistens mache ich irgendwann im Abspann den Ton etwas leiser, weil ich mich dann unterhalte. Dann wäre es praktisch, etwas Licht zu haben (so wie im Kino auch). Sonst ändere ich die Lautstärke während des Films selten, das wäre also erstmal genau genug.
Mein Ansatz wäre, bei einer Lautstärkeänderung während der letzten 8 Minuten eines Films das Licht hochzufahren. Die Lautstärkeänderung erkenne ich mittels YAMAHA_AVR problemlos. Aber wie kann ich die letzten Filmminuten in XBMC erkennen?
In XBMC gibt die Readings
time - current position in the playing media item (only updated on play/pause)
totaltime - total run time of the current media item
Meine Idee ist, alle 15 Sekunden ein neues Reading anzulegen:
currentposition = time + aktuelle uhrzeit - uhrzeit des letzten time-events
und dann zu prüfen ob totaltime - currentposition < 8 Minuten ist. Wenn das der Fall ist wäre das neue Reading wahr und sonst falsch.
Zeitberechnung in Perl ist für mich recht schwierig, wie kann ich das z.B. mit einem DOIF implementieren?
Die Luxusvariante wäre natürlich ein Plugin oder sonstige Möglichkeit, womit KODI den Abspann selbst dynamisch erkennt und das ganze als Reading liefert. Z.B. durch Bilderkennung des meist schwarzen Hintergrundes im Abspann, oder Anzapfen einer Datenbank, sofern es so etwas gibt wo die Länge des Abspanns gepflegt wäre. Kennt ihr da etwas?
Viele Grüße
All-Ex
Ich kenne erstmal keinen Weg, dass Kodi das irgendwie selbst erkennt. Ich würde das mal über ein userreading versuchen, dass über time getriggert wird. Also immer wenn sich time ändert, wird auch dein userreading (timeLeft oder so) upgedatet. Das Reading könnte einfach die verbleibende Zeit in Sekunden anzeigen. Du müsstest dann nur die vorhandenen Zeitstrings (totaltime und time) parsen, in Sekunden umrechnen und subtrahieren. Da gibts im Netz sicherlich fertige Perl-Beispiele zum Parsen von Zeit-Strings.
Ich habe jetzt ein Userreading namens endcredits erstellt. Während der letzten 7 % der Filmlänge steht das Reading auf 1, sonst auf 0:
endcredits { join("",ReadingsVal($name,"time",0),ReadingsVal($name,"totaltime",0)) =~ /(\d\d):(\d\d):(\d\d).(\d\d\d)(\d\d):(\d\d):(\d\d).(\d\d\d)/; return ($1*24*60 + $2*60 + $3) / ($5*24*60 + $6*60 + $7) > 0.93 ? 1 : 0 }
Hallo,
ich hätte eine kurze Frage, ich habe das Kodi Modul im Einsatz, um mein Licht sowie meine Maskierung zu steuern...
Nun habe ich das Problem, das Licht und Maskierung alle 60 Sekunden geschaltet werden. Sprich ich habe programmiert, das bei Play das Licht aus geht und bei einen bestimmten Seitenverhältnis die Maskierung via Relais ausgelöst wird...Nun schaltet das ganze immer wieder in die zuvor vorgegebenen Zustände, obwohl es ja schon richtig ist... Kann ich das ständige Statusabfragen abschalten oder wie könnte ich das lösen, das die Befehle nur dann geschaltet werden, wenn sie nötig sind?
Haste es mal mit einem event-on-change-reading versucht?
Das hat mir geholfen... Danke...
Hat jemand eine Idee wie ich eine reading nach dem Pause und dann wieder Play drücken unterdrücken kann?
Bin mir nicht sicher, ob ich verstanden habe, was du machen möchtest. Könntest du die Frage einmal neu formulieren bitte?
Hallo Zusammen,
Ich wollte nur kurz nachfragen, ob es vielleicht eine Möglichkeit gibt, den von Kodi erfassten 3D-Modus (SBS/TAB/etc.) auch mit als Reading auszugeben?
(Der sd_*stereomode bleibt bei mir trotz korrekt erkannter Datei leer - die Information ist also offensichtlich nicht im Videostream enthalten.)
Hintergrund ist, dass ich gerne über Fhem meinen Fernseher in den richtigen 3D-Modus schalten möchte.
Wenn das als Reading nicht machbar ist, muss ich es mir aus dem Dateinamen parsen, aber ich fände es schöner das ausschließlich über den GUI-Modus-Wechsel von Kodi zu triggern um die Möglichkeit zu behalten, gelegentlich 3D-Filme in 2D anzusehen.
Grüße,
Jan
Meines Wissens gibt es die Information leider nicht über die JSON-API. Zumindest konnte ich nichts finden. Geht also leider nicht. Falls sowas jemand findet, dann bitte Bescheid sagen, dann bau ich es ein. Also es bleibt vermutlich nur das Parsen vom Dateinamen im Moment.
Nur mal so: Wie guckst du 3D-Filme als 2D?
Erstmal schon einmal danke für die schnelle Reaktion :)
Ich habe dazu nur das hier gefunden: http://forum.kodi.tv/showthread.php?tid=228653 , bekomme das aber leider nicht zum laufen...
Es scheint auch noch GUI.GetStereoscopicModes und GUI.SetStereoscopicMode zu geben, also müsste das doch theoretisch auch ambfragbar sein, oder?
Ich kann dazu leider keine API-Dokumentation finden, gibt es da einen Tipp wo man das nachschauen kann?
Das Umschalten in 2D übernimmt Kodi für mich (siehe Bild) - ist dann natürlich nur die halbe Auflösung da er dann nur eine Hälfte des Streams zeigt. Aber wenn man ein weibliches Etwas mit auf dem Sofa hat, das keine Brille tragen möchte, kann das manchmal ganz praktisch sein ::)
Grüße,
Jan
edit (Ergänzung):
Bin über den Json-RPC-Browser etwas weitergekommen. GUI.getProperties mit stereoscopicmode spuckt mir vernünftige Ergebnisse aus:
{
"stereoscopicmode": {
"label": "Deaktiviert",
"mode": "off"
}
}
{
"stereoscopicmode": {
"label": "Über/Unter",
"mode": "split_horizontal"
}
}
{
"stereoscopicmode": {
"label": "Nebeneinander",
"mode": "split_vertical"
}
}
Wäre also jetzt noch über eine Hilfestellung dankbar, das ins Modul zu bekommen. (Wenn es für die Allgemeinheit sinnvoll ist!?) ;)
Hm, seltsam, dass das in der Doku nicht erwähnt wird aber ich schau mal rein am WE...
Hier mal ein Versuch im Anhang. Ist leider mMn nicht ohne einen Hack zu lösen, da Kodi kein Event sendet, wenn sich die GUI ändert. Man kann also nur geeignet pollen. Wenn man direkt pollt, wenn der Film gestoppt wird, dann bekommt man jedoch noch den alten Stereo-Wert (also stereo an). Darum wird nun erst 2 Sekunden nach dem Stoppen gepollt, in der Hoffnung dass das immer passt. Ansonsten wird der Wert mit dem minütlichen Update geholt.
Also bei mir funktioniert es super, vielen vielen Dank!
(Das Zurückschalten des 3D-Modus' mache ich über den playStatus, von daher sind die 2 Sek für mich kein Problem. Kodi nimmt an der Stelle ja sowieso immer den GUI-Wechsel vor wenn man nicht die dauerhafte 3D-Ansicht eingestellt hat.)
Mein Fernseher schaltet sich über RS232 jetzt automatisch in den passenden 3D-Modus (TAB/SBS) und beendet diesen wieder, sobald der Film gestoppt wird oder zu ende ist, genau wie ich das haben wollte!
Kurze Frage noch: Lässt du das im offiziellen Modul, oder muss ich bei Updates aufpassen? ;-)
Grüße,
Jan
Bitte lass es noch eine Woche oder so bei dir laufen. Wenn ich dann noch keine Beschwerden gehört habe, dann werde ich das auch in die offizielle Version übernehmen.
Nabend zusammen, bin neu hier im Forum und nutze FHEM seit einigen Tagen (vorher habe ich Pilight genutzt). Ich wollte fragen ob das XBMC/KODI Modul irgendein Reading besitzt, über welches das Starten einer (Android) Anwendung durch XBMC erkannt werden kann?
Der Hintergrund ist, dass ich auf meinem Fire TV auf dem Kodi läuft neben lokalen Medien auch Netflix und Amazon Instant Video nutze. Mit dem XBMC Modul und Lightscenes kann man ja nette Automatisierungen betreiben, leider gilt das eben nur für lokalen Kontent. Da man über Kodi aber auch direkt Android Anwendungen starten kann, so könnte zumindest beim starten der Netflix App eine spezielle Lightscene eingestellt werden ... Vllt. hat einer eine Idee, im Wiki und den Readings habe ich leider nichts passendes gefunden.
Ich bin mir nicht sicher ob ich das richtig verstehe ;)
Du startest auf dem FireTV eine App (Netflix) und willst dann in FHEM eine Aktion ausloesen? Wenn das der Plan ist, dann schau Dir mal Automagic oder Tasker an. Das sind Apps fuer Android mit denen Du darauf reagieren kannst, sprich app gestartet, loese eine bestimmte Aktion aus. Fuer Tasker gibt es ein Plugin das Du zum schalten der Befehle nutzen kannst, bei Automagic musst Du einen http Befehl bauen, aber auch kein Hexenwerk.
Wenn Du keine der beiden Apps hast, dann nimm Automagic, damit funktioniert dann naemlich auch der Rueckweg
http://forum.fhem.de/index.php/topic,39773.0
Um rauszufinden, was Kodi so dazu sagt, könntest du mal eine Telnet-Verbindung von deinem PC zu Kodi aufmachen. Dann siehst du in dem Telnet-Fenster alle Events, die Kodi verschickt. Und dann eben einfach mal das Programm starten in Kodi und gucken, ob das gemeldet wird. Wenn dem so ist, dann könnte man das auch in FHEM verfügbar machen.
Hey, erstmal danke für die schnellen Antworten :)
@ hillbicks: Ja genau, das hast du richtig verstanden. Tasker besitze ich auf meinem Android Handy, habe damit auch schon sehr viel gemacht, bin da relativ fit würde ich sagen. Habe die apk allerdings vor ca. nem halben Jahr mal versucht auf dem Fire TV zum laufen zu bekommen und da ist es an der Bedienung gescheitert, da man am FireTv ja keine Maus anschließen kann. Jetzt lese ich aber gerade im Netz von der App "Remote mouse for Fire TV" mit der man das Fire Tv und wohl auch Tasker bedienen kann. Dann wäre es natürlich ein leichtes mit Tasker und dem AndFHEM Plugin ein Profil zu erstellen :)
Werde trotzdem erst mal den Weg von @vbs ausprobieren, alleine Interessehalber. Ich berichte dann gleich mal ob es geklappt hat
Also, ich habe es jetzt über Tasker auf dem Fire TV gelöst, läuft einwandfrei :) Vielen Dank für die Hilfe ;)
Zitat von: vbs am 18 Januar 2016, 16:23:59
Um rauszufinden, was Kodi so dazu sagt, könntest du mal eine Telnet-Verbindung von deinem PC zu Kodi aufmachen. Dann siehst du in dem Telnet-Fenster alle Events, die Kodi verschickt. Und dann eben einfach mal das Programm starten in Kodi und gucken, ob das gemeldet wird. Wenn dem so ist, dann könnte man das auch in FHEM verfügbar machen.
Leider nein.
Aber irgendwelche Apps zu installieren ist meiner Meinung nach Overkill.
Was bekommt man über Tasker genau raus?
Können wir hiermit was anfangen?
dumpsys window windows | grep mCurrentFocus | cut -d'/' -f1 | rev | cut -d' ' -f1 | rev
Bei com.amazon.avod ist zumindest mal der Player im Vordergrund - besser als nichts.logcat AmazonVideo.playback:I *:S | grep PlaybackActionQueue.enqueueAction
Gibt uns zumindest mal den State des Amazon Players, Netflix funktioniert mit Sicherheit analog
Hallo Leute,
ich muss gestehen, dass ich mir nun nicht alle 43 Seiten durchgelesen habe. Aber die Seiten, die ich durchforstet habe, zeigten niemanden mit dem gleichen Problem.
Ich konnte das xbmc Modul einbinden. Jedoch ist Fhem nur in der Lage zu erkennen, ob Kodi läuft oder ausgeschaltet ist. Die anderen Readings (z. B. "playStatus" steht permanent auf "stopped") ändern sich nicht. Ich nutze den Port 9090 mit tcp. Die Perl-Pakete für JSON sind aktuell. Zudem läuft mein Log mit folgenden Einträgen über:
2016.01.23 02:36:23 3: XBMC_CheckConnection: Connection lost! Last data from Kodi received 120.018909931183 s ago
2016.01.23 02:36:23 1: 192.168.178.50:9090 disconnected, waiting to reappear (Kodi)
2016.01.23 02:36:24 1: 192.168.178.50:9090 reappeared (Kodi)
2016.01.23 02:36:30 2: Can't find string terminator "'" anywhere before EOF at (eval 24035) line 1.
2016.01.23 02:36:30 2: Can't find string terminator "'" anywhere before EOF at (eval 24036) line 1.
2016.01.23 02:36:30 2: Can't find string terminator "'" anywhere before EOF at (eval 24040) line 1.
2016.01.23 02:36:30 2: Can't find string terminator "'" anywhere before EOF at (eval 24041) line 1.
2016.01.23 02:36:30 2: Can't find string terminator "'" anywhere before EOF at (eval 24044) line 1.
2016.01.23 02:36:30 2: Can't find string terminator "'" anywhere before EOF at (eval 24045) line 1.
2016.01.23 02:37:34 2: Can't find string terminator "'" anywhere before EOF at (eval 24116) line 1.
2016.01.23 02:37:34 2: Can't find string terminator "'" anywhere before EOF at (eval 24117) line 1.
2016.01.23 02:37:34 2: Can't find string terminator "'" anywhere before EOF at (eval 24121) line 1.
2016.01.23 02:37:34 2: Can't find string terminator "'" anywhere before EOF at (eval 24122) line 1.
2016.01.23 02:37:34 2: Can't find string terminator "'" anywhere before EOF at (eval 24125) line 1.
2016.01.23 02:37:34 2: Can't find string terminator "'" anywhere before EOF at (eval 24126) line 1.
2016.01.23 02:37:34 2: Can't find string terminator "'" anywhere before EOF at (eval 24129) line 1.
2016.01.23 02:37:34 2: Can't find string terminator "'" anywhere before EOF at (eval 24130) line 1.
2016.01.23 02:37:34 2: Can't find string terminator "'" anywhere before EOF at (eval 24140) line 1.
2016.01.23 02:37:34 2: Can't find string terminator "'" anywhere before EOF at (eval 24141) line 1.
2016.01.23 02:37:34 2: Can't find string terminator "'" anywhere before EOF at (eval 24148) line 1.
2016.01.23 02:37:34 2: Can't find string terminator "'" anywhere before EOF at (eval 24149) line 1.
2016.01.23 02:37:34 2: Can't find string terminator "'" anywhere before EOF at (eval 24154) line 1.
2016.01.23 02:37:34 2: Can't find string terminator "'" anywhere before EOF at (eval 24155) line 1.
2016.01.23 02:37:34 2: Can't find string terminator "'" anywhere before EOF at (eval 24165) line 1.
2016.01.23 02:37:34 2: Can't find string terminator "'" anywhere before EOF at (eval 24166) line 1.
2016.01.23 02:37:34 2: Can't find string terminator "'" anywhere before EOF at (eval 24173) line 1.
2016.01.23 02:37:34 2: Can't find string terminator "'" anywhere before EOF at (eval 24174) line 1.
Mein Define sieht wie folgt aus:
define Kodi XBMC 192.168.178.3 tcp name passwort
attr Kodi group Status
attr Kodi icon rc_VIDEO
attr Kodi room Server
attr Kodi updateInterval 60
Ich scheine mal wieder irgendwas gehörig falsch gemacht zu haben. Ich weiß jedoch nicht, was das sein kann. Wenn ich die Einträge im Log richtig verstehe, kann er mit einem Anführungszeichen nichts anfangen. Ich nutze aber keines.
Kann mir von euch jemand einen Tipp geben?
Ich danke euch.
Wäre als erstes die Frage ob, du unter Port 9090 wirklich wie erwartet den Kodi JSON-RPC-Port erreichst. Mach doch mal von einer anderen Maschine eine Telnet-Verbindung auf 9090 und gucke, was du das siehst. Wenn du zB dann einen Film startest, müsstest du da JSON-Events sehen.
Zitat von: vbs am 23 Januar 2016, 11:54:32
Wäre als erstes die Frage ob, du unter Port 9090 wirklich wie erwartet den Kodi JSON-RPC-Port erreichst.
Ja, das funktioniert. Ich kann dort die angestoßenen Events sehen.
Dann setze mal bitte das Modul auf verbose 5 und poste mal einen Log von dem Verbindungsaufbau. Hab jetzt erstmal so keine Idee.
Hey vbs,
das habe ich gemacht und nun bekomme ich die Readings in Fhem angezeigt. Kannst du mir vielleicht ungefähr erklären warum das, durch das Umstellen auf Verbose 5, nun der Fall ist? Würde den Hintergrund gerne verstehen. Ich danke dir für deine Hilfe :)
Naja, also so war das eigentlich auch nicht gedacht :) Ich hatte mir erhofft, dass ich durch die Logs rausfinden könnte, wo das Problem liegt. Ich kann mir eigentlich nicht vorstellen, dass es an dem verbose liegt, da das eigentlich funktional keinen Unterschied machen dürfte. Aber komisch ist es schon... Kannst ja mal gucken, ob es tatsächlich NICHT mehr funktioniert, wenn du verbose wieder rausnimmst. Dann wird es interessant ;)
Hallo,
=> ich hab schon mal sowas gelesen, aber ich weiss nicht mehr wo....
wie kann ich mit FHEM KODI im LiveTV umschalten?
oder einen Channel zB.: RTL einschalten?
Hast du vermutlich in der commandref gelesen: http://fhem.de/commandref.html#XBMC
Kannst du mit "set openchannelid" machen.
Hallo Zusammen,
ich habe wie im WIKI (http://www.fhemwiki.de/wiki/XBMC) versucht eine Connection aufzubauen zu meinen KODI Server.
Zuvor habe ich das Paket mittels Sudo sudo apt-get install libjson-perl installiert und den Kodi mittels dem Befehl in der FHEM bekannt gegeben
define wz_XBMC XBMC <IP-Adresse> tcp <USERNAME> <PASSWORT>
Ich habe leider das Problem, dass keine Connection aufgebaut werden kann.
Bei mir ist die IP Adresse die gleiche wie der FHEM Server läuft, alles läuft einem Rasberry P2 mit Debian drauf.
d.h. ich habe hier folgendes definiert
define KODI XBMC 192.169.2.102 tcp osmc osmc
Hat jemand einen Tip? In den log steht nix explizit drinnen:)
Gruss, Markus
Hast du in Kodi die Fernsteuerung eingeschaltet? Probier mal händisch per zB Telnet eine Verbindung auf Port 9090 zu machen.
Yep der Port war es. Jetzt habe ich eine Verbindung (siehe Bild)
Was meinst du mit der Fernbedienung. Muss man noch was freischalten im KODI oder sonst was beachten?
Ich habe schon seit langen ein APP mit der ich KODI schalten dann. Dort war nix notwendig :)
Markus
Kannst du noch sagen, woran es jetzt lag? Hilft vielleicht dem nächsten noch.
Ich meinte das hier (xbmc.org scheint aber gerade down):
http://wiki.xbmc.org/index.php?title=JSON-RPC_API#Enabling_JSON-RPC
Ist auch in der commandref verlinkt:
http://fhem.de/commandref.html#XBMC
Hallo,
ich hatte meine Frage im Anfängerbereich schon mal gestellt, aber mangels resonanz versuch ich hier mein Glück noch einmal.
Ich habe in KODI stub-Dateien für meine nicht gerippten BluRays hinterlegt. Wenn diese geöffnet werden, erscheint ein Dialog-Fenster in KODI mit dem Hinweis in welchem Regal sich die Discs befinden. Diesen Hinweis möchte ich abgereifen um via FHEM (HarmonyHub) den BluRay-Player zu öffnen und dann zeitverzögert auf den BluRay-Player als Quellsignal zum Abspielen zu wählen.
Das Licht steuere ich schon über die playstatus Abfrage bei normalen Filmen.
Das Problem ist, dass KODI keine Statusänderung des playstatus Readings beim Öffnen des Dialogfensters sendet.
Ich habe im Netz rechargiert und folgendes gefunden:
Ich hab ein bisschen rumgesucht und habe in einem anderen Forum folgende Zeile gefunden.
Aus der default.py:
if (result.get("LocationType") == "Virtual"):
xbmcgui.Dialog().ok(__language__(30128), __language__(30129))
return
Das scheint die Abfrage zu sein, ob es sich um eine Stub-Datei (also einen Dummy) handelt, oder der Film tatsächlich hinterlegt ist.
Müsste man in dem Bereich nicht ein:
And urllib2.urlopen('http://192.168.178.24:8083/fhem?cmd.set%20dummyplayer%20')
einsetzen können?
Allerdings finde ich die default.py nicht...
Bitte um Hilfe oder Schupser in die richtige Richtung
Hi Devil Abs,
yes dein Tip war es. Es lag an der IP Adresse bzw. dem Port: Der Port ist 9090 und muss gemäss deiner Anleitung genau so definiert werden
Beispiel bei mir : define KODI XBMC 192.169.2.102: 9090 tcp osmc osmc
Ich hatte das Problem mit der Fernsteuerung nicht, da ich bereits ein APP habe um KODI damit zu steuern. Die App hat den Port erkannt und diesen automatisch ergänzt
Du hast aber Recht, man muss zuerst "Externe Steuerung" unter den Kadi --Settings zulassen
Gruss, Markus
Hallo Zusammen,
ich habe nochmal eine Frage, da hier im Forum ja unterschiedliche Meinungen zu einer FHEM Architektur und Media Center rum schwirren. Wenn wir von einer 3 Schichtarchitektur sprechen, dann habe ich immer verstanden, dass es einen Presentation Layer gibt, wo hier im Forum unterschiedliche Layer angeboten werden wie beispielsweise Floor, Table UI oder der simple FHEM Standard GUI oder Chorus um KODI zu steuern.
Für mich ist der Applikationlayer dann das FHEM mit seiner ganzen Business Logik um die Autoren/Sensoren ein und auszuschalten und KODI hat auch eine Business Logik, um unsere Medien zu verwalten und mehr und bitte sogar super Apps an alles zu steuern,
Im Prinzip kann man ja FHEM auch nehmen als Integration Layer, um beispielsweise eine Lösung aufzubauen indem man das ganze Haus über eine Präsentation Layer steuert, wie beispielsweise Tablet UI, um den End Anwender gerecht zu werden. Es sind auch Fancy aus, wenn an der Wand so ein Table leuchtet und nd man imponiert dem Nachbarn enorm, wenn man sogar den Status der Alarmanlage sind.
Für mich sind dann die Datenbanken und Services dann iTunes mit der Mediathek , NAS Server, oder andere Festplatten oder auch dann die Autoren/Sensoren die Service zur Verfügung stellen und die am abfragen kann.
Jetzt kommt meine Frage:
Wenn ich beispielsweise mit Tablet UI meine Medien steuern möchte, um quasi einen Radio Stream/Musik ins Bad, Schlafzimmer umzuleiten auf einen Bluetooth Lautsprecher, dann wäre es doch sinnvoll, wenn ich über den Tablet UI und Fhem direkt mit KODI verbinden könnte, den Stream starten und genießen kann. Aber es muss dann auch hier die Möglichkeit geben, über Tablet UI den Bluetooth Kanal zu wählen der wiederum mit KODI verbunden ist oder sehe ich es falsch?
Ich selber habe FHEM und KODI alles auf einem Rasberry P2 laufen mit Debian als Operating System. Ich muss aber zugeben, dass es sehr technisch und Tricky ist im KODI einen Bluetooth Lautsprecher anzubinden und zu betreiben. In jedem Standardmedien Center ist es fast Standard, dann man entweder WLAN Boxen oder Bluetooth Boxen auswählen kann, damit man die Musik auf das entsprechende Gerät ausgeben kann.
Auch bei der Alarmanlagenmodul wäre es gut, wenn Hilfetexte über offene Fenster nach 22 Uhr entweder über den Fernseher gingen (geht mit diesem Modul und KODI) oder über Sprache ausgeben werden könnten.
Für mich ist wichtig, dass man immer seine Komponenten dort einsetzt. wo sie seine Stärken haben und dort ist KODI mit dem ganzen Medien Center enorm stark.
Wie macht ihr es ? Gibt es dort Erfahrungen oder gar eine Anleitung für ein Hausszenario.
Gruss, Markus
Zitat von: Warlock_2016 am 08 Februar 2016, 13:49:55
yes dein Tip war es. Es lag an der IP Adresse bzw. dem Port: Der Port ist 9090 und muss gemäss deiner Anleitung genau so definiert werden
Beispiel bei mir : define KODI XBMC 192.169.2.102: 9090 tcp osmc osmc
Hm, kann eigentlich so nicht sein. Wenn man keinen Port angibt, wird sowieso defaultmäßig 9090 verwendet. War in deinem Fall ja auch so. Kann man in deinem ersten Screenshot sehen.
Zweitens kann das "define KODI XBMC 192.169.2.102: 9090 tcp osmc osmc" eigentlich nicht funktionieren, weil da ein Leerzeichen zwischen Hostname und Port ist und dann "9090" als gewünschtes Protokoll ausgewertet wird und nicht als Port.
Bin jetzt etwas verwirrt ;)
Zitat von: Frini am 08 Februar 2016, 13:23:21
Allerdings finde ich die default.py nicht...
Wenn Kodi das Abspielen des Stubs nicht als Event verkündet, dann ist es schonmal schwierig. Du könntest mal mit telnet eine Verbindung händisch aufbauen vom PC aus. Dann siehst du alles, was Kodi so von sich gibt.
Ich vermute, dass du die default.py aus irgendeinem Kodi-Addon hast. Ein anderer Weg wäre eben, dass auf Kodi-Seite mitzubekommen, dass ein Stub angewählt wurde und dann selbst ein Event an FHEM zu schicken. Dafür müsstest du aber vermutlich ein eigenes Kodi-Addon schreiben.
Hallo,
danke für die Rückmeldung.
Ich hab im Netz nen Eintrag aus der default.py https://github.com/MediaBrowser/MediaBrowser.Kodi/blob/b3b6c98913aab8c86be9faab00ae230f3f69906c/default.py (https://github.com/MediaBrowser/MediaBrowser.Kodi/blob/b3b6c98913aab8c86be9faab00ae230f3f69906c/default.py) gefunden, wo abgefragt wird, ob es sich um eine virtuelle oder richtige Datei handelt.
Hier ist der Thread dazu http://emby.media/community/index.php?/topic/10103-show-media-stubs-message/ (http://emby.media/community/index.php?/topic/10103-show-media-stubs-message/)
Mein sehr beschränktes Verständnis ist, die if Abfrage einfach mit einem and Befehl dazu zu verwenden um einen Befehl an FHEM zu schicken.
Mein Wissen über Kodi ist wirklich sehr oberflächig.
Nur hab ich keine Ahnung wie ich das anstellen sollte.
Ich verwende den AEON 6.
Telnet muss ich einmal ausprobieren.
Siehe Bild. Wenn ich keine Port eingebe, dann geht es bei mir auch. Er setzt automatisch wie bei der App den Port.
Siehe Bild. Wenn ich keine Port eingebe, dann geht es bei mir auch. Er setzt automatisch wie bei der App den Port.
Hallo , gibt es eine Möglichkeit über FHEM einen Befehl abzusenden das Openelec direkt einen RadioStream abspielt ?
Ja geht mit "open <URI>"
Siehe commandref:
http://fhem.de/commandref.html#XBMC
Unglaublich ,so einfach :-) Manchmal sieht man vor lauter Bäumen den Wald nicht . Vielen dank
Hallo Zusammen
gibt es auch die Möglichkeit eine Radiostream von einer Sonderlist vom XBMC direkt auf dem iPad abspielen zu lassen analog einer Web Radio URL?
Gruss, Markus
Hallo zusammen,
ich hoffe ich hab das hier in den richtigen Bereich geschrieben.
ich befasse mich momentan mit der Automatisierung meines Heimkinos und KODI.
In Kodi habe ich einen Teil meiner BluRays als mkv gespeicherung und einen anderen Teil als stub-Datei (Conan.bluray.disc) eingepflegt.
Zur Automatisierung nutze ich FHEM, wo KODI eingebunden ist. In FHEM überwache ich den playstatus (play, paused, stopped) um das Licht dementsprechend zu dimmen.
Das klappt auch alles ohne Probleme.
Möchte ich jedoch eine Stub-Datei abspielen, kommt das Dialogfeld mit der Aufforderung die Disc in die Lade einzulegen und das Laufwerk am PC öffnet sich. Es gibt aber keine weitere Rückmeldung in FHEM worauf ich reagieren kann.
Mein Wunsch ist jetzt, den StandAlone BluRayPlayer anstelle des internen Laufwerks anzusteuern.
Besteht die Möglichkeit dies irgendwie nachzupflegen? Das playstatus Reading wird vor Abbruch leider nicht aktualisiert. Und der Dateiname der abzuspielenden Datei ebenfalls nicht, sonst hätte man ja ein notify setzen und nach *.disc filtern können.
Ich hatte auch schon versucht dies mit CinemaVision zu erschlagen, allerdings bricht er bei stub-Dateien auch ab und ich kriege keine Meldung aus KODI heraus, dass es sich um eine stub-Datei handelt.
Wäre nett, wenn Ihr mir weiterhelfen könntet.
Grüße
Mittlerweile habe ich eine Lösung für mein Problem gefunden.
Und zwar lass ich mir von KODI jetzt über ein Addon einen extra Dummy schalten, mit dem ich die Stub-Dateien in FHEM erkennen kann.
Funktioniert soweit ganz gut. Auch das umschalten auf den BluRayPlayer kann ich jetzt genau timen.
Welches Addon ist das?
Ich verwende das Addon für den externen Player.
Ich habe ein extra Dateiformat *.disk verwendet. Standartmäßig arbeitet KODI mit *.disc und öffnet direkt ein Dialogfeld welches dann unter Umständen Informationen zum Lagerort der BluRay enthalten können. Hatte versucht diesen Dialog zu nutzen bzw. zu umgehen. Hat leider nicht funktioniert.
Also habe ich mir via advancesettings ein "eigenes" Dateiformat in KODI eingepflegt *.disk.
Für dieses Format habe ich mir einen extenen Player konfiguriert, welcher automatisch bei diesem Dateiformat ausgewählt wird.
Erreict habe ich das, in dem ich einfach anstelle der exe-Datei die den Player startet eine bat-Datei platziert habe, welche via http-Befehl in FHEM einen Dummy sendet.
Allerdings bin ich mit der Bat-Datei noch nicht so glücklich, da sich der Firefox öffnet, dann kommt ein Bestätigungsdialog, den ich via autoit bestätige un danach erst der Befehl abgesetzt wird.
Mir wäre es lieber gewesen, dass ich direkt aus der externen player.xml heraus den http-Befehl sende. Aber das krieg ich mit meinen bescheidenen Code-Kenntnissen nicht hin.
Das oben erwähnte klappt jedoch ohne Probleme. Sowohl mit CinemaVision (Trailer, Audio-Trailer, Handy-aus-Trailer) als auch im normal Film-Modus.
CinemaVision hat den Vorteil, dass der die stub erkennt, dann eine gespeicherte Sequenz (Queue) nimmt, welche vor erstem Trailer-Start den Dummy in FHEM startet und erst auf den BluRay wechselt, wenn alle Vorfilme abgespielt wurden. So hat man Zeit die Disc einzulegen.
Also wenn jemand einen Tip hat, wie man aus einer xml-Datei heraus einen http-Befehl an FHEM senden kann. Immer her damit :-)
Sende den Befehl doch mittels Telnet. Ich habe zum Beispiel bei mir eingestellt, dass Kodi mir eine Nachricht an FHEM schickt, wenn es heruntergefahren wird und dann kurz danach die Steckdose ausgeht. Dafür musst du bei beiden PIs die Keys für den Telnetzugriff tauschen und dann kannste damit ganz einfach Nachrichten an FHEM schicken.
Hallo,
ich habe leider schlicht weg keine Ahnung wie ich einen Befehl via Telnet an FHEM senden könnte.
Am liebsten hätte ich in die Player.xml anstelle der bat den Befehl an FHEM via Telnet aufgerufen, allerdings habe ich nirgends (was auch vielleicht an den falschen google-Begriffen liegen könnte) etwas gefunden wie ein Befehl, aufgerufen in einer xml-Datei hätte aussehen können.
Bin aber gerne lernfähig und immer bereit Tips entgegen zu nehmen.
Freue mich jetzt erstmal, dass ich nach zwei durchzechten Nächten die Lösung selbstständig zusammen geschustert habe. Den mehr ist es tatsächlich nicht. Ich hab mich mal etwas näher mit batch-Dateien auseinander gesetzt und wusse wie ich für CinemaVision http-Befehle absetzen konnte. Das hab ich "nur" zusammen gebracht. Wenn ich so darüber nachdenke, frag ich mich gerade warum ich da zwei Nächte für geopfert habe... :-X
hallo,
danke erstmal für das schöne modul :) mit philips hue gemeinsam ist es einfach toll das licht zu steuern.
ich habe aber noch ein kleines problem und hoffe ihr könnt mir helfen.
ich prüfe das reading type, um bei tv und movies verschiedene Einstellungen vorzunehmen. bei filmen funktioniert das toll, der status wird sofort aktualisiert. bei einem tv sender dauert es manchmal bis zu einer minute bis im reading type "channel" steht.
der play status wird aber sofort aktualisiert.
kennt jemand den grund dafür? kann ich das selbst ändern?
danke, lg stefan
edit: mir ist noch aufgefallen dass bevor tv startet nicht "playing" sondern "pause" gesendet wird, was natürlich auch die Steuerung durcheinanderbringt. hat da jemand eine lösung?
oder bin ich hier im falschen Bereich für meine Probleme?
danke, lg Stefan
gibts eine möglichkeit oder hat es jemand schon geschafft XSqueeze mit dem Modul zu öffnen?
einige addons kann ich mit dem befehl:
set XBMC addon script.CAM_I id 1
=> öffnen
aber mit dem SQueeze addon klappt das nicht, kann mir einer sagen wie ich das zum laufen bekomm?
schon mal Danke
Habe gerade erst den XBMC Modul-Thread gefunden, daher nochmal in diesem Thread:
Wie kann ich das Amazon Prime Music addon (http://www.kodinerds.net/index.php/Thread/49998-Release-Amazon-Prime-Music/) vom FHEM XBMC Modul aus starten und steuern? Konkret möchte ich bestimmte Playlists, z.B. die Playlist der beliebten Songs abspielen. Ginge das?
Play, Stop, Pause etc müssten ja mit den normalen set Befehlen gehen, da das Addon soweit ich weiss den Standard-Kodi-Player nutzt.
Starten des Addons sollte mit set addon gehen. Steuern des Addons wäre ich überfragt, geht mWn nicht.
...aber wie finde den Namen bzw. <addonid> und die parameter heraus?
addon <addonid> <parametername> <parametervalue> - Executes addon with one Parameter, for example set xbmc addon script.json-cec command activate
Zitat von: FhemPiUser am 21 August 2016, 20:47:20
...aber wie finde den Namen bzw. <addonid> und die parameter heraus?
addon <addonid> <parametername> <parametervalue> - Executes addon with one Parameter, for example set xbmc addon script.json-cec command activate
Der Aufruf des Addons mit Paremetern muss im Addon programmiert sein, damit der Aufruf funktioniert. Hierfür entweder die Doku des Addons oder den Quellcode durchsuchen. Ansonsten bleibt nur die Kontaktanfrage zum jeweiligen Programmierer des Addons ob und inwiefern eine Steuerung möglich ist.
Wichtig ist hierbei auch die Definition in der Commandref: "Executes Addon" heißt nicht gezwungener Weise auch "Open Addon".
Hat zufällig schon mal jemand versucht einen Stream an KODI zu senden (das klappt ja über "open") und an eine bestimmte Stelle des Filmes zu springen? Ich würde gerne einen Film oder eine Serie z.B. am Notebook anfangen und im Wohnzimmer weiterschauen können und mit KODI Bordmitteln geht das leider nicht so recht wie ich das gern hätte, mit FHEM könnte das schon eher klappen nur fehlt mir der Teil wie ich an die Stelle springe, an welcher ich vorher aufgehört habe.
Laut XBMC API gibt es die Commands getpercentage() und SeekPercentage() welche die Position in Prozent angibt. Hat jemand eine Idee wie man das in das Addon implementieren könnte?
Mach es dir einfacher und stelle auf eine gemeinsame Datenbank um. Dazu findest du viel im Internet. Habe zuhause zwei Pi, welche mit OSMC bzw. Kodi laufen. Beide greifen auf die Dateien meiner NAS zu und teilen sich eine Datenbank, welche auch auf meiner NAS liegen. Wenn ich einen Film nun beim einen stoppe, kann ich ihn an der gleichen Stelle beim anderen weiter schauen. Musst nur immer schauen, dass bei einem Update beide es installieren, sonst kann es ab und an zu Problemen kommen. Und natürlich müssen beide Zugriff auf das Netzwerk für die Datenbank haben.
schau mal weiter oben im thread. das hat schon mal jemand gebaut.
oder plex verwenden. da geht das automatisch über alle player hinweg :)
gruss
andre
@Amenophis86: Danke für den Hinweis aber nicht umsonst habe ich geschrieben das es mit Bordmitteln nicht so klappt wie ich es gern hätten. Die gemeinsame Datenbank gilt nämlich nur für lokale Medien, nicht aber für Streams welche aus Addons geliefert werden. Hier müsste man für jedes Addon eine Lösung finden, was in FHEM sicherlich einfacher zu lösen wäre.
@justme1968: Ich werde mir gern mal Plex anschauen da ich da jetzt schon häufiger drüber gestolpert bin. Außerdem suche ich mal die Stelle die du im Thread meinst.
Weisst du zufällig noch wo in etwa das Thema schon mal behandelt wurde? Der Thread ist ja mittlerweile recht lang geworden und über die Suche hab ich auch nichts passendes gefunden.
Zitat von: DazDavid am 28 Oktober 2016, 12:05:43
@Amenophis86: Danke für den Hinweis aber nicht umsonst habe ich geschrieben das es mit Bordmitteln nicht so klappt wie ich es gern hätten. Die gemeinsame Datenbank gilt nämlich nur für lokale Medien, nicht aber für Streams welche aus Addons geliefert werden. Hier müsste man für jedes Addon eine Lösung finden, was in FHEM sicherlich einfacher zu lösen wäre.
Oh, hatte das mit den Streams überlesen. Sry :)
@justme1968: danke ich habe den von dir erwähnten Eintrag gefunden (falls noch jemand sucht irgendwo auf Seite 10 oder 11)
Ich werde mich mal daran versuchen das Problem zu lösen.
Außerdem auch ein Danke an alle Beteiligte dieses Moduls. Super arbeit!!!
Ich habe jetzt mal versucht das Player.Seek Kommando in das XBMC Modul einzubinden, allerdings scheint einfach nichts zu passieren. Zugegeben ich habe auch keine Ahnung von Perl aber ich bin Lernwillig :)
Hat jemand einen Tipp für mich wie ich das Ganze am besten Debugge um dem Problem auf die Schliche zu kommen?
Ich habe mein Problem gelöst und die Seek Funktion eingebaut. Vielleicht könnte sich das jemand mit mehr Programmiererfahrung nochmal anschauen und evtl könnte es durch den Maintainer auch in die offizielle Version aufgenommen werden. Vielleicht hilft es auch anderen.
Folgende Änderungen habe ich eingebaut:
Einen neuen elseif-Block für das Kommando eingebaut:
elsif($cmd eq 'seek') {
return XBMC_Set_Seek($hash, $args[0] + 0, $args[1] + 0, $args[2] + 0, @args);
}
Die zugehörige Subroutine angelegt:
sub XBMC_Set_Seek($@)
{
my ($hash,$hours,$minutes,$seconds,$player) = @_;
my $obj = {
'method' => 'Player.Seek',
'params' => {
'value' => {
'seconds' => $seconds,
'minutes' => $minutes,
'hours' => $hours
},
'playerid' => 0 #will be replaced with the active player
}
};
Mit diesen Änderungen kann man wie folgt an einen bestimmten Punkt springen:
set Name seek hour minute second
also z.B. set KODI seek 0 45 0 um an Minute 45 zu springen
Finde ich prinzipiell gut, danke dafür! Werde ich gerne übernehmen. Nur ein paar Anmerkungen:
- ich glaube in der Funktion selber fehlt noch ein Aufruf, der den Befehl absendet (XBMC_PlayerCommand?). Kann eigentlich so nicht funktionieren?
- ich vermute, dass du die Zeitangaben nach int konvertierst (+ 0), damit sie entsprechend korrekt in der JSON-Nachricht kodiert werden? Besser die Konvertierung dann erst in XBMC_Set_Seek vornehmen, so dass der Aufrufer davon nichts wissen mussen. Machts mMn robuster.
- unten im Modul gibts eine Doku zu den Kommandos. Wäre super, wenn du da eine Zeile spendieren könntest.
- man könnte die Zeitangabe anstatt in drei Parametern auch als einen Parameter der Form "00:45:00" angeben. Liest sich mMn besser und man hantiert mit weniger Parametern im Code. Ist aber sicherlich Geschmackssache!
Wenn du das Ganze als Patch bereit stellen könntest, dann wäre es super. Ich kann die Codeteile aber sonst auch händisch einbauen.
Hallo vbs,
danke für die Antwort, ich hatte mit mehr Kritik gerechnet :)
1. Was genau du hiermit meinst weiß ich nicht. Ich schaue nochmal aber ich habe es gestern mehrmals getestet und es funktionierte.
2. Korrekt, da ich die Werte als Int benötige konvertiere ich sie mit +0. Kann ich gern noch in die Subroutine verschieben.
3. Die Doku der Kommandos habe ich gesehen und bewusst für meine Zwecke erstmal weggelassen. Wenn du das übernehmen möchtest baue ich gern eine Zeile ein.
4. das mit dem Format hh:mm:ss habe ich versucht, kann ich aber so nicht direkt per JSON übergeben (Vielleicht habe ichs aber auch nur als String übergeben und es ging deshalb nicht?!). Ich versuche das nochmal, wäre natürlich Anwenderfreundlicher es in diesem Format anzugeben.
Was genau meinst du mit als Patch bereitstellen?
Hach ich weiß jetzt was du mit Punkt 1 meinst. Der Befehl ist natürlich da... Copy&Paste Error :)
So ich habe jetzt alle Punkte bis auf den mit dem Zeitformat übernommen. Eventuell schaue ich mir das nochmal an wenn ich ein bisschen Zeit habe da ich den String dann in Hours,Minutes,Seconds auseinander nehmen müsste. Mal schauen wie das geht :)
Im Anhang die aktuelle 70_XBMC.pm mit meinen Änderungen.
Kurz angetestet, funktioniert. Und eingecheckt... danke!
Yeeey ;)
Ich hab jetzt aber doch noch das Zeitformat geändert, da es für meine Zwecke auch praktischer ist und gar nicht so schwer war wie gedacht.
Der Befehl lautet jetzt set name seek hh:mm:ss wobei die einzelnen Werte auch Einstellig sein können.
Im Anhang die aktualisierte Version.
Danke fürs Einchecken und natürlich das Feedback.
Danke, gefällt mir! Upgedatet...
Hi,
sorry ich muss mal dumm fragen, aber wie bekommt man das genau zum laufen. Ich dachte ich wüsste wie :) Aber es läuft nicht.
Ich habe ein KODI auf einem Raspberry PI3. Mit LibreELEC. Alles Standard Installation. Also nichts besonderes.
Das hier hab ich in KODI auch aktiviert:
TCP: In System/Settings/Network/Services activate Allow programs on this system to control Kodi for localhost access only and Allow programs on other systems to control Kodi for access from other computers as well
Ich hab alles dann in FHEM so versucht:
define kodi XBMC 192.168.178.51 tcp kodi kodi
Das Gerät wurde angelegt, aber er hat nicht connected. Es stand immer disconnect da.
Also hab ich es geändert und wie folgt versucht:
define kodi XBMC 192.168.178.51:8080 tcp kodi kodi
Weil ich diesen Port in meinem KODI gesehen habe. Den Username und Passwort hab ich vorher so festgelegt. Jetzt wurde das Gerät angelegt und er Connected auch.
Jetzt steht OPEN im State. Aber die Readings werden nicht erneuert, wenn ich z.B. Live TV schaue. Ich kann durch SET auch nicht Pause oder irgendwas senden. Das System reagiert nicht.
Was mache ich falsch ?
Komme ich da nicht intern automatisch durch ? Muss ich da noch was in der Fritzbox einstellen ? Ich bin doch intern in meinem Netz.
Wie habt ihr das gemacht ? Auf meinem FHEM ist auch libson-perl installiert.
Ich hatte gehofft das es Plug & Play geht :)
Grüße,
Visionsurfer
Hi,
also falscher Alarm. Ich hab es hinbekommen. Ich hab das Device noch mal gelöscht. Mein KODI Raspberry noch mal neu gestartet und das Device ganz normal ohne besondere Angabe von einem Port noch mal definiert.
Lief sofort.
Perfekt.
Was für ein Update Intervall habt ihr so eingestellt ? Da müsste ja eigentlich ein ziemlich kurzer rein, oder ?
Weil ich möchte das nun mit anderen Sachen wie Licht usw. verbinden. Aber ich will natürlich nicht 60 Sekunden warten, bis was passiert.
Was macht da Sinn ?
Grüße,
Visionsurfer
Ich habe mehrere Kodis (4Stk insgesamt aktuell) eingebunden mit unterschiedlichen Zeiten von 60-30sec.
Stati wie play und pause werden jedoch unabhängig vom Intervall sofort übertragen. Und genau da liegt auch so
ein bisschen der Hund begraben, denn beim zappen (Live-TV) sendet Kodi stets kurz "stopped" um dann wieder auf "play" zu wechseln was dann eine Lightshow im Wohnzimmer generiert wenn man direkt darauf reagiert.
Das glatt zu bügeln habe ich noch nicht so richtig hinbekommen.... ich reagiere mit einem DOIF auf den Playstatus um Lightscene zu steuern.
Für Tipps bin ich hier sehr empfänglich.
grtz
CmdA
Du kannst das zumindest ein wenig einschraenken in dem Du im DOIF noch den type mit abfragst, also entweder movie und episode einschliessen oder livetv ausschliessen.
Hi,
Kennst du den Thread. Da scheint es Lösungen zu geben.
https://forum.fhem.de/index.php/topic,52675.15.html
Würde das gehen? Weil ich werde dann wenn ich soweit bin vor dem gleichen Problem stehen.
Grüße
Visionsurfer
Zitat von: C0mmanda am 10 November 2016, 23:22:33
Stati wie play und pause werden jedoch unabhängig vom Intervall sofort übertragen. Und genau da liegt auch so
ein bisschen der Hund begraben, denn beim zappen (Live-TV) sendet Kodi stets kurz "stopped" um dann wieder auf "play" zu wechseln was dann eine Lightshow im Wohnzimmer generiert wenn man direkt darauf reagiert.
Das glatt zu bügeln habe ich noch nicht so richtig hinbekommen.... ich reagiere mit einem DOIF auf den Playstatus um Lightscene zu steuern.
Für Tipps bin ich hier sehr empfänglich.
Hast du es mal mit dem wait attr versucht? http://fhem.de/commandref_DE.html#DOIF_wait
Asche auf mein Haupt!
Wenn man DOIF - wait richtig benutzt (Stichwort: "," + ":") funktioniert das einwandfrei!
grtz
CmdA
Ich möchte mit FHEM beim KODI 16.1 steuern. Kodi läuft auf einem Raspberry Pi 3 mit max2play.
Mit
define KODI XBMC 192.168.178.115 tcp
habe ich es bereits eingebunden. Den Port des Webservers habe ich von 8080 auf 9090 geändert.
Internals:
CFGFN
DEF 192.168.178.115 tcp
DeviceName 192.168.178.115:9090
FD 41
Host 192.168.178.115
LAST_RECV 1480699134.00945
NAME KODI
NR 411
NextID 35
PARTIAL
Password kodi
Port 9090
Protocol tcp
STATE opened
TYPE XBMC
Username kodi
Pendingplayercmds:
10:
method Player.PlayPause
Params:
play toggle
playerid -1
11:
method Player.GetProperties
Params:
properties:
time
totaltime
repeat
shuffled
speed
partymode
12:
method Player.GetProperties
Params:
properties:
time
totaltime
repeat
shuffled
speed
partymode
13:
method Player.GetProperties
Params:
properties:
time
totaltime
repeat
shuffled
speed
partymode
14:
method Player.GetProperties
Params:
properties:
time
totaltime
repeat
shuffled
speed
partymode
15:
method Player.GetProperties
Params:
properties:
time
totaltime
repeat
shuffled
speed
partymode
16:
method Player.GetProperties
Params:
properties:
time
totaltime
repeat
shuffled
speed
partymode
17:
method Player.GetProperties
Params:
properties:
time
totaltime
repeat
shuffled
speed
partymode
18:
method Player.GetProperties
Params:
properties:
time
totaltime
repeat
shuffled
speed
partymode
19:
method Player.GetProperties
Params:
properties:
time
totaltime
repeat
shuffled
speed
partymode
21:
method Player.GetProperties
Params:
properties:
time
totaltime
repeat
shuffled
speed
partymode
22:
method Player.GetProperties
Params:
properties:
time
totaltime
repeat
shuffled
speed
partymode
24:
method Player.GetProperties
Params:
properties:
time
totaltime
repeat
shuffled
speed
partymode
25:
method Player.GetProperties
Params:
properties:
time
totaltime
repeat
shuffled
speed
partymode
27:
method Player.GetProperties
Params:
properties:
time
totaltime
repeat
shuffled
speed
partymode
28:
method Player.SetShuffle
Params:
playerid -1
shuffle toggle
3:
method Player.GetProperties
Params:
properties:
time
totaltime
repeat
shuffled
speed
partymode
31:
method Player.GetProperties
Params:
properties:
time
totaltime
repeat
shuffled
speed
partymode
34:
method Player.GetProperties
Params:
properties:
time
totaltime
repeat
shuffled
speed
partymode
37:
method Player.GetProperties
Params:
properties:
time
totaltime
repeat
shuffled
speed
partymode
4:
method Player.PlayPause
Params:
playerid -1
5:
method Player.PlayPause
Params:
playerid -1
6:
method Player.GetProperties
Params:
properties:
time
totaltime
repeat
shuffled
speed
partymode
8:
method Player.GetProperties
Params:
properties:
time
totaltime
repeat
shuffled
speed
partymode
9:
method Player.GetProperties
Params:
properties:
time
totaltime
repeat
shuffled
speed
partymode
Readings:
2016-12-02 18:18:54 partymode
2016-12-02 18:18:54 playStatus stopped
2016-12-02 18:18:54 repeat
2016-12-02 18:18:54 shuffle
2016-12-02 18:18:54 speed
2016-12-02 18:18:54 state opened
2016-12-02 18:18:54 system wake
2016-12-02 18:18:54 time
2016-12-02 18:18:54 totaltime
Attributes:
room test
updateInterval 60
verbose 5
Der Status wird als open angezeigt. Jedoch beomme ich keine Änderung mit FHEM hin. Auch den Status sehe ich in FHEM nicht.
Das Steuern mit der Kodi iPhone App funktioniert problemlos.
Hat jemand eine Idee, warum die Kommunikation nicht funktioniert?
Mach doch zum Testen mal ein Telnet händisch auf den Port auf (in einer Konsole). Wenn du dann irgendwas in Kodi bedienst (play/stop), dann müsstest du im Telnet die Events sehen. Wenn man da was sieht, dann ists ein FHEM-Problem, wenn man nichts sieht, dann ein Kodi-Problem.
Ein Telent funktioniert. Dann habe ich ein paar mal play/pause gedrückt, aber nicht kam im Log.
Also liegt es wohl an Kodi, wie troubleshoote ich das am besten?
Sorry, seh ich jetzt erst: Du sagst, du hast den Port des Webservers auf 9090 geändert? FHEM will nicht mit dem "normalen" Webserver reden, sondern mit dem JSON-Server. Der normale Webserver läuft auf Port 80 defaultmäßig (denk ich), der JSON auf 9090.
Also eigetnlich musst du keine Ports verstellen, du musst nur in Kodi diese Fernsteuerung aktivieren (ich glaub "Fernsteuerung durch PRogramme auf anderen Rechnern zulassen" aktiviere). Müsste irgendwo in commandref/Wiki stehen sonst. Wenn du es nicht findest, dann such ich es raus.
Problem ist, dass die Webseite von max2play auf Port 80 (http) läuft.
Standardmäßig war der Port des Webservers auf 8080. Ändere ich es auf 80, kommt der Fehler: Failed to start.
Der Webserver-Port hat übrigens nichts mit dem Port :9090 bei der Definition in Kodi zu tun!
Kein Kodi bei mir hat den Webserver-Port 9090, und jedes Kodi kommuniziert hervorragend mit FHEM.
Den Webserver würde ich also wieder ändern auf 8080...
Alles was du Kodi-seitig tun musst:
Kodi bis V16:
Einstellungen -> Dienste -> Fernbedienung -> Steuerung über entferne Programme zulassen aktivieren.
Kodi ab V17:
Einstellungen -> Dienste -> Steuerung -> Fernsteuerung durch Anwendungen anderer Rechner erlauben aktivieren.
Kodi neu starten, dann sollte es klappen.
grtz
CmdA
Du brauchst auch defaultmäßig nur Port 9090 für RPC. Wenn du die "Fernbedienbarkeit" in Kodi aktivierst, sollte die auf 9090 verfügbar sein. Kenne jedoch max2play nicht.
---
Was C0mmanda gesagt hat ^^ Meinte ich mit "FHEM will nicht mit dem "normalen" Webserver reden, sondern mit dem JSON-Server"
Jetzt funkioniert es :D Vermutlich lage es mal wieder am Neustart ???
Na dafür nicht...
Hallo,
erst einmal vielen Dank für das Modul. Das senden von Befehlen funktioniert ganz gut.
Ich habe aber ein Problem mit den Logs. Ich möchte den PlayStatus eines separaten RPi+OSMC (in eine SQL Datenbank mittels DBLog) mit loggen. Also habe ich in FHEM beim Gerät folgende Attribute gesetzt (gesamte definition der Vollständigkeit halber):
define UG.Kino.RPi.Kodi XBMC UG-Kino-RPi-Kodi.fritz.box tcp
attr UG.Kino.RPi.Kodi DbLogExclude .*
attr UG.Kino.RPi.Kodi DbLogInclude playStatus
attr UG.Kino.RPi.Kodi compatibilityMode xbmc
attr UG.Kino.RPi.Kodi devStateIcon opened:rc_GREEN:on disconnected:rc_RED:off Initialized:message_socket_disabled
attr UG.Kino.RPi.Kodi event-on-change-reading playStatus
attr UG.Kino.RPi.Kodi fork enable
attr UG.Kino.RPi.Kodi offMode shutdown
attr UG.Kino.RPi.Kodi room KODI
attr UG.Kino.RPi.Kodi updateInterval 60
Das loggen funktioniert auch generell in die Datenbank. Frage ich nach einem Film die Datenbank ab, bekomme ich folgende Logs:
| 2016-12-02 21:24:53 | UG.Kino.RPi.Kodi | XBMC | playStatus: playing | playStatus | playing | |
| 2016-12-02 21:24:53 | UG.Kino.RPi.Kodi | XBMC | playStatus: stopped | playStatus | stopped | |
| 2016-12-02 21:24:53 | UG.Kino.RPi.Kodi | XBMC | playStatus: playing | playStatus | playing | |
| 2016-12-02 21:24:53 | UG.Kino.RPi.Kodi | XBMC | playStatus: stopped | playStatus | stopped | |
| 2016-12-02 21:24:53 | UG.Kino.RPi.Kodi | XBMC | playStatus: playing | playStatus | playing | |
| 2016-12-02 21:24:53 | UG.Kino.RPi.Kodi | XBMC | playStatus: stopped | playStatus | stopped | |
| 2016-12-02 21:24:54 | UG.Kino.RPi.Kodi | XBMC | playStatus: playing | playStatus | playing | |
| 2016-12-02 21:24:54 | UG.Kino.RPi.Kodi | XBMC | playStatus: stopped | playStatus | stopped | |
| 2016-12-02 21:24:54 | UG.Kino.RPi.Kodi | XBMC | playStatus: playing | playStatus | playing | |
| 2016-12-02 21:24:54 | UG.Kino.RPi.Kodi | XBMC | playStatus: stopped | playStatus | stopped | |
| 2016-12-02 21:24:54 | UG.Kino.RPi.Kodi | XBMC | playStatus: playing | playStatus | playing | |
| 2016-12-02 21:24:54 | UG.Kino.RPi.Kodi | XBMC | playStatus: stopped | playStatus | stopped | |
| 2016-12-02 21:24:54 | UG.Kino.RPi.Kodi | XBMC | playStatus: playing | playStatus | playing | |
| 2016-12-02 21:24:55 | UG.Kino.RPi.Kodi | XBMC | playStatus: stopped | playStatus | stopped | |
| 2016-12-02 21:24:55 | UG.Kino.RPi.Kodi | XBMC | playStatus: playing | playStatus | playing | |
| 2016-12-02 21:24:55 | UG.Kino.RPi.Kodi | XBMC | playStatus: stopped | playStatus | stopped | |
| 2016-12-02 21:24:55 | UG.Kino.RPi.Kodi | XBMC | playStatus: playing | playStatus | playing | |
| 2016-12-02 21:24:55 | UG.Kino.RPi.Kodi | XBMC | playStatus: stopped | playStatus | stopped | |
| 2016-12-02 21:24:55 | UG.Kino.RPi.Kodi | XBMC | playStatus: playing | playStatus | playing | |
| 2016-12-02 21:24:56 | UG.Kino.RPi.Kodi | XBMC | playStatus: stopped | playStatus | stopped | |
Insgesammt ca 18.000 Zeilen für einen zwei Stunden Film. Wie man sieht 6 mal pro Sekunde einen Status Wechsel von playing auf stopped und zurück. Kann sich das jemand erklären?
Noch ein kurzer überblick über meine Konfiguration:
1x RPi mit FHEM
1x RPi mit OSMC (KODI wird von FHEM abgefragt und streamt Filme von einer Windowsfreigabe)
1x Ubuntu Server mit MariaDB (=SQL Server wird von FHEM gefüllt)
1x Dateiserver (stellt Filme im Netzwerk bereit - KODI spielt von hier Filme ab)
Ich würde auch hier erstmal FHEM aus der Gleichung rausnehmen und mich mit Telnet auf den JSON Port verbinden. Scheint so zu sein, dass Kodi permanent Events feuert? Hätte ich erstmal keine Idee. Evtl. mal im Kodi-Forum fragen.
Hallo,
also nach abhören der Telnet Verbindung ist mir nichts aufgefallen. Also habe ich das Gerät noch einmal gelöscht und neu angelegt. Und siehe da, es funktionierte. Also habe ich meine Alten Einstellungen nacheinander wieder angefügt. Das Status Flackern fing an als ich das Attribut "fork" enabled habe. Ich werde es heute Abend nach dem Film nochmal beobachten. Ohne das Attribut "fork enable" funktioniert das auslesen. Also tatsächlich kein Kodi Problem sondern ein Fhem Problem - zumindest bei mir.
Dann bitte einmal ein (verbose) Log posten. Am besten mit Events dabei.
Hey - danke für deine Arbeit und das klasse Modul.
Kann mir eventuell jemand sagen, wie ich an die ChannelId`s aus Kodi rankomme ?
Übern Log konnte ich jetzt ein paar raussehen - und auch erfolgreich hin und her schalten - aber die gibts doch sicher auch irgendwo als Liste?
Ich hab den Mega-Thread hier noch nicht ganz durchgewühlt aber über die Suche und das was ich bisher gelesen habe - konnte mir leider nicht weiterhelfen.
(Kodi läuft in 16,1 auf Win10)
Kann mir da eventuell jemand unter die Arme greifen ?
Besten Dank
Zitat von: romibaer am 14 Januar 2017, 18:14:54
Kann mir eventuell jemand sagen, wie ich an die ChannelId`s aus Kodi rankomme ?
Du kannst sie über die JSON-RPC Schnittstelle abfragen. Setze dein Kodi-Device auf verbose 5, dann sendest du einen PVR.GetChannelGroups Request um die channelgroupids abzufragen. Die Antwort findest du im fhem.log. Mit den/der ID sendest du einen PVR.GetChannels Request und siehst die Antwort wiederum im fhem.log.
PVR.GetChannelGroupsattr B_XBMC verbose 5
set B_XBMC jsonraw {"id":4711,"method":"PVR.GetChannelGroups","params":{"channeltype":"tv"},"jsonrpc":"2.0"}
fhem.log:
2017.02.01 11:00:18 5: XBMC_Read: Incoming data: {"id":4711,"jsonrpc":"2.0","result":{"channelgroups":[{"channelgroupid":1,"channeltype":"tv","label":"Alle Kanäle"}],"limits":{"end":1,"start":0,"total":1}}}
PVR.GetChannelsset B_XBMC jsonraw {"id":4712,"method":"PVR.GetChannels","params":{"channelgroupid":1},"jsonrpc":"2.0"}
fhem.log:
2017.02.01 11:01:14 5: XBMC_Read: Incoming data: {"id":4712,"jsonrpc":"2.0","result":{"channels":[{"channelid":31,"label":"Das Erste SD"},{"channelid":30,"label":"ZDF SD"},{"channelid":33,"label":"Das Erste"},{"channelid":26,"label":"ZDF"},{"channelid":29,"label":"ProSieben"},{"channelid":13,"label":"ProSieben maxx"},{"channelid":2,"label":"VOX"},{"channelid":25,"label":"Sixx"},{"channelid":14,"label":"kabeleins"},{"channelid":24,"label":"sat.1"},{"channelid":3,"label":"sat.1 Gold"},{"channelid":11,"label":"RTL"},{"channelid":16,"label":"RTL II"},{"channelid":6,"label":"Super RTL"},{"channelid":32,"label":"RTL NITRO"},{"channelid":21,"label":"TELE 5"},{"channelid":4,"label":"KiKA"},{"channelid":34,"label":"arte"},{"channelid":36,"label":"ZDFneo"},{"channelid":15,"label":"ZDFinfo"},{"channelid":27,"label":"ZDFkultur"},{"channelid":20,"label":"einsfestival"},{"channelid":35,"label":"eins|plus"},{"channelid":18,"label":"3sat"},{"channelid":1,"label":"BR"},{"channelid":23,"label":"hr"},{"channelid":8,"label":"mdr HD"},{"channelid":19,"label":"NDR HH"},{"channelid":10,"label":"rbb"},{"channelid":22,"label":"SWR"},{"channelid":28,"label":"WDR"},{"channelid":7,"label":"tagesschau24"},{"channelid":12,"label":"phoenix"},{"channelid":9,"label":"n-tv"},{"channelid":5,"label":"Disney Channel"},{"channelid":17,"label":"nickelodeon CH"}],"limits":{"end":36,"start":0,"total":36}}}
Ich kann bei Bedarf fehlende API-Funktion in das Modul einbauen, wenn das hilft.
Zitat von: vbs am 01 Februar 2017, 12:08:27
Ich kann bei Bedarf fehlende API-Funktion in das Modul einbauen, wenn das hilft.
Apropos :-) Ich hab verschiedene GUI.ActivateWindow-Requests in einer Funktion ausserhalb des Moduls implementiert, bei Interesse baue ich sie als neuen Befehl in die aktuelle Version ein und schicke sie dir.
# mostly according to http://kodi.wiki/view/Opening_Windows_and_Dialogs
our %kodi_windownames = (
Settings => [ 'settings' ],
# video
VideoRoot => [ 'videos', 'library://video/' ],
Movies => [ 'videos', 'videodb://movies/' ],
MovieGenres => [ 'videos', 'videodb://movies/genres/' ],
MovieTitles => [ 'videos', 'videodb://movies/titles/' ],
MovieYears => [ 'videos', 'videodb://movies/years/' ],
MovieActors => [ 'videos', 'videodb://movies/actors/' ],
MovieDirectors => [ 'videos', 'videodb://movies/directors/' ],
MovieStudios => [ 'videos', 'videodb://movies/studios/' ],
MovieSets => [ 'videos', 'videodb://movies/sets/' ],
MovieCountries => [ 'videos', 'videodb://movies/countries/' ],
MovieTags => [ 'videos', 'videodb://movies/tags/' ],
RecentlyAddedMovies => [ 'videos', 'videodb://recentlyaddedmovies/' ],
TvShows => [ 'videos', 'videodb://tvshows/' ],
TvShowGenres => [ 'videos', 'videodb://tvshows/genres/' ],
TvShowTitles => [ 'videos', 'videodb://tvshows/titles/' ],
TvShowYears => [ 'videos', 'videodb://tvshows/years/' ],
TvShowActors => [ 'videos', 'videodb://tvshows/actors/' ],
TvShowStudios => [ 'videos', 'videodb://tvshows/studios/' ],
RecentlyAddedEpisodes => [ 'videos', 'videodb://recentlyaddedepisodes/' ],
InProgressTvShows => [ 'videos', 'library://video/inprogressshows.xml/' ], # !
MusicVideos => [ 'videos', 'videodb://musicvideos/' ],
MusicVideoGenres => [ 'videos', 'videodb://musicvideos/genres/' ],
MusicVideoTitles => [ 'videos', 'videodb://musicvideos/titles/' ],
MusicVideoYears => [ 'videos', 'videodb://musicvideos/years/' ],
MusicVideoArtists => [ 'videos', 'videodb://musicvideos/artists/' ],
MusicVideoAlbums => [ 'videos', 'videodb://musicvideos/albums/' ],
MusicVideoDirectors => [ 'videos', 'videodb://musicvideos/directors/' ],
MusicVideoStudios => [ 'videos', 'videodb://musicvideos/studios/' ],
RecentlyAddedMusicVideos => [ 'videos', 'videodb://recentlyaddedmusicvideos/' ],
VideoPlaylists => [ 'videos', 'special://videoplaylists/' ],
VideoAddons => [ 'videos', 'addons://sources/video/' ],
VideoFiles => [ 'videos', 'sources://video/' ],
# music
MusicRoot => [ 'music', 'library://music/' ],
Genres => [ 'music', 'musicdb://genres/' ],
Artists => [ 'music', 'musicdb://artists/' ],
Albums => [ 'music', 'musicdb://albums/' ],
Song => [ 'music', 'musicdb://songs/' ],
Top100 => [ 'music', 'musicdb://top100/' ],
Top100Songs => [ 'music', 'library://music/top100/top100songs.xml/' ], # !
Top100Albums => [ 'music', 'library://music/top100/top100albums.xml/' ], # !
RecentlyAddedAlbums => [ 'music', 'musicdb://recentlyaddedalbums/' ],
RecentlyPlayedAlbums => [ 'music', 'musicdb://recentlyplayedalbums/' ],
Compilations => [ 'music', 'musicdb://compilations/' ],
Years => [ 'music', 'musicdb://years/' ],
Singles => [ 'music', 'musicdb://singles/' ],
MusicFiles => [ 'music', 'sources://music/' ],
MusicPlaylists => [ 'music', 'special://musicplaylists/' ],
MusicAddons => [ 'music', 'addons://sources/audio/' ],
# programs
ProgramAddons => [ 'programs', 'addons://sources/executable/' ],
AndroidApps => [ 'programs', 'androidapp://sources/apps/' ],
# addons
Addons => [ 'addonbrowser' ],
#UpdateAvailable => [ 'addonbrowser', 'addons://outdated/' ],
#CurrentlyDownloading => [ 'addonbrowser', 'addons://downloading/' ],
#RecentlyUpdated => [ 'addonbrowser', 'addons://recently_updated/' ],
#Repositories => [ 'addonbrowser', 'addons://repos/' ],
#InstallZip => [ 'addonbrowser', 'addons://install/' ],
AddonSearch => [ 'addonbrowser', 'addons://search/' ],
FileManager => [ 'filemanager' ],
EventLog => [ 'eventlog' ],
SubTitles => [ 'subtitlesearch' ],
MovieInformation => [ 'movieinformation' ],
# SystemInfo => [ 'settingssysteminfo' ],
# Profile => [ 'settingsprofile' ],
# Pictures => [ 'mypics' ],
# Weather => [ 'myweather' ],
# PVR => [ 'mypvrchannels' ],
);
sub kodi_activatewindow($$;$) {
my $kodi = shift;
my $window = shift;
my $path = shift;
my $params;
if($path) {
$params = {window => $window,parameters => [ $path ]};
} else {
$params = {window => $window};
}
my $hash = $defs{$kodi};
my $data = {
method => 'GUI.ActivateWindow',
params => $params
};
XBMC_Call($hash,$data,1);
}
sub kodi_activatewindow_byname($$) {
my $kodi = shift;
my $name = shift;
our %kodi_windownames;
kodi_activatewindow($kodi, $kodi_windownames{$name}[0], $kodi_windownames{$name}[1]);
}
Die Liste ist sicher noch zu erweitern, aber ich finde keine gescheite Doku dazu.
Na klar, gern doch :)
Zitat von: vbs am 01 Februar 2017, 12:08:27
Ich kann bei Bedarf fehlende API-Funktion in das Modul einbauen, wenn das hilft.
Ich weiß nicht ob die API das hergibt, was ich aktuell jedoch am meisten vermisse:
Inhalte aus den Bibliotheken aus FHEM heraus abspielen zu können und zwar ohne dies statisch einprogrammieren zu müssen. Denke hier vor allem an Musik.
Ich vermute mal wenn man Kodi mit SQL-Datenbank am laufen hat sollte das doch möglich sein?!
(Nur eine Vermutung, bin selbst absolut unfähig sowas zu programmieren).
grtz
CmdA
Im Anhang wie angekündigt eine Testversion(!) des Moduls, die den neuen Befehl "activatewindow" implementiert, mit dem benannte Fenster in Kodi geöffnet werden können. Eine Liste der Fenster ist als Set-Parameter hinterlegt und dokumentiert.
Entwicklungstechnisch weiß ich nicht, ob es Ok ist Packagevariablen (our %XBMC_WindowNames) zu nutzen. Ich habe allerdings auch keinen Hinweis aufs Gegenteil gefunden.
Scheint problemlos zu funktionieren. Danke dafür.
Wäre es möglich die TVChannels auch unterzubringen?
grtz
CmdA
@nesges
Danke dafür, gefällt mir gut! Habe es 1:1 übernommen (in das neue 70_KODI).
Hallo Freunde von XBMC! Ich habe das Modul nun in 70_KODI umbenannt und dafür auch einen neuen Thread spendiert. Hier gehts weiter:
https://forum.fhem.de/index.php/topic,66299.0.html
Falls hier ein Mod vorbei kommt: Könnte jemand diesen Thread bitte schließen?
Das Modul wurde ja vor mehr als 2 Jahren durch das KODI-Modul ersetzt. Ich würde daher nun dieses Modul gerne aus dem SVN löschen. Spricht da etwas dagegen aus "verwaltungstechnischer" Sicht?