Autor Thema: Gelöst: Kodi über json-rpc fernsteuern & jederzeit aktuelle Tagesschau abspielen  (Gelesen 1569 mal)

Offline thorschtn

  • Full Member
  • ***
  • Beiträge: 132
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!?
« Letzte Änderung: 28 Oktober 2017, 17:26:05 von thorschtn »
RPi 3 - FHEM 5.9 - Smartvisu 2.9
MapleCUN, Homematic, 433MHz, AB440, 1-Wire Bewässerung & Pool, Jarolift (Bastelbudenbuben), Signal Messenger, Denon AVR, LG WebOS, AmazonEcho, Jura S90 (ESP8266), Sonoff, Xiaomi Mii Sauger, Worx SO500i

Offline vbs

  • Hero Member
  • *****
  • Beiträge: 2203
Ich wüsste leider keine einfache Methode, um an die Response-JSON-Daten zu kommen.

Offline thorschtn

  • Full Member
  • ***
  • Beiträge: 132
Ich denke, httpmod sollte das können. Ich weiß nur noch nicht, wie ich den request in httpmod aufsetzen muss....
RPi 3 - FHEM 5.9 - Smartvisu 2.9
MapleCUN, Homematic, 433MHz, AB440, 1-Wire Bewässerung & Pool, Jarolift (Bastelbudenbuben), Signal Messenger, Denon AVR, LG WebOS, AmazonEcho, Jura S90 (ESP8266), Sonoff, Xiaomi Mii Sauger, Worx SO500i

Offline vbs

  • Hero Member
  • *****
  • Beiträge: 2203
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

Offline thorschtn

  • Full Member
  • ***
  • Beiträge: 132
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!
RPi 3 - FHEM 5.9 - Smartvisu 2.9
MapleCUN, Homematic, 433MHz, AB440, 1-Wire Bewässerung & Pool, Jarolift (Bastelbudenbuben), Signal Messenger, Denon AVR, LG WebOS, AmazonEcho, Jura S90 (ESP8266), Sonoff, Xiaomi Mii Sauger, Worx SO500i

Offline vbs

  • Hero Member
  • *****
  • Beiträge: 2203
Freut mich!

Offline riker1

  • Sr. Member
  • ****
  • Beiträge: 532


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

FHEM 5.8 Ubuntu, FHEM 5.8 RPI 3 , Actoren: IT ,
MAX CUBE, MAX HT, MAX WT, Selbstbau nanoCULs, FS 20, Homematic, FTK, SW. DIM, Smoke,KODI,Squeezebox

Offline riker1

  • Sr. Member
  • ****
  • Beiträge: 532
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.


FHEM 5.8 Ubuntu, FHEM 5.8 RPI 3 , Actoren: IT ,
MAX CUBE, MAX HT, MAX WT, Selbstbau nanoCULs, FS 20, Homematic, FTK, SW. DIM, Smoke,KODI,Squeezebox

Offline vbs

  • Hero Member
  • *****
  • Beiträge: 2203
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")."

Offline riker1

  • Sr. Member
  • ****
  • Beiträge: 532
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"}
FHEM 5.8 Ubuntu, FHEM 5.8 RPI 3 , Actoren: IT ,
MAX CUBE, MAX HT, MAX WT, Selbstbau nanoCULs, FS 20, Homematic, FTK, SW. DIM, Smoke,KODI,Squeezebox

Offline riker1

  • Sr. Member
  • ****
  • Beiträge: 532
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
FHEM 5.8 Ubuntu, FHEM 5.8 RPI 3 , Actoren: IT ,
MAX CUBE, MAX HT, MAX WT, Selbstbau nanoCULs, FS 20, Homematic, FTK, SW. DIM, Smoke,KODI,Squeezebox

Offline vbs

  • Hero Member
  • *****
  • Beiträge: 2203
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

Offline riker1

  • Sr. Member
  • ****
  • Beiträge: 532
Ok, mache ich mal. danke
FHEM 5.8 Ubuntu, FHEM 5.8 RPI 3 , Actoren: IT ,
MAX CUBE, MAX HT, MAX WT, Selbstbau nanoCULs, FS 20, Homematic, FTK, SW. DIM, Smoke,KODI,Squeezebox