Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Entwicklung
    4. IoBroker.cec

    NEWS

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    IoBroker.cec

    This topic has been deleted. Only users with topic management privileges can see it.
    • Garfonso
      Garfonso Developer last edited by

      Hi,

      ich habe ioBroker erst im Laufe der letzten Woche aufgesetzt und bin bisher ganz zufrieden. Da mein TV sehr schlecht mit meinem Logitech Harmony zusammen arbeitet ist es mein Ziel ihn per HDMI CEC fernzusteuern (an/aus/Eingang/Ton an AVR per ARC).

      Ich habe in NPM / GitHub den Adapter ioBroker.cec entdeckt, den ich dafür installiert habe und womit ich erste Erfolge erzielen konnte. Allerdings scheint der Adapter nicht mehr gepflegt zu werden und da steht auch "Early Alpha Release" in der Readme. 🙂 Ich habe bereits einen Fork gemacht und einige Fehler oder kleinere Probleme mit dem Adapter behoben.

      Ich bin, wie gesagt, noch neu bei ioBroker und verstehe vermutlich noch nicht an allen Stellen, wie ioBroker "denkt". Z.B. ist es mir etwas unklar, warum ich über den state "common.active-source" aus ioBroker raus den Adapter dazu bringen kann über CEC die active source zu setzen (im Grunde als Befehl an den TV den Eingang zu wechseln), aber ein "active source" Befehl, den der Adapter über den CEC Bus mitliest wird nicht in diesen state geschrieben (sondern über andere Felder bei den einzelnen Geräten, die aber irgendwie nicht in der Objekt-Liste auftauchen). Warum dafür verschiedene Felder? Das habe ich z.B. auch beim Harmony Adapter nicht ganz verstanden… da gibt es "currentActivity", wo die Aktivität drinnen steht. Ich darf da aber, wenn ich eine andere Aktivität haben will, die nicht einfach reinschreiben, sondern habe für jede Activity einen Switch-state. Warum? Ist das generell so? Oder sind das Spezialitäten von manchen Adaptern (und ich könnte das Verhalten beim cec Adapter ändern)?

      In jedem Fall wäre für mich auch interessant zu wissen, ob ich den Adapter weiter pflegen soll, ob da Bedarf besteht und wenn ja, wie viele Leute den einsetzen und wofür. Es gäbe da noch ein paar größere Änderungen, die man vornehmen sollte. Zum Beispiel werden channel für die Logischen Adressen erzeugt deren states dann mit Daten der Geräte gefüllt werden. Aber die Zuordnung logische Adresse zu Gerät kann sich je nachdem, welche Geräte gerade (nicht) reagieren jeder Zeit ändern (und tut es bei mir auch, z.B. weil ich 4 Geräte für den Typ Playback habe, es aber nur 3 Adressen gibt -> hier ist vorgesehen, dass die Geräte sich "streiten" und die, die als erstes "an" sind sich halt die ersten Adressen krallen und das 4. auf die unspezifische Adresse ausweichen muss). Daher würde ich eher für die Geräte Channels erzeugen mit ihrer physischen Adresse. Die ändert sich nur, wenn die Verkabelung geändert wird. Da könnte man dann auch zu den Geräten die aktuelle logische Adresse dazu schreiben (wenn sie eine haben / die bekannt ist) und hätte so auch die Zuordnung im ioBroker mit drinnen. Im Moment würde ich jedenfalls davon abraten beim cec Adapter einen State von einem einzelnen "Gerät" irgendwo zu verwenden (außer vielleicht TV, der immer 0 ist und AV Receiver, der fast immer 5 ist).

      Egal. Langer Rede, kurzer Sinn: ich würde mich bereit erklären, noch etwas Zeit in den ioBroker.cec Adapter zu stecken, würde aber gerne abchecken, wie weit ich mit Veränderungen gehen darf.

      Das Dokument "Guide for Adapter development" ( https://github.com/ioBroker/ioBroker/wi ... t-practice ) arbeite ich gerade noch durch. Vielleicht klären sich da für mich ja noch ein paar Fragen. Oder es tauchen neue auf... flöt.

      Wer neugierig ist, kann sich meinen Fork schon einmal hier angucken: https://github.com/Garfonso/ioBroker.cec - ich habe die Commits relativ ausführlich kommentiert. Einen Pull-Request werde ich machen, wenn ich das ganze noch etwas getestet habe (läuft aber schon besser als das original flöt).

      Viele Grüße,

      Garfonso

      PS: Zu meinem Hintergrund vielleicht noch: Ich habe selber Informatik studiert und vor einiger Zeit viele Background Services für WebOS und später LuneOS geschrieben. Das war auch node.js. Daher habe ich da einige Erfahrung und mochte das damals sehr und verwende node.js auch heute für alle meine privaten Skripte. 🙂 Beruflich bin ich allerdings leider nicht mehr im IT Bereich tätig.

      1 Reply Last reply Reply Quote 1
      • Bluefox
        Bluefox last edited by

        Sehr gute Idee.

        Noch ein paar Anmerkungen.

        • Kannst du Issues für deine Repo auf github aktivieren?

        • Wir müssen hoch wahrscheinlich adapter umbenennen (hdmi-cec) weil Entwickler nicht mehr aktiv ist und wir keine Rechte für npm haben.

        • Adapter ist nur für Linux? Dann entsprechend package.json anpassen: https://github.com/simatec/ioBroker.bac … e.json#L32

        1 Reply Last reply Reply Quote 0
        • apollon77
          apollon77 last edited by

          Hi Garfonso,

          willkommen bei den Entwicklern. Hier im Forum einfach alle Fragen stellen und wir helfen mit bestem Wissen und gewissen.

          Ja soef ist irgendwie abgetaucht und hat einige gute Ansätze dagelassen. PR kannst du formal machen, aber wie Bluefox schon geschrieben hat am besten umbenennen und dann machen wr damit sauber weiter.

          @Garfonso:

          Ich bin, wie gesagt, noch neu bei ioBroker und verstehe vermutlich noch nicht an allen Stellen, wie ioBroker "denkt". Z.B. ist es mir etwas unklar, warum ich über den state "common.active-source" aus ioBroker raus den Adapter dazu bringen kann über CEC die active source zu setzen (im Grunde als Befehl an den TV den Eingang zu wechseln), aber ein "active source" Befehl, den der Adapter über den CEC Bus mitliest wird nicht in diesen state geschrieben (sondern über andere Felder bei den einzelnen Geräten, die aber irgendwie nicht in der Objekt-Liste auftauchen). Warum dafür verschiedene Felder? Das habe ich z.B. auch beim Harmony Adapter nicht ganz verstanden… da gibt es "currentActivity", wo die Aktivität drinnen steht. Ich darf da aber, wenn ich eine andere Aktivität haben will, die nicht einfach reinschreiben, sondern habe für jede Activity einen Switch-state. Warum? Ist das generell so? Oder sind das Spezialitäten von manchen Adaptern (und ich könnte das Verhalten beim cec Adapter ändern)? `

          Im ersten Schritt steht es dem Adapter-Entwickler frei das so zu machen wir es am sinnvollsten für die user ist und am verständlichsten 🙂

          Also ändere es wenn es keinen Sinn ergibt.

          Dann brauchst DU aber das "ack"-Konzept, aber die Doku hat das dazu. Wenn es noch Fragen gibt einfach Fragen.

          Ingo

          1 Reply Last reply Reply Quote 0
          • Garfonso
            Garfonso Developer last edited by

            Hi,

            ok, dann weiß ich bescheid. Dann mach ich mir mal Gedanken dazu. 🙂

            > Kannst du Issues für deine Repo auf github aktivieren?
            Klar. Erledigt.

            > Wir müssen hoch wahrscheinlich adapter umbenennen (hdmi-cec) weil Entwickler nicht mehr aktiv ist und wir keine Rechte für npm haben.
            Reicht das in der package.json? Oder sollte ich auch den Namen vom Repository ändern?

            > Adapter ist nur für Linux?
            Öhm.. ich das nur auf einem Raspberry Pi testen. Im Hintergrund wird das Programm cec-client gestartet und mit dem Kommuniziert über stdout/stdin. Das gibt es wohl auch für Windows… wenn mal jemand mit einem USB Pulse-eight HDMI CEC Adapter auftaucht, könnte man das testen. Aber üblich ist CEC im Moment nur für den Raspberry. 🙂 Ich werd das mal vorsichtshalber rein machen.

            Wenn der original Entwickler nicht mehr da ist, überlege ich, ob ich nicht die Konzepte, die ich gut finde übernehme und von scratch neu anfange. Mal gucken, ob ich dafür Zeit finde.

            1 Reply Last reply Reply Quote 0
            • apollon77
              apollon77 last edited by

              @Garfonso:

              > Wir müssen hoch wahrscheinlich adapter umbenennen (hdmi-cec) weil Entwickler nicht mehr aktiv ist und wir keine Rechte für npm haben.
              Reicht das in der package.json? Oder sollte ich auch den Namen vom Repository ändern? `

              Ja, Repo umbenennen, package.json UND io-package.json und falls die haupt adapter-js-datei nicht main.js heisst das auch so umbenennen wie adapter (oder am einfachsten in main.js) und das auch in package.json unter main

              > Adapter ist nur für Linux?
              Wenn der original Entwickler nicht mehr da ist, überlege ich, ob ich nicht die Konzepte, die ich gut finde übernehme und von scratch neu anfange. Mal gucken, ob ich dafür Zeit finde.

              Mach das!! Vor allem die "soef" Library … wirf Sie raus. zuviel Magie. Habe ich gerade beim Alexa Adapter gemacht ... wenn du fragen hast sag Bescheid

              Ingo

              1 Reply Last reply Reply Quote 0
              • M
                MaxMan23 last edited by

                Hallo,

                wie kann ich denn deinen Adapter installieren? Irgendwie klappt das nicht bei mir 🙂

                1 Reply Last reply Reply Quote 0
                • Garfonso
                  Garfonso Developer last edited by

                  Hi,

                  ich hatte, wegen Umzug usw. noch nicht so viel Zeit gefunden an dem Adapter weiter zu arbeiten und cec2 ist leider noch gar nicht wirklich angefangen. (Habe ich aber weiter vor und bin im Moment dabei mir etwas Zeit dafür freizuschaufeln).

                  Aber meine Verbesserungen am alten cec Adapter müsstest du bekommen können, wenn du im Admin bei Adapter auf den Knopf "Installieren aus eigener URL" klickst und dann da auf den Tab "beliebig" und dann die URL https://github.com/Garfonso/ioBroker.cec angibst.

                  Viele Grüße,

                  Garfonso

                  1 Reply Last reply Reply Quote 0
                  • T
                    thiel_marvin last edited by

                    Gibt es hier nach all der langen Zeit etwas neues?

                    Garfonso 1 Reply Last reply Reply Quote 0
                    • Garfonso
                      Garfonso Developer @thiel_marvin last edited by

                      @thiel_marvin
                      Ui, es gibt interessenten. 😉

                      Ich bin dran einen cec2 Adapter frisch zu machen. Komme aber da nur langsam weiter aktuell.

                      1 Reply Last reply Reply Quote 1
                      • S
                        SuperElmi last edited by

                        @Garfonso
                        Ich wäre auch interessiert!
                        Mein Use Case ist das An- und Umschalten eines Samsung TV. Ich hab etwas Erfahrung mit VDR und dem Pulseight Adapter. Falls ich etwas beitragen kann, gerne.

                        Gruß
                        Elmar

                        Garfonso 1 Reply Last reply Reply Quote 0
                        • Garfonso
                          Garfonso Developer @SuperElmi last edited by

                          @SuperElmi
                          Das sollte locker drin sein. Mal sehen, wann ich da weiter komme. Ich erarbeite mir gerade ein wenig Struktur, die ich dann fülle. Das braucht leider etwas Zeit.

                          1 Reply Last reply Reply Quote 0
                          • Garfonso
                            Garfonso Developer last edited by Garfonso

                            @thiel_marvin
                            @SuperElmi

                            Es hat etwas gedauert, wenn ihr testen wollt, aus folgender URL installieren: https://github.com/iobroker-community-adapters/ioBroker.cec2

                            Hier auch noch der Test-Thread dazu:
                            https://forum.iobroker.net/topic/29491/test-adapter-cec2

                            1 Reply Last reply Reply Quote 0
                            • S
                              SuperElmi last edited by

                              Hallo Garfonso,

                              ich habe heute auf den js-controller 3.1.4 aktualisiert, seitdem startet der CEC-Adapter permanent neu. Knnst du bitte mal danach schauen? Danke dir!

                              cec2.1	2020-05-20 20:21:10.869	warn	(2478) No state definition for state
                              cec2.1	2020-05-20 20:21:10.500	info	(2478) Terminated (NO_ERROR): Without reason
                              cec2.1	2020-05-20 20:21:10.498	info	(2478) terminating
                              cec2.1	2020-05-20 20:21:10.446	warn	(2478) Already had device with name TV copy new stuff in old device.
                              cec2.1	2020-05-20 20:21:10.432	error	(2478) Error: undefined is not a valid state value at /opt/iobroker/node_modules/iobroker.js-controller/lib/tools.js:1588:72 at CEC2.setStateChanged (/opt/iobroker/node_modules/iobroker.js-con
                              cec2.1	2020-05-20 20:21:10.419	error	(2478) unhandled promise rejection: undefined is not a valid state value
                              cec2.1	2020-05-20 20:21:10.417	error	Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch().
                              cec2.1	2020-05-20 20:21:10.382	info	(2478) Device with logicalAddress 0 seen. Has name TV
                              cec2.1	2020-05-20 20:21:07.944	info	(2478) config type: r
                              cec2.1	2020-05-20 20:21:07.942	info	(2478) config osdName: ioBroker
                              cec2.1	2020-05-20 20:21:07.898	info	(2478) starting. Version 0.0.2 in /opt/iobroker/node_modules/iobroker.cec2, node: v10.19.0, js-controller: 3.1.4
                              cec2.1	2020-05-20 20:20:34.603	warn	(2455) No state definition for state
                              cec2.1	2020-05-20 20:20:34.246	info	(2455) Terminated (NO_ERROR): Without reason
                              cec2.1	2020-05-20 20:20:34.243	info	(2455) terminating
                              cec2.1	2020-05-20 20:20:34.233	warn	(2455) Already had device with name TV copy new stuff in old device.
                              cec2.1	2020-05-20 20:20:34.219	error	(2455) Error: undefined is not a valid state value at /opt/iobroker/node_modules/iobroker.js-controller/lib/tools.js:1588:72 at CEC2.setStateChanged (/opt/iobroker/node_modules/iobroker.js-con
                              cec2.1	2020-05-20 20:20:34.206	error	(2455) unhandled promise rejection: undefined is not a valid state value
                              cec2.1	2020-05-20 20:20:34.204	error	Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch().
                              cec2.1	2020-05-20 20:20:34.167	info	(2455) Device with logicalAddress 0 seen. Has name TV
                              
                              Garfonso 1 Reply Last reply Reply Quote 0
                              • Garfonso
                                Garfonso Developer @SuperElmi last edited by

                                TL;DR: Versuch mal die 0.0.3 zu installieren und guck, ob es damit einfach weg ist. Für 'state' sollte kein State gesetzt werden... hm... vielleicht auch mal alle Objekte löschen und neu erzeugen lassen (also Adapter neustarten).

                                @SuperElmi
                                Hi,

                                hm... warum ist da ein state undefined? grübel
                                -> ist kein Problem mit 3.1.4, würde ich vermuten. Das sollte auch vorher schon einen Fehler gegeben haben.

                                Irgendwie finde ich auch die Ausgaben gerade nicht im Code... hm... ich glaube deine Version ist schon etwas älter. (Ich war etwas unsauber mit Versionsnummern, bin halt noch mitten in der Entwicklung -> wird aber jetzt besser, nutzte jetzt das Skript 🙂 was sich automatisiert darum kümmert die Versionsnummern zu erhöhen, danke @AlCalzone ).

                                S 1 Reply Last reply Reply Quote 0
                                • S
                                  SuperElmi @Garfonso last edited by

                                  @Garfonso
                                  Danke für den Hinweis auf die neue Version, schaut besser aus:

                                  cec2.1	2020-05-21 15:26:23.055	info	(5254) Creation of device TX-NR626__ finished.
                                  cec2.1	2020-05-21 15:26:22.437	warn	(5254) No state definition for ignored
                                  cec2.1	2020-05-21 15:26:22.434	info	(5254) Already knew device TX-NR626__. Update values.
                                  cec2.1	2020-05-21 15:26:22.306	info	(5254) Device with logicalAddress 5 seen. Has name TX-NR626__
                                  cec2.1	2020-05-21 15:26:15.768	info	(5254) Device for 5 already created.
                                  cec2.1	2020-05-21 15:26:13.191	info	(5254) Device for 5 already created.
                                  cec2.1	2020-05-21 15:26:12.299	info	(5254) No name for logicalAddress 5, requesting it.
                                  cec2.1	2020-05-21 15:26:02.398	error	(5254) Setting activeSource to 0.0.0.0
                                  cec2.1	2020-05-21 15:25:58.378	info	(5254) Device for 0 already created.
                                  cec2.1	2020-05-21 15:25:57.377	info	(5254) config type: r
                                  cec2.1	2020-05-21 15:25:57.376	info	(5254) config osdName: ioBroker
                                  cec2.1	2020-05-21 15:25:57.327	info	(5254) starting. Version 0.0.3 in /opt/iobroker/node_modules/iobroker.cec2, node: v10.19.0, js-controller: 3.1.4
                                  

                                  Gruß
                                  SuperElmi

                                  1 Reply Last reply Reply Quote 1
                                  • Garfonso
                                    Garfonso Developer last edited by

                                    Danke für die Rückmeldung. Sieht gut aus. Direkt noch eine Kleinigkeit gefixt (die "Error" Ausgabe da ist Quatsch und ist eher debug oder kann ganz weg).

                                    Ich hoffe, ich finde bald Zeit mal weiter zu machen. 🙂

                                    R 1 Reply Last reply Reply Quote 0
                                    • R
                                      RkcCorian @Garfonso last edited by

                                      @garfonso
                                      Hallo Zusammen,

                                      ich habe folgendes Setup:
                                      A) LG Smart TV CEC fähig
                                      B) Hue Sync Box CEC fähig
                                      C) Fire TV Cube CEC fähig
                                      D) Xbox One X, bislang nicht CEC fähig, ließe sich aber durch Tausch auf Xbox Series X ändern 🙂

                                      Nun möchte ich gezielt die Kombination A+B+C ein-/ausschalten, bzw. A+B+D. Das ist nicht ganz so trivial bislang. Die Kombination A+B+C klappt mehr oder weniger mit ein paar Tricks in ioBroker, sobald D dazu kommt wird es schwierig, da sich die Geräte gegenseitig beeinflussen. Nun bin ich auf diesen Adapter aufmerksam geworden.

                                      Meine Fragen:

                                      1. Hilft dieser Adapter bei meinem Problem?
                                      2. Falls ja: Wie greift dieser Adapter auf HDMI-CEC zu? Über ein drittes Gerät, welches dazwischen geschaltet wird?

                                      Vielen Dank im Voraus und einen guten Start in die neue Woche! 🙂

                                      Garfonso 1 Reply Last reply Reply Quote 0
                                      • Garfonso
                                        Garfonso Developer @RkcCorian last edited by Garfonso

                                        @markus-2

                                        Zu 2.: Der Zugriff auf HDMI-CEC ist bisher nur getestet mit einem raspberry Pi der per HDMI Kabel mit HDMI-Setup verbunden ist. Theoretisch gehen auch andere Adapter, die von libpulseeight bzw. cec-client unterstützt werden, siehe hier (als Startpunkt): https://github.com/Pulse-Eight/libcec
                                        Aber es muss grundsätzlich ein Gerät mit dem HDMI-Setup verbunden sein. Wenn auf der Konsole (ggf. nach installation) der cec-client funktioniert, sollte der Adapter auch funktionieren (oder funktionierend gemacht werden können).

                                        Zu 1:
                                        Wenn die XBox gar kein CEC kann, dann kommst du mit CEC nur zu dem Punkt, dass A+B an sind und auf die richtigen Eingänge geschaltet sind (für A+B+C geht alles an + richtige Eingänge). Wenn du die XBox dann irgendwie anders anbekommst, wärst du ja dann da.

                                        Das "gegenseitig beeinflussen", was du siehst, wird vermutlich auch mit CEC zusammen hängen. Grundsätzlich melden sich Geräte, die angehen im CEC-Bus und fragen auch ob was läuft und wenn nicht, melden sie sich als aktive Quelle und alle schalten die Eingänge entsprechend (macht z.B. das FireTV, wenn man es anschaltet). Das würde der Adapter auch beheben, weil der dann anstelle der XBox sagen würde, dass die gerade aktive Quelle ist (was dazu führt, dass TV und ggf. Sync Box die Eingänge entsprechend schalten und andere Geräte wissen, dass was läuft und nicht dazwischen funken -> den letzten Punkt müsste man nochmal testen, klappt aber auch mit "echten" Geräten nicht immer).

                                        //Edit: Die ganzen Ausführungen natürlich unter dem Vorbehalt, dass sich die Geräte auch alle CEC-konform Verhalten, was wohl nicht immer 100%ig so ist. Aber ich habe da bisher ganz gute Erfahrungen gemacht.

                                        R 1 Reply Last reply Reply Quote 0
                                        • R
                                          RkcCorian @Garfonso last edited by

                                          @garfonso
                                          Vielen Dank! Mein ioBroker läuft auf einem Docker auf meiner NAS und die steht weit weg von meinem Fernseher. D.h. ich sehe folgende Möglichkeiten:
                                          A) Direkt vor Ort ein Gerät unterbringen welches auf den HDMI-Bus Zugriff hat (bspw. so wie Du beschreibst
                                          B) Wenn die Xbox CEC kann (durch vermutlich Tausch auf die Xbox Serie X) sollte es ebenfalls, ohne die Notwendigkeit von A) gehen, da dann die Xbox beim Einschalten sagt, "ich bin die aktive Quelle" und der Fire TV Cube sollte dann (korrektes Verhalten vorausgesetzt) nicht auch noch mit angehen

                                          Ist das korrekt? Vielen Dank im Voraus!!

                                          Garfonso 1 Reply Last reply Reply Quote 0
                                          • Garfonso
                                            Garfonso Developer @RkcCorian last edited by

                                            @markus-2
                                            Ja.
                                            zu a) hab ich hier ein iobroker-slave auf einem raspberry am TV
                                            zu b) genau, wenn die XBox CEC kann, könnte sie sagen, sie geht an und TV usw. geht mit an und stellt sich ein. Hier geht das ganz ok mit FireTV <-> Blu-Ray Player (hier würde der cec Adapter dann ggf. den Vorteil bringen die Geräte von extern, z.B. Alexa, schalten zu können bzw. den Zustand überwachen zu können, also Vis zeigt an, dass XBox gespielt wird oder irgendwas anderes schaltet entsprechend noch 🙂 Aber das ist natürlich ein Stück weit Spielerei).

                                            R 1 Reply Last reply Reply Quote 0
                                            • First post
                                              Last post

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            723
                                            Online

                                            31.7k
                                            Users

                                            79.6k
                                            Topics

                                            1.3m
                                            Posts

                                            8
                                            23
                                            2727
                                            Loading More Posts
                                            • Oldest to Newest
                                            • Newest to Oldest
                                            • Most Votes
                                            Reply
                                            • Reply as topic
                                            Log in to reply
                                            Community
                                            Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                                            The ioBroker Community 2014-2023
                                            logo