NEWS
Test Adapter cec2
-
Aktuelle Test Version 0.0.8 Veröffentlichungsdatum 14.02.2021 Github Link https://github.com/iobroker-community-adapters/ioBroker.cec2 Ich habe einen Adapter für HDMI-CEC geschrieben. Es gab bereits einen, der wurde aber nicht mehr gepflegt und hatte aus meiner Sicht einige Probleme (mehr dazu).
Der HDMI-CEC Adapter ist getestet auf eine Raspberry PI, der per HDMI an einem TV oder Switch oder AV-Reciever hängt (also irgenwie im "HDMI-Netz"). Es sollte auch mit anderen Rechnern gehen. Wichtig ist, dass der cec-client vorhanden ist, unter Raspian "cec-utils" installieren mit:
sudo apt-get install cec-utilsDanach muss vermutlich noch dem user "iobroker" das Recht eingeräumt werden auf die CEC-Schnittstelle zuzugreifen, das geht in Raspian so (User iobroker ist danach Mitglied in der Gruppe "video"):
sudo usermod -a -G video iobrokerDer Adapter pollt beim Start alle HDMI Geräte und legt entsprechend Geräte im ioBroker an. Ich habe für die Geräte ID den Namen des Geräts genommen. Der sollte sich nicht verändern und ist für Menschen doch ganz gut lesbar. Wenn während dem Betrieb weitere Geräte hinzukommen, werden die ebenfalls hinzugefügt und ggf. befragt.
(wer sich fragt, was das ganze mit den Adressen soll, liest kurz im Spoiler eine kurze Einführung in CEC Adressen ;-)):
Es gibt für jedes Gerät die folgenden States:
- info.active = das Gerät wurde gesehen, seitdem der Adapter gestartet ist und ist vermutlich unter der logischen Adresse noch erreichbar
- info.cecVersion = meist 1.4, wäre interessant ob ihr hier was anderes beobachtet
- info.lastSeen = letzte Nachricht von dem Gerät
- info.logicalAddress = logische Adresse (falls bekannt und aktiv) als Nummer
- info.logicalAddressHex = logische Adresse (falls bekannt und aktiv) als Hex-Zahl (wird in dieser Form für eigene Befehle benötigt, also 0-F).
- info.Name = der Name, den das Gerät sich selbst gibt
- info.physicalAddress = physische Adresse des Gerätshttp://info.name/
- info.Vendor = Hersteller des Geräts
- activeSource = ist dieses Geräte activeSource (= Eingang wird darauf umgestellt). Lässt sich setzen, dann wird das Gerät activeSource
- menuStatus = das Gerät reportet, dass es sich gerade mit einer Fernbedienung bedienen lassen würde (?), damit experimentiere ich noch (gerne Erfahrungen mitteilen, mit CEC kann man ja z.B. den FireTV mit der FB des TVs bedienen, soweit ich verstanden habe, hat es damit zu tun)
- state = Gerät ist an oder in standby bzw. kann darüber geschaltet werden
Dann gibt es noch das "Global" Device mit den folgenden States:
- active-source = hier kann die activeSource mit einer physischen Adresse gesetzt werden, so kann auch auf Geräte umgeschaltet werden, die selber kein CEC unterstützen (oder es deaktiviert ist). Außerdem wird hier die activeSource, die im Bus gesetzt wird auch reportet
- arc = Audio Return Channel ist (in)aktiv bzw. kann (de)aktiviert werden
- mute = AV-Receiver stumm schalten
- raw-command = Befehl direkt an cec-client senden. Da geht z.B. "scan" oder "standby all" oder auch mit tx davor beliebige CEC-Befehle...
- standbyAll = alle Geräte in Standby schicken (die es unterstützen)
- systemAudio = systemAudio ist (in)aktiv bzw. kann (de)aktiviert werden. Entscheidet ob das "Audiosystem" (= AV-Receiver) sich um Audio & Lautstärke kümmern soll, oder nicht und Geräte Lautstärkeanforderungen entsprechend dorthin schicken sollen
- volume = Status der Lautstärke, 0 = mute.
- volumeUp/Down = leiser/lauter machen
Dazu gibt es noch einen Unterordner "poll" für in dem für die meistens States noch ein Button ist. Wenn man den Button auslöst, wird auf dem CEC Bus ein Befehl zur Abfrage des entsprechenden States gesendet und der Wert, falls erhalten, entsprechend aktualisiert. Leider reagieren nicht alle Gerät zuverlässig auf diese Befehle.
Update 0.0.8:
Unter der Haube hat sich viel getan.Sichtbar neu ist der Support für die cec-Fernbedienung. Dafür gibt es bei jedem Gerät jetzt den state "createButtons" -> das erzeugt einen neuen Unterordner mit Button-States für alle möglichen Knöpfe (das sind einige) und einen State für das Delay (es wird immer ein Drücken und Loslassen gesendet, mit dem Delay lässt sich einstellen, wie viel Zeit zwischen drücken und loslassen verstreichen soll).
Es reagieren nicht alle Geräte auf Knöpfe und auch ganz sicher nicht auf alle. Viel Spaß beim testen.Auch neu ist Support für OSD Nachrichten. Mein TV will das irgendwie alles nicht -> daher kann ich das selber nicht testen...

Viel Spaß beim Testen und ich bin offen für weitere Anregungen.
Interessant fände ich auch, wenn jemand ein Gerät zum Aufnehmen hat oder ein "Tuner" Gerät. Oder ein Gerät, was plötzlich den state "deck" hat (da weiß ich noch gar nicht, wofür der da ist?).Ich überlege auch, ob man in den Geräten noch einen Unterordner für Fernbedienungsbefehle macht. Die kann man über CEC ja auch senden. Braucht man das?
@Garfonso sagte in Test Adapter cec2:
Ich habe probleme den zweiten Befehl:
sudo usermod -a -G video iobroker
abzusetzen. Ich bekomme die Meldung: user 'iobroker' does not exist
Habe versucht den user mitsudo suunduseradd -m iobrokerdiesen zu kreieren, ging aber nicht. Nach dem Enter, bekam ich nur die Auflistung der Befehle.
Hat hier jemand eine Lösung?EDIT: Hab jetzt erst verstanden, dass auf dem Pi am HDMI Netz ein Iobroker Slave installiert werden muss.
-
@Garfonso
Ein "wenig" OT:
ich habe bisher CEC deaktiviert, weil ich alles über Harmony steuere.
Seit diesem Jahr habe ich Disney+, das ich jedoch nicht (wie Netflix) über den BluRay Player streamen kann, sondern nur über den TV.
Damit dann ARC funktioniert, musste ich CEC aktivieren.
seitdem schaltet mir der TV, nachdem über die Harmony die Dreambox, der AV-Receiver und der TV angeschaltet wurde, sofort wieder die Dreambox aus
Würde der Adapter etwas dagegen machen können?
-
@Garfonso
Ein "wenig" OT:
ich habe bisher CEC deaktiviert, weil ich alles über Harmony steuere.
Seit diesem Jahr habe ich Disney+, das ich jedoch nicht (wie Netflix) über den BluRay Player streamen kann, sondern nur über den TV.
Damit dann ARC funktioniert, musste ich CEC aktivieren.
seitdem schaltet mir der TV, nachdem über die Harmony die Dreambox, der AV-Receiver und der TV angeschaltet wurde, sofort wieder die Dreambox aus
Würde der Adapter etwas dagegen machen können?
@homoran
Ja. Der würde die Physische Adresse der Dreambox als "Active Source" ankündigen. Das sollte, bei richtiger Einstellung von TV / AV Receiver dazu führen, dass diese an gehen und die Eingänge entsprechend umstellen.
Das Problem, daher verlangt Logitech ja auch die Deaktivierung von CEC, ist, dass die Befehle der Harmony das dann alles durcheinander bringen. Daher solltest du das erstmal ohne Harmony ausprobieren. Also z.B. mal den Adapter nutzen und da active Source auf die Dreambox stellen (kannst du eine Zahl eingeben, das ist dann die Nummer des Anschluss am TV oder die volle Adresse, also z.B. 1.2.0.0, wenn z.B. AV Receiver an Anschluss 1 am TV und Dreambox an Anschluss 2 am AV Receiver usw.).rant on
Ich hab bei mir die Harmony rausgeschmissen und bin froh nicht jeden kleinen Scheiß mit der scheiß App konfigurieren zu müssen. Mit CEC geht das bei mir gerade alles sehr gut und viel besser als mit der Harmony jemals. Aber ich bin mit der auch nie grün geworden, für das gefummel hatte ich einfach nie die Geduld (und durch das schlechte Desing der App dauert dann ja alles auch nochmal extra ewig).
rant off
-
@homoran
Ja. Der würde die Physische Adresse der Dreambox als "Active Source" ankündigen. Das sollte, bei richtiger Einstellung von TV / AV Receiver dazu führen, dass diese an gehen und die Eingänge entsprechend umstellen.
Das Problem, daher verlangt Logitech ja auch die Deaktivierung von CEC, ist, dass die Befehle der Harmony das dann alles durcheinander bringen. Daher solltest du das erstmal ohne Harmony ausprobieren. Also z.B. mal den Adapter nutzen und da active Source auf die Dreambox stellen (kannst du eine Zahl eingeben, das ist dann die Nummer des Anschluss am TV oder die volle Adresse, also z.B. 1.2.0.0, wenn z.B. AV Receiver an Anschluss 1 am TV und Dreambox an Anschluss 2 am AV Receiver usw.).rant on
Ich hab bei mir die Harmony rausgeschmissen und bin froh nicht jeden kleinen Scheiß mit der scheiß App konfigurieren zu müssen. Mit CEC geht das bei mir gerade alles sehr gut und viel besser als mit der Harmony jemals. Aber ich bin mit der auch nie grün geworden, für das gefummel hatte ich einfach nie die Geduld (und durch das schlechte Desing der App dauert dann ja alles auch nochmal extra ewig).
rant off
Update 0.0.8:
Unter der Haube hat sich viel getan.Sichtbar neu ist der Support für die cec-Fernbedienung. Dafür gibt es bei jedem Gerät jetzt den state "createButtons" -> das erzeugt einen neuen Unterordner mit Button-States für alle möglichen Knöpfe (das sind einige) und einen State für das Delay (es wird immer ein Drücken und Loslassen gesendet, mit dem Delay lässt sich einstellen, wie viel Zeit zwischen drücken und loslassen verstreichen soll).
Es reagieren nicht alle Geräte auf Knöpfe und auch ganz sicher nicht auf alle. Viel Spaß beim testen.Auch neu ist Support für OSD Nachrichten. Mein TV will das irgendwie alles nicht -> daher kann ich das selber nicht testen...

-
Update 0.0.8:
Unter der Haube hat sich viel getan.Sichtbar neu ist der Support für die cec-Fernbedienung. Dafür gibt es bei jedem Gerät jetzt den state "createButtons" -> das erzeugt einen neuen Unterordner mit Button-States für alle möglichen Knöpfe (das sind einige) und einen State für das Delay (es wird immer ein Drücken und Loslassen gesendet, mit dem Delay lässt sich einstellen, wie viel Zeit zwischen drücken und loslassen verstreichen soll).
Es reagieren nicht alle Geräte auf Knöpfe und auch ganz sicher nicht auf alle. Viel Spaß beim testen.Auch neu ist Support für OSD Nachrichten. Mein TV will das irgendwie alles nicht -> daher kann ich das selber nicht testen...

@garfonso Schaut beim ersten Test ganz gut aus, die Buttons gefallen mir sehr gut. Mein Onkyo reagiert auf die meisten davon würde ich sagen. Den Samsung und den PulseEight muss ich noch testen. Zur Implementierung werde ich mir ein paar Gedanken machen müssen, es gibt ja jetzt viele neue Möglichkeiten

Gruß
SuperElmi -
@garfonso Schaut beim ersten Test ganz gut aus, die Buttons gefallen mir sehr gut. Mein Onkyo reagiert auf die meisten davon würde ich sagen. Den Samsung und den PulseEight muss ich noch testen. Zur Implementierung werde ich mir ein paar Gedanken machen müssen, es gibt ja jetzt viele neue Möglichkeiten

Gruß
SuperElmi -
@superelmi
Wenn du da Ideen hast, wie man das noch anders machen kann / soll, gerne
@garfonso Hi. Ich habe ebend auch den Adapter genau nach der Anleitung installiert. Leider wurde der pi nur paar Sekunden an meinem Samsung H Serie Tv als cec Gerät erkannt und seitdem nicht mehr.
Geräte lassen sich per putty scannen aber am Tv steht überall unknown.
Am Tv selbst kann ich auch keine CEC Geräte mehr finden.Hast du vlt eine Lösung ?
Geräte Samsung Tv h Serie und pi4 4gb Version
root@raspberrypi:~# echo 'scan' | cec-client -s -d 1
opening a connection to the CEC adapter...
requesting CEC bus information ...
CEC bus informationdevice #0: TV
address: 0.0.0.0
active source: no
vendor: Unknown
osd string: TV
CEC version: unknown
power status: unknown
language: ???device #1: Recorder 1
address: 3.0.0.0
active source: no
vendor: Pulse Eight
osd string: CECTester
CEC version: 1.4
power status: on
language: eng -
@garfonso Hi. Ich habe ebend auch den Adapter genau nach der Anleitung installiert. Leider wurde der pi nur paar Sekunden an meinem Samsung H Serie Tv als cec Gerät erkannt und seitdem nicht mehr.
Geräte lassen sich per putty scannen aber am Tv steht überall unknown.
Am Tv selbst kann ich auch keine CEC Geräte mehr finden.Hast du vlt eine Lösung ?
Geräte Samsung Tv h Serie und pi4 4gb Version
root@raspberrypi:~# echo 'scan' | cec-client -s -d 1
opening a connection to the CEC adapter...
requesting CEC bus information ...
CEC bus informationdevice #0: TV
address: 0.0.0.0
active source: no
vendor: Unknown
osd string: TV
CEC version: unknown
power status: unknown
language: ???device #1: Recorder 1
address: 3.0.0.0
active source: no
vendor: Pulse Eight
osd string: CECTester
CEC version: 1.4
power status: on
language: eng@theip4nda
ich hab manchmal, dass mein TV sich irgendwie "verschluckt" und dann CEC nicht mehr (richtig) geht... da hilft es nur noch kurz den Strom zu ziehen.Auf der anderen Seite, wenn du den Adapter laufen hast, kümmert der sich um den Scan und alles. Wenn du das dann noch auf der Kommandozeile machst gleichzeitig, wird vermutlich die Schnittstelle verloren gehen. Das sollte keine Probleme am Bus machen, aber ggf. funktioniert der Adapter dann nicht mehr bis zu nem neustart.
Sonst weiß ich auch nicht... nicht alle Geräte implementieren CEC so richtig gut... :woman-shrugging:
Was ist denn dein Anwendungsszenario? -
@theip4nda
ich hab manchmal, dass mein TV sich irgendwie "verschluckt" und dann CEC nicht mehr (richtig) geht... da hilft es nur noch kurz den Strom zu ziehen.Auf der anderen Seite, wenn du den Adapter laufen hast, kümmert der sich um den Scan und alles. Wenn du das dann noch auf der Kommandozeile machst gleichzeitig, wird vermutlich die Schnittstelle verloren gehen. Das sollte keine Probleme am Bus machen, aber ggf. funktioniert der Adapter dann nicht mehr bis zu nem neustart.
Sonst weiß ich auch nicht... nicht alle Geräte implementieren CEC so richtig gut... :woman-shrugging:
Was ist denn dein Anwendungsszenario? -
@theip4nda
an und aus sollte aber gehen unabhängig davon, ob der TV über CEC den ioBroker erkennt.Oder hast du das Gefühl, dass der Adapter die CEC Kommunikation grundsätzlich stört? Was für Geräte steuerst du denn über CEC bzw. sind vorhanden? Legt der Adapter überhaupt Geräte an?
Ein log vom Adapter wäre auch hilfreich.
-
@theip4nda
an und aus sollte aber gehen unabhängig davon, ob der TV über CEC den ioBroker erkennt.Oder hast du das Gefühl, dass der Adapter die CEC Kommunikation grundsätzlich stört? Was für Geräte steuerst du denn über CEC bzw. sind vorhanden? Legt der Adapter überhaupt Geräte an?
Ein log vom Adapter wäre auch hilfreich.
@garfonso ```
cec2.0 2021-06-15 09:53:55.082 info (2553) Device for 0 already created.
cec2.0 2021-06-15 09:53:54.411 info (2553) config type: p
cec2.0 2021-06-15 09:53:54.410 info (2553) config osdName: TESTYO2
cec2.0 2021-06-15 09:53:54.381 info (2553) starting. Version 0.1.0 in /opt/iobroker/node_modules/iobroker.cec2, node: v12.22.1, js-controller: 3.2.16Vorweg, es ist nur der Pi und der Tv per Hdmi angeschlossen. Habe es nun geschafft das er ne verbindung mit meinem H Serie Samsung Tv aufbaut. Die buttons konnte ich ebenfalls alle erstellen aber keiner der Buttons funktioniert leider Die ganzen Poll Buttons gehen dann wird per cec ausgelesen das es nen Samsung TV ist und ich cec 1.4 habe usw... EDIT: Hier noch ein Log wenn ich z.b Volume up drücke..code_text
cec2.0 2021-06-15 10:16:20.932 debug (3256) State state already created in TV
cec2.0 2021-06-15 10:16:20.932 debug (3256) Updating TV.state to true
cec2.0 2021-06-15 10:16:20.914 debug (3256) TV Power is IN_TRANSITION_STANDBY_TO_ON
cec2.0 2021-06-15 10:16:20.913 debug (3256) DEBUG: [ 62078] >> TV (0) -> Playback 1 (4): report power status (90)
cec2.0 2021-06-15 10:16:20.912 debug (3256) Parsing data...
cec2.0 2021-06-15 10:16:20.911 debug (3256) ============================ Processing Event: REPORT_POWER_STATUS: {"type":"TRAFFIC","number":"62078","flow":"IN","source":0,"target":4,"opcode":144,"args":[2],"event":"REPORT_POWER_STATUS","d
cec2.0 2021-06-15 10:16:20.910 debug (3256) TRAFFIC: [ 62078] >> 04:90:02
cec2.0 2021-06-15 10:16:20.756 debug (3256) TRAFFIC: [ 61924] << 40:8f
cec2.0 2021-06-15 10:16:14.250 debug (3256) TRAFFIC: [ 55417] << 40:45:41
cec2.0 2021-06-15 10:16:14.106 debug (3256) TRAFFIC: [ 55274] << 40:44:41
cec2.0 2021-06-15 10:16:14.097 debug (3256) state cec2.0.TV.buttons.VOLUME_UP changed: true (ack = false) -
@garfonso ```
cec2.0 2021-06-15 09:53:55.082 info (2553) Device for 0 already created.
cec2.0 2021-06-15 09:53:54.411 info (2553) config type: p
cec2.0 2021-06-15 09:53:54.410 info (2553) config osdName: TESTYO2
cec2.0 2021-06-15 09:53:54.381 info (2553) starting. Version 0.1.0 in /opt/iobroker/node_modules/iobroker.cec2, node: v12.22.1, js-controller: 3.2.16Vorweg, es ist nur der Pi und der Tv per Hdmi angeschlossen. Habe es nun geschafft das er ne verbindung mit meinem H Serie Samsung Tv aufbaut. Die buttons konnte ich ebenfalls alle erstellen aber keiner der Buttons funktioniert leider Die ganzen Poll Buttons gehen dann wird per cec ausgelesen das es nen Samsung TV ist und ich cec 1.4 habe usw... EDIT: Hier noch ein Log wenn ich z.b Volume up drücke..code_text
cec2.0 2021-06-15 10:16:20.932 debug (3256) State state already created in TV
cec2.0 2021-06-15 10:16:20.932 debug (3256) Updating TV.state to true
cec2.0 2021-06-15 10:16:20.914 debug (3256) TV Power is IN_TRANSITION_STANDBY_TO_ON
cec2.0 2021-06-15 10:16:20.913 debug (3256) DEBUG: [ 62078] >> TV (0) -> Playback 1 (4): report power status (90)
cec2.0 2021-06-15 10:16:20.912 debug (3256) Parsing data...
cec2.0 2021-06-15 10:16:20.911 debug (3256) ============================ Processing Event: REPORT_POWER_STATUS: {"type":"TRAFFIC","number":"62078","flow":"IN","source":0,"target":4,"opcode":144,"args":[2],"event":"REPORT_POWER_STATUS","d
cec2.0 2021-06-15 10:16:20.910 debug (3256) TRAFFIC: [ 62078] >> 04:90:02
cec2.0 2021-06-15 10:16:20.756 debug (3256) TRAFFIC: [ 61924] << 40:8f
cec2.0 2021-06-15 10:16:14.250 debug (3256) TRAFFIC: [ 55417] << 40:45:41
cec2.0 2021-06-15 10:16:14.106 debug (3256) TRAFFIC: [ 55274] << 40:44:41
cec2.0 2021-06-15 10:16:14.097 debug (3256) state cec2.0.TV.buttons.VOLUME_UP changed: true (ack = false) -
@theip4nda
Kannst du mal das Objekt "menuStatus" auf true setzen und mir ein log davon schicken, was dann passiert?Mir is auch grad aufgefallen, Sobald ich eine Taste am der fernbedienung drücke, wird das auch in den Logs direkt angezeigt. Also die Verbidnung steht 1a und es wird auch alles soweit erkannt. Nur halt ich selbst kann vom Broker nix über die Buttons steuern ```
cec2.0 2021-06-23 17:37:10.844 debug (19241) Updating TV.info.active to true cec2.0 2021-06-23 17:37:10.826 debug (19241) DEBUG: [ 47701] >> TV (0) -> Playback 1 (4): feature abort ( 0) cec2.0 2021-06-23 17:37:10.825 debug (19241) DEBUG: [ 47701] marking opcode 'menu request' as unsupported feature for device 'TV' cec2.0 2021-06-23 17:37:10.824 debug (19241) Parsing data... cec2.0 2021-06-23 17:37:10.824 debug (19241) ============================ Processing Event: undefined: {"type":"TRAFFIC","number":"47701","flow":"IN","source":0,"target":4,"opcode":0,"args":[141,0]} cec2.0 2021-06-23 17:37:10.822 debug (19241) TRAFFIC: [ 47701] >> 04:00:8d:00 cec2.0 2021-06-23 17:37:10.620 debug (19241) TRAFFIC: [ 47498] << 40:8d:02 cec2.0 2021-06-23 17:37:10.569 debug (19241) DEBUG: [ 47448] initiator 'TV' is not supported by the CEC adapter cec2.0 2021-06-23 17:37:10.459 debug (19241) TRAFFIC: [ 47338] << 40:8d cec2.0 2021-06-23 17:37:10.424 debug (19241) Sending true for id cec2.0.TV.menuStatus to TV cec2.0 2021-06-23 17:37:10.423 debug (19241) state cec2.0.TV.menuStatus changed: true (ack = false)