NEWS
Test Adapter cec2
-
@boriswerner Das mit den 90% kenne ich bei meinem Onkyo und Samsung TV auch...
Du kannst mit diesem Adapter den Zustand jedes am HDMI-CEC-Bus angeschlossenen Gerätes auslesen und entsprechend als Datenpunkt verwenden, Laustärke regeln, etc.Zum Level 2: IOBroker unterstützt das Master-Slave Prinzip. Ich hab auch einen RPI4 als Master und einen RPI3 mit HDMI-Kabel am Onkyo Receiver hängen, um genau das zu machen. Die Administration erfolgt ausschließlich in der Web-Oberfläche am Master.
Gruß
-
@SuperElmi cool. Danke für die Info.
Ich hab gestern direkt mit dem cec-client getestet und bin verzweifelt... Das Verhalten der Geräte hinterlässt bei mir nur Fragezeichen.
Ich werde dann aber Mal schauen, wie ich auf dem RetroPi am TV einem Slave installiert bekomme oder bringe den master einfach Mal runter zum Test. -
Hab jetzt mal den RPi4 direkt angeschlossen. Er hat alles erkannt (AVR, FireTV-Stick, TV; die XBox wird auch bei mir nicht angezeigt, steht aber ja schon oben, dass die kein CEC kann), zeigt allerdings beim Einschalten von TV oder AVR:
cec2.0 2020-03-27 14:17:02.079 error (1341) No device for name TV created. cec2.0 2020-03-27 14:10:52.436 error (1341) No device for name AV_Receiver created.
Ich weiß, nicht ob das etwas ausmacht.
Ich konnte auch über den raw_command den AVR einschalten, allerdings hat er seine Source dann auf den Kanal des RPi gestellt. Das soll dann eigentlich der TV werden (der ist über den HDMI-Out am HDMI2 (mit ARC) an den TV angeschlossen). Da muss ich noch testen.@Xyolyp die Buttons für Mute und Volume funktionieren übrigens per Definition des CEC Protokolls wohl nur wenn ein AVR im System ist (die gehen immer an Device 5, daher der Timeout, der bei dir "from 5" angezeigt wird).
Ich berichte weiter, muss nur weiter schauen, wie/ob das mit der active source funktioniert. Wollte nur schonmal einen Zwischenstand dalassen.
-
Hi,
also, was du vorhast sollte so gehen. Ich habe hier auch Probleme mit meinem AVR, die ich mit dem Adapter gelöst habe.
Zur Fehlermeldung:
Du hast aber devices (also "Ordner") für die Geräte im ioBroker unter Objekte? Darin sollte auch ein "state" Objekt sein, mit dem du an/aus schalten kannst. Und mit dem Objekt "activeSource" kannst du die Eingänge auf das Gerät umstellen (als "Boolean" im Gerät selber oder in Global, dann als physikalische Adresse).Zum Ton:
Bei mir ist das Problem, dass mein AVR zwar mit dem TV angeht, aber kein Ton liefert, weil er meint Audio würde über HDMI gerade nicht gebraucht... keine Ahnung, was da genau schiefläuft oder ob es auch mit dem FireTV zusammenhängt oder was (lustigerweise macht er auch keinen Ton, wenn er selber Audio streamt)... da hilft dann in Global "systemAudio" anschalten. Mein AVR schickt den status dazu allerdings nicht aktiv rum (keine Ahnung, ob das andere anders machen), daher gibt es für alle States noch im Unterordner "poll" einen Switch, mit dem man den Status aktiv abfragen lassen kann (der Adapter schickt dann einen Request in CEC und es sollte dann eine Antwort kommen -> der State aktualisiert sich dann in ioBroker, wenn es geklappt hat).Also hab ich hier ein Skript, was, wenn der TV angeht (also TV.state -> true) den systemAudio Status pollt nach kurzer Zeit ( -> Global.poll.systemAudio = true) und falls der auf "false" bleibt (was er nicht immer tut), den dann auf true setzt.
Zu SSH noch kurz:
Man könnte vermutlich den fork verändern und noch SSH drum herum legen... aber dabei handelt man sich natürlich noch Probleme ein, wenn was mit dem Netzwerk passiert, auf die der Adapter nicht vorbereitet ist... daher ist die Lösung mit ioBroker Slave vorzuziehen. Für schwache Geräte müsste der cec2 Adapter auch im compact Mode laufen können.Vielen Dank fürs testen.
VIele Grüße,
Garfonso -
@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 su
unduseradd -m iobroker
diesen 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 ausWü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 -
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 -
@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 -
@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...
Was ist denn dein Anwendungsszenario? -
@garfonso Ich will meinen Tv damit an und auschhalten können weil es für die H Serie in meinem baujahr keinen adapter gibt.
Und per Infarot will ich nicht, da ich mir dann noch ein zusätzliches Gerät hier hinstellen müsste -
@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) -
@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)