NEWS
Test Adapter cec2
-
@Garfonso sagte in Test Adapter cec2:
Also nur buttons? Oder auch die anderen States? (also z.B. an/aus).
Es wirkt auf mich so als würde abgesehen vom Scan nichts so funktionieren wie es eigentlich sollte. Ich weiß nicht ob das Ursprungsproblem nicht vielleicht mein Aufbau ist, da ich den Raspi nicht direkt an einen Input vom Fernseher, sondern durch die Xbox am Fernseher angeschlossen habe. Leider habe ich keine Möglichkeit den Raspberry direkt am Fernseher anzuschließen.
-
@Xyolyp
Also an dem Port kann es eigentlich nicht liegen. Wenn CEC durchkommt, dann kommt es durch. Ich vermute, außer deinem TV "spricht" bei dir einfach keiner richtig CEC. Beim Chromecast kann ich mir gut vorstellen, dass der Support für CEC eher rudimentär ist und eher in die Richtung geht, dass der dafür sorgen kann, dass der TV auf ihn umschaltet und ggf. noch Ton gesteuert werden kann. Zumindest bei den FireTV sticks ist das so...
Die XBox scheint kein CEC zu unterstützen, hab ich mal gegoogelt, da lässt sich also nichts machen. Beim Sat-Receiver könntest du mal in den Menüs gucken, ob es da was gibt oder selber googeln (leider haben die Hersteller immer eigene Namen und verweisen selten selber auf CEC).Kannst du denn mit active-source den HDMI Eingang vom TV umstellen? (Es müsste gehen 1 oder 1.0.0.0 für Port 1 usw., X = X.0.0.0 ist eine Vereinfachung, die ich für den Fall am TV umzuschalten eingebaut hab). Oder TV an/aus?
Gehen mit der Version die Buttons? Ansonsten würde mir ein log davon auch weiterhelfen. Der Fehler ist jedenfalls ein Bug im Code, selbst wenn da vorher was "falsches" von außen kommt, muss der Code damit ja klar kommen.
Achja, die Fehler beim starten nicht überinterpretieren. Die hab ich jetzt auch rausgenommen. Das heißt nur, dass da halt keine geantwortet hat. Also die Timeouts sind immer unproblematisch.
-
Hallo Garfonso,
ich hab den Adapter installiert und scheint so weit alles gut zu funktionieren. Ich habe den Raspi an meinen Onkyo angeschlossen und kann damit den Samsung TV ein- und ausschalten, muten, usw.
Wie kann ich z.B. Fernbedienungsbefehle an den TV senden?Grüße
-
Hi,
das freut mich zu hören.
Fernbedienungsbefehle hab ich bisher noch nicht umgesetzt. Besteht da Bedarf? Dann guck ich mal. Meine erste Idee wäre in einem eigenen Unterordner am Device für die Befehle die CEC so unterstützt jeweils Knöpfe zu machen. Oder wäre ein sendTo für Skripte besser? (Hab ich Adapterseitig noch nie gemacht, müsste ich mir angucken). Es gibt glaube ich leider keinen einfachen Weg rauszufinden, welche Befehle ein Gerät unterstützt oder nicht.Es wird in CEC ein Button_Press und ein Button_Release gesendet. Da müsste ich überlegen, wie man das am besten umsetzt, wie lange ein Knopf gedrückt sein sollte... oder soll ich einen Knopf für release machen? grübel
Wenn du das nutzen willst, vielleicht hast du ja Ideen dazu.
Viele Grüße,
Garfonso -
Hi zusammen, ich frag das Mal hier, bitte Bescheid sagen, wenn ich das woanders machen soll.
Ich hab einen recht eigenwilligen AV Receiver (Samsung HW C700).
Der ist per CEC mit meinem Panasonic Fernseher verbunden und wenn der Receiver an ist, lässt sich die Lautstärke über die Fernbedienung des Receivers steuern und der Receiver geht mit dem TV zusammen aus. Leider aber nicht mit ihm zusammen an. Zumindest meistens nicht.
Ich habe einen workaround getestet über den Panasonic TV Adapter, indem ich nach dem erkennen des Einschaltens auf den HDMI Eingang des TV schalte, am dem der Receiver hängt. Das funktioniert in 90 Prozent der Fälle, außer meine Frau ist alleine Zuhause. Dann schaltet der Receiver doch manchmal mit dem TV ein, dann schaltet der Receiver manchmal auf einen anderen Eingangskanal, manchmal auf Mute, sodass er sich aber auch nicht mit der TV Fernbedienung wieder laut stellen lässt.Länge Rede kurzer Sinn, ich würde gerne bei erkennen des Einschaltens meines Fernsehers dem AV Receiver per CEC sagen, er solle angehen, auf den TV als Quelle stellen und die Lautstärke auf einen bestimmten Wert stellen. Kann ich das hiermit? Dann würde ich ihn die Tage auch installieren und ausgiebig testen.
Level 2 wäre dann noch:
Ich habe den iobroker zwar auf einem RPi4 aber würde den ungern am TV unterbringen. Da hab ich schon einen RetroPi. Könnte man den Adapter so einstellen/umbauen das ganze auf einem anderen RPi zu machen (SSH?) Kenne den cec-client noch nicht.Ich hab mittlerweile auch ein bisschen Erfahrung gesammelt in der Adapterentwicklung und könnte ggf auch unterstützen.
Gruß, Boris
-
@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)