Ich möchte auf Zuruf immer die letzte Folge der Tagesschau gezeigt bekommen. FHEM soll dabei den Fernseher und Kodi starten (das ist ja erstmal kein Problem), über das Tagesschau-Addon die letzte Sendung auswählen, den Player starten und die letzte Folge abspielen (da wirds dann schon ein bisschen schwieriger).
Zwischenzeitlich bin ich da auch ein paar Schritte weiter:
# CALL
set Kodi jsonraw {"jsonrpc":"2.0","method":"Files.GetDirectory","params":{"directory":"plugin://plugin.video.tagesschau/","media":"files"},"id":"1"}
schreibt die Folder-Liste des Tagesschau-Addons ins FHEM-Logfile:
# READ
{"file":"plugin://plugin.video.tagesschau/?action=list_feed&feed=latest_broadcasts","filetype":"directory","label":"Aktuelle Sendungen","type":"unknown"}, ...........
mit dieser Antwort kann man sich dann die aktuell verfügbaren Sendungen anfragen:
# CALL
set Kodi jsonraw {"jsonrpc":"2.0","method":"Files.GetDirectory","params":{"directory":"plugin://plugin.video.tagesschau/?action=list_feed&feed=latest_broadcasts","media":"files"},"id":"1"}
und bekommt dann diese Antwort:
# READ
{"id":"1","jsonrpc":"2.0","result":{"files":[{"file":"plugin://plugin.video.tagesschau?action=play_video&feed=latest_broadcasts&tsid=ts-22411","filetype":"file","label":"tagesschau vom 25.10.2017","type":"unknown"},{"file":"plugin://plugin.video.tagesschau?action=play_video&feed=latest_broadcasts&tsid=tt-5587","filetype":"file","label":"tagesthemen vom 25.10.2017","type":"unknown"},{"file":"plugin://plugin.video.tagesschau?action=play_video&feed=latest_broadcasts&tsid=nm-4535","filetype":"file","label":"nachtmagazin vom 25.10.2017","type":"unknown"},{"file":"plugin://plugin.video.tagesschau?action=play_video&feed=latest_broadcasts&tsid=tsvorzwanzig-2887","filetype":"file","label":"tagesschau vor 20 Jahren vom 24.10.2017","type":"unknown"},{"file":"plugin://plugin.video.tagesschau?action=play_video&feed=latest_broadcasts&tsid=tsg-5451","filetype":"file","label":"tagesschau (mit Gebärdensprache) vom 25.10.2017","type":"unknown"},{"file":"plugin://plugin.video.tagesschau?action=play_video&url=http%253A%2F%2Fmedia.tagesschau.de%2Fvideo%2F100s%2F2017%2F1025%2FTV-100s-2109.webxl.h264.mp4","filetype":"file","label":"Tagesschau in 100 Sekunden vom 25.10.2017 21:09","type":"unknown"},{"file":"plugin://plugin.video.tagesschau?action=play_video&feed=latest_broadcasts&tsid=tt-5587","filetype":"file","label":"tagesthemen vom 25.10.2017 21:35","type":"unknown"}],"limits":{"end":7,"start":0,"total":7}}} .......
Hieraus kann man sich dann den Aufruf der letzten Sendung ableiten und diese direkt im Player starten:
# CALL
set Kodi jsonraw {"jsonrpc":"2.0","method":"Player.Open","params":{"item":{"file":"plugin://plugin.video.tagesschau?action=play_video&feed=latest_broadcasts&tsid=ts-22411"}},"id":"1"}
set Kodi volume 70
Jetzt muss ich lediglich noch aus der Antwort mit der Sendungsliste die tsid der letzten Sendung in ein FHEM-Reading bekommen und schon lässt sich jederzeit automatisch die letzte Sendung aufrufen!
Wie bekomme ich denn jestzt die Json-Antwort, die ich bislang nur im Logfile stehen habe über das Kodi-Modul oder über httpmod in ein Reading!?
Ich wüsste leider keine einfache Methode, um an die Response-JSON-Daten zu kommen.
Ich denke, httpmod sollte das können. Ich weiß nur noch nicht, wie ich den request in httpmod aufsetzen muss....
Ich hab hier mal eine KODI-Version für dich gebaut, mit der du auf die JSON-Antworten reagieren kannst. Kannst du ja evtl mal ausprobieren:
https://forum.fhem.de/index.php/topic,66299.msg705700.html#msg705700
Wie genial ist das denn? Du weisst keine einfache Methode um an die Daten zu kommen aber implementierst das mal eben?
Hat funktioniert, besten Dank!
Damit kann ich jetzt jederzeit die Liste der verfügbaren Sendungen aktualisieren:
set Kodi jsonraw {"jsonrpc":"2.0","method":"Files.GetDirectory","params":{"directory":"plugin://plugin.video.tagesschau/?action=list_feed&feed=latest_broadcasts","media":"files"},"id":"1"}
Und dann lediglich den JSON String noch zerlegen und in einzelnen Readings bereit stellen:
define Kodi.Tagesschau expandJSON Kodi:jsonResponse:.{.*} json
Jetzt kann ich die aktuellste Tagesschau aufrufen/starten:
set Kodi jsonraw {"jsonrpc":"2.0","method":"Player.Open","params":{"item":{"file":"{(ReadingsVal("Kodi","result_files_07_file",0))}"}},"id":"1"}
Und schon kann Alexa auf Zuruf jederzeit die Tagesschau einschalten!
Besten Dank vbs, das hat mir sehr geholfen!
Freut mich!
Zitat von: thorschtn am 28 Oktober 2017, 17:25:45
Damit kann ich jetzt jederzeit die Liste der verfügbaren Sendungen aktualisieren:
set Kodi jsonraw {"jsonrpc":"2.0","method":"Files.GetDirectory","params":{"directory":"plugin://plugin.video.tagesschau/?action=list_feed&feed=latest_broadcasts","media":"files"},"id":"1"}
Und dann lediglich den JSON String noch zerlegen und in einzelnen Readings bereit stellen:
define Kodi.Tagesschau expandJSON Kodi:jsonResponse:.{.*} json
Jetzt kann ich die aktuellste Tagesschau aufrufen/starten:
set Kodi jsonraw {"jsonrpc":"2.0","method":"Player.Open","params":{"item":{"file":"{(ReadingsVal("Kodi","result_files_07_file",0))}"}},"id":"1"}
Hi, wollte da nun nachbauen, allerdings bekomme ich das nicht hin.
hört sich ja top an.
also, bekomme als result: am Kodi objekt:
{"id":"1","jsonrpc":"2.0","result":{"files":[{"file":"plugin://plugin.video.tagesschau?action=play_video&feed=latest_broadcasts&tsid=ts-27859","filetype":"file","label":"tagesschau vom 04.10.2018","type":"unknown"},{"file":"plugin://plugin.video.tagesschau?action=play_video&feed=latest_broadcasts&tsid=tt-6295","filetype":"file","label":"tagesthemen vom 04.10.2018","type":"unknown"},{"file":"plugin://plugin.video.tagesschau?action=play_video&feed=latest_broadcasts&tsid=nm-4967","filetype":"file","label":"nachtmagazin vom 05.10.2018","type":"unknown"},{"file":"plugin://plugin.video.tagesschau?action=play_video&feed=latest_broadcasts&tsid=weltspiegel-3917","filetype":"file","label":"Weltspiegel vom 30.09.2018","type":"unknown"},{"file":"plugin://plugin.video.tagesschau?action=play_video&feed=latest_broadcasts&tsid=tsvorzwanzig-3633","filetype":"file","label":"tagesschau vor 20 Jahren vom 04.10.2018","type":"unknown"},{"file":"plugin://plugin.video.tagesschau?action=play_video&feed=latest_broadcasts&tsid=tsg-6145","filetype":"file","label":"tagesschau (mit Gebärdensprache) vom 04.10.2018","type":"unknown"},{"file":"plugin://plugin.video.tagesschau?action=play_video&url=http%253A%2F%2Fmedia.tagesschau.de%2Fvideo%2F100s%2F2018%2F1005%2FTV-100s-1426.webxl.h264.mp4","filetype":"file","label":"Tagesschau in 100 Sekunden vom 05.10.2018 14:26","type":"unknown"},{"file":"plugin://plugin.video.tagesschau?action=play_video&feed=latest_broadcasts&tsid=ts-27871","filetype":"file","label":"tagesschau vom 05.10.2018 14:00","type":"unknown"}],"limits":{"end":8,"start":0,"total":8}}}
dann mit
defmod OSMC95Wohn.Tagesschau expandJSON OSMC95Wohn:jsonResponse:.{.*} json
aber dieses Reading:
..(ReadingsVal("Kodi","result_files_07_file",0)..
ist nicht da.
was könnte ich denn falsch machen?
Danke
Hallo,
haben nun eine merkwürdige Fehlermeldung:
2019.02.12 18:47:05.413 1: PERL WARNING: Unescaped left brace in regex is deprecated here (and will be fatal in Perl 5.30), passed through in regex; marked by <-- HERE in m/^Value("osmc_tagesschau").{ <-- HERE .*}$/ at ./FHEM/98_expandJSON.pm line 64, <$fh> line 7686.
2019.02.12 18:47:05.416 1: PERL WARNING: Unescaped left brace in regex is deprecated here (and will be fatal in Perl 5.30), passed through in regex; marked by <-- HERE in m/^ReadingsVal("osmc_tagesschau","state","").{ <-- HERE .fil*}$/ at ./FHEM/98_expandJSON.pm line 64, <$fh> line 7688.
2019.02.12 18:47:06.388 1: PERL WARNING: can't getattr: Input/output error at FHEM/DevIo.pm line 420.
Irgendwo wird da offenbar eine Regex prozessiert, deren Syntax nicht (mehr) korrekt ist:
https://forum.fhem.de/index.php?topic=90256.0
Kann das irgendwo in Code von dir sein?
"Value("osmc_tagesschau")."
Hallo
"Value("osmc_tagesschau")."
das ist mein Kodi, entspricht also Value("kodi")
Habe eigentlich nur den code von oben genommen und in ein notify gepackt und mein kodi-namen verwendet
set OSMC95Wohn jsonraw {"jsonrpc":"2.0","method":"Files.GetDirectory","params":{"directory":"plugin://plugin.video.tagesschau/?action=list_feed&feed=latest_broadcasts","media":"files"},"id":"1"};
{fhem('setreading OSMC95Wohn json_TR '.ReadingsVal("OSMC95Wohn","jsonResponse",""))};
#system('sleep 1');
#https://forum.fhem.de/index.php?topic=78499.0
#https://forum.fhem.de/index.php/topic,78499.msg705834.html#msg705834
defmod OSMC95Wohn.Tagesschau expandJSON OSMC95Wohn:jsonResponse:.{.*} json;
#system('sleep 10');
set OSMC95Wohn jsonraw {"jsonrpc":"2.0","method":"Player.Open","params":{"item":{"file":"
{(ReadingsVal("OSMC95Wohn","result_files_07_file",0))}"}},"id":"1"}
Hatte versucht den JSON string im dummy zwischenzuspeichern.
defmod OSMC95Wohn.Tagesschau1 expandJSON Value("osmc_tagesschau").{.*} json;;
defmod osmc_tagesschau dummy
da bei mir das ganze nicht funkioniert hatte. siehe alter Beitrag von mir weiter oben.
Danke
Hat ziemlich sicher hiermit zu tun:
defmod Kodi.Tagesschau expandJSON Kodi:jsonResponse:.{.*} json
Probier mal die Klammern zu escapen:
defmod Kodi.Tagesschau expandJSON Kodi:jsonResponse:.\{.*\} json
Ok, mache ich mal. danke