NEWS
iobroker->Kodi/CEC->TV steuern
-
@psyganja
Mal prinzipiell ein Gedanke:
Ein HDMI-Gerät kann per CEC den TV eigentlich nur ausschalten wenn auch der jeweilige HDMI-Port am TV-Eingang ausgewählt ist.
So ist mein Kenntnisstand. d.h. jetzt ist die Frage ob das dann mit dem PI überhaupt Sinn macht, weil wenn Du per Chromecast TV schaust dann erledigt das ausschalten ja eigentlich der Chromecast. Oder täusch ich mich da ? -
@djmarc75 ich geh mal von aus dass der KODI schaut wenn er die Glotze auschalten will..
aber ja du hast recht..
-
@arteck said in iobroker->Kodi/CEC->TV steuern:
@psyganja kannst du dich per ssh damit verbinden
Ja das funktioniert
@djmarc75 said in iobroker->Kodi/CEC->TV steuern:
@psyganja
Mal prinzipiell ein Gedanke:
Ein HDMI-Gerät kann per CEC den TV eigentlich nur ausschalten wenn auch der jeweilige HDMI-Port am TV-Eingang ausgewählt ist.
So ist mein Kenntnisstand. d.h. jetzt ist die Frage ob das dann mit dem PI überhaupt Sinn macht, weil wenn Du per Chromecast TV schaust dann erledigt das ausschalten ja eigentlich der Chromecast. Oder täusch ich mich da ?Wenn ich mit Chromecast gucke und in der Yatse App CEC:Standby auswähle, wird der TV ausgeschaltet.
-
@psyganja sagte in iobroker->Kodi/CEC->TV steuern:
Yatse App
Die kenn ich nicht aber ich habe auch kein Chromecast.
Prinzipiell möchstest Du WANN den TV ausschalten ? Egal welches Gerät grad am TV aktiv ist ?
Quasi, grob ausgedrückt, einen "Schalter" zum Ausschalten wenn dieser gedrückt wird ?! -
@djmarc75
Yatse ist eine App um Kodi bedienen zu können. Ich habe diese nur erwähnt, weil diese einen CEC BEfehl sendet um den TV auszuschalten.Eigentlich immer wenn der TV an ist! Nein ich möchte keine Schaltsteckdose nehmen. Es ist ja irgendwie möglich über cec und den Weg möchte ich.
Es gibt auch ein Issues nur verstehe ich die Lösung nicht ganz.
-
@psyganja sagte in iobroker->Kodi/CEC->TV steuern:
Yatse ist eine App um Kodi bedienen zu können
@psyganja sagte in iobroker->Kodi/CEC->TV steuern:
Chromecast gucke und in der Yatse App CEC:Standby auswähle, wird der TV ausgeschaltet.
??
Also was schaltet die APP? Kodi oder Chromecast? Und eine Nintendo hast Du auch noch. Wird das auch mit der APP vorerst gelöst? Ich frage ja deshalb um einen Ansatz zu finden und dann das ganze (vll sogar mit dieser APP) zu simulieren.
Wobei ich stark bezweifle dass dieses ISSUE mit der aktuellen KodiVersion funktioniert (ist ja seit 2020 nix mehr gemacht worden). -
-
@psyganja Hab jetzt mal alles nachgebaut:
libreelec (Kodi) auf einem RPI installiert, die Yatse APP installiert, KODI konfiguriert, den KODI-Adapter auf iob installiert und festgestellt:
dass Dein Vorhaben so einfach nicht machbar ist da die Befehle welche Yatse an Kodi schickt nicht bekannt sind.
Ich selbst nutze den HarmonyHub um meine IR Devices zu steuern. HDMI-CEC hab ich bei keinem meiner Geräte aktiviert (vorhin zum Testen) da dieser "Standard" auch nicht unbedingt zwischen allen Herstellern kompatibel ist.Aber vielleicht findet sich ja ein Fuchs welcher eine Lösung hat.
Beste Grüße -
@djmarc75
Es muss irgendwie möglich sein. Kodi selbst bietet sogar eine built in function, ich denke diese wird auch von Yatse benutzt. Soweit ich es heraus lesen konnte, Hier wird darüber geschrieben, hat es was mit POST/GET über JSON zu tun. -
@djmarc75
ich denke die Befehle sind schon bekannt und hier offiziell
dokumentiert
https://kodi.wiki/view/JSON-RPC_APIwer es genauer wissen will, sofern das mit der https Verschlüsselung klappt
Ich glaube man muss auf Handy noch ein Zertifikat von mitmproxy installieren.https://mitmproxy.org/
https://hub.docker.com/r/mitmproxy/mitmproxy/ -
@oliverio sagte in iobroker->Kodi/CEC->TV steuern:
@djmarc75
ich denke die Befehle sind schon bekannt und hier offiziell
dokumentiert
https://kodi.wiki/view/JSON-RPC_APIDas ist ein böhmisches Dorf für mich.
@psyganja sagte in iobroker->Kodi/CEC->TV steuern:
Kodi selbst bietet sogar eine built in function
Ok, Das dann in Verbindung mit
@oliverio sagte in iobroker->Kodi/CEC->TV steuern:
Aber das ist mir alles zu hoch.
Vll kann Dir @OliverIO da besser helfen ?! -
@psyganja
also ich weiß nicht, was da für ein key gemeint ist, dan @arteck da erwähnt hat. wenn hier ssh gemeint ist, dann ist es nicht der richtige. kodi interessiert sich nicht für ssh
wenn dann musst du die berechtigung aus kodi direkt nehmen
https://forum.kodi.tv/showthread.php?tid=352997bitte prüfe der reihe nach folgendes, was du hier eingestellt hast
https://kodi.wiki/view/Settings/Services/Control#Web_serverAllow remote control via HTTP sollte angeschaltet sein
Require authentication sollte ausgeschaltet sein. da es hier nur innerhalb deines netzwerkes ist und du hoffentlich keine ports am router freigegeben hast, ist das relativ gefahrlos
das webinterface ist egalZusätzlich noch diese beiden Optionen betrachten:
https://kodi.wiki/view/Settings/Services/Control#Application_control
Ganz einfach wäre es beides anzuschaltenDanach kannst du es nochmal probieren, wie du es bereits am Anfang gemacht hast, als du das Ergebnis erhalten hast.
Evtl kannst du uns noch sagen, wie du den Befehl abgesetzt hast.
Aus einem Browser? aus einem Skript? Mit curl?@psyganja sagte in iobroker->Kodi/CEC->TV steuern:
{"error":{"code":-32099,"message":"Bad client permission."},"id":1,"jsonrpc":"2.0"}
-
@psyganja sagte in iobroker->Kodi/CEC->TV steuern:
Kodi selbst bietet sogar eine built in function
genau diese Funktionen nutzt das von dir erwähnte Addon.
Allerdings werden diese Funktionen nicht durch das JSON-RPC Interface angeboten. Das Addon ergänzt dasimport xbmc import urllib.parse import sys import time try: params = urllib.parse.parse_qs('&'.join(sys.argv[1:])) command = params.get('command',None) except: command = None if command and command[0] == 'activate': xbmc.executebuiltin('CECActivateSource') elif command and command[0] == 'toggle': xbmc.executebuiltin('CECToggleState') elif command and command[0] == 'standby': xbmc.executebuiltin('CECStandby') elif command and command[0] == 'stop_and_standby': if xbmc.Player().isPlaying(): xbmc.executebuiltin("PlayerControl(Stop)") time.sleep(3) xbmc.executebuiltin('CECStandby')
-
@oliverio said in iobroker->Kodi/CEC->TV steuern:
@psyganja sagte in iobroker->Kodi/CEC->TV steuern:
Kodi selbst bietet sogar eine built in function
genau diese Funktionen nutzt das von dir erwähnte Addon.
Allerdings werden diese Funktionen nicht durch das JSON-RPC Interface angeboten. Das Addon ergänzt dasimport xbmc import urllib.parse import sys import time try: params = urllib.parse.parse_qs('&'.join(sys.argv[1:])) command = params.get('command',None) except: command = None if command and command[0] == 'activate': xbmc.executebuiltin('CECActivateSource') elif command and command[0] == 'toggle': xbmc.executebuiltin('CECToggleState') elif command and command[0] == 'standby': xbmc.executebuiltin('CECStandby') elif command and command[0] == 'stop_and_standby': if xbmc.Player().isPlaying(): xbmc.executebuiltin("PlayerControl(Stop)") time.sleep(3) xbmc.executebuiltin('CECStandby')
Ja das habe ich verstanden. Die ganzen Einstellungen in Kodi bzgl fernsteuern über http habe ich schon gemacht. Sonst würde die App Yatse auch nicht funktionieren. Ich habe auch http Zugriff über User PWD konfiguriert.
Den JSON Befehl habe ich über einen Browser abgegeben Könnte man das auch auf der Shell machen? Den curl Befehl habe ich noch nicht getestet. -
@psyganja
ja, genau da kann man den Befehl cURL nutzenauf Deutsch
https://wiki.ubuntuusers.de/cURL/und die original-Doku
https://linux.die.net/man/1/curldu kannst aber innerhalb des javascript adapters auch jede andere kommunikationsbibliothek verwenden
https://github.com/request/request
https://axios-http.com/docs/intro
https://github.com/node-fetch/node-fetch -
Ich habe jetzt mal den cURL Befehl über eine Linux Console abgesetzt
curl --header 'Content-Type: application/json' --data-binary '{"jsonrpc":"2.0","method":"Addons.ExecuteAddon","params":{"addonid":"script.json-cec","params":{"command":"standby"}},"id":1}' http://192.168.188.46:8080/jsonrpc
bekomme jetzt keine Fehlermeldung , aber der TV schaltet sich nicht aus. Kann natürlich auch nicht prüfen ob der CEC Befehl von Kodi ausgeführt wurde.
-
@psyganja das Command mal in CECstandby ändern- oder CECStandby
-
@djmarc75 said in iobroker->Kodi/CEC->TV steuern:
@psyganja das Command mal in CECstandby ändern- oder CECStandby
nein im Addon heißt der Befehl "standby"
elif command and command[0] == 'standby': xbmc.executebuiltin('CECStandby')
-
dann könntest du erstmal ganz unten auf betriebssystemebene probieren
und direkt den cec-client installieren.
dieser steuert nämlich die eigentliche libCEC, welche auch Kodi verwendet.https://www.linuxuprising.com/2019/07/raspberry-pi-power-on-off-tv-connected.html
und auch mal noch das Kapitel 5 hier beachten
https://kodi.wiki/view/CEC -
Nun funktioniert es!
Ich habe das ganze heute im Schlafzimmer am TV versucht, nachdem ich keine Fehlermeldung zurück bekommen habe als ich den cURL Befehl abgesetzt hatte, der TV kann nicht über CEC ausgeschaltet werden
Also das ganze an einem anderen TV getestet und siehe da, der dieser cURL Befehlcurl -X POST -H 'Content-Type: application/json' --data-binary '{"jsonrpc":"2.0","method":"Addons.ExecuteAddon","params":{"addonid":"script.json-cec","params":{"command":"standby"}},"id":1}' http://192.168.188.46:8080/jsonrpc
schaltet nun meinen TV aus! Zum einschalten dann einfach
curl -X POST -H 'Content-Type: application/json' --data-binary '{"jsonrpc":"2.0","method":"Addons.ExecuteAddon","params":{"addonid":"script.json-cec","params":{"command":"activate"}},"id":1}' http://192.168.188.46:8080/jsonrpc
Jetzt möchte ich mir ein Script bauen welches ich dann im iot Adapter als Alexa Gerät anlegen möchte. Jemand dafür ein Beispiel?