NEWS
IoBroker.cec
-
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
-
-
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.
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
-
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.
-
> 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
-
Hallo,
wie kann ich denn deinen Adapter installieren? Irgendwie klappt das nicht bei mir
-
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
-
Gibt es hier nach all der langen Zeit etwas neues?
-
@thiel_marvin
Ui, es gibt interessenten.Ich bin dran einen cec2 Adapter frisch zu machen. Komme aber da nur langsam weiter aktuell.
-
@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 -
@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. -
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 -
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
-
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 ).
-
@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 -
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.
-
@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 ändernNun 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:
- Hilft dieser Adapter bei meinem Problem?
- 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!
-
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.
-
@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 angehenIst das korrekt? Vielen Dank im Voraus!!
-
@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). -
@garfonso
Super, dann habe ich jetzt ein Bild, vielen Dank!
Langfristig: Neue Xbox (Series X)
Kurzfristig: Ich nutze den LG Adapter, curl (GET und PUT) Befehle für die Hue Sync Box, adb für den Fire TV Cube und den Xbox Adapter für die Xbox One X (kann kein CEC). Das habe ich seit gestern so am Laufen
Kurzfristig (Alternative falls es nicht zuverlässig läuft): Deine Lösung. Die klingt ebenfalls vielversprechend, allerdings habe ich meine jetzige Lösung "fast fertig" (ein paar Zeilen muss ich noch schreiben, inzw. konnte ich mit TestScripts aber alle notwendigen Ansteuerungen umsetzenVielen lieben Dank für den Austausch und die mögliche Backup-Lösung!!!! Vor einer Woche habe ich noch gar keine Lösung gesehen.