Seite 1 von 3
Handling von Nicht-Hue-RGB-Leuchtmitteln
Verfasst: 9. Jul 2023 11:44
von HABuserJM
Ich doktere schon seit einer ganzen Weile mit der Möglichkeit herum, eine Nicht-Hue Lampe unter Openhab anzusprechen. Ich rede dabei von den vielen Zigbee-Devices, welche dann über irgendein Gateway, wie z.B. Zigbee2MQTT angesprochen werden können. Leider beissen sich hier die unterschiedlichen Farbmodelle gegenseitig und ohne Farbmodellkonvertierung studiert zu haben, komme ich leider nicht weiter. Hier finde ich, geht Openhab nicht mit der Zeit, weil diese Devices gerade aus China leicht zu bekommen ist.
Ohne auf die unterschiedlichen Zugriffssyntaxes einzugehen, bekomme ich es aber noch nicht einmal hin, ein Color-Item zu erstellen, bei dem ich z.B. eine Farbe auswählen kann, von der Weiterverarbeitung mal zu schweigen.
Das zweite Problem ist, wie ich dann diese Farbinformation in einen MQTT-Payload konvertiere, welchen dann die Lampe auch versteht, bzw. das Zigbee-Gateway. Ich habe z.B. eine E27-Lampe von Nous und eine LED-Stripe-Controller, welcher von Zigbee2MQTT als Lampe erkannt wird. Beide bieten unterschiedliche Kontrollmöglichkeiten, wie die folgenden Bilder zeigen :
Nous-Lampe
nous_rgb.png
LED-Stripe
rgb_stripe.png
Sollte es hier einen Ansatz für eine Lösung geben, wäre mir un bestimmt vielen Anderen sehr geholfen.
Re: Handling von Nicht-Hue-RGB-Leuchtmitteln
Verfasst: 9. Jul 2023 21:09
von udo1toni
Also, das interne Farbmodell von openHAB ist HSB. Wenn eine Leuchte mit RGB angesteuert werden will, kann openHAB das genauso zur Verfügung stellen wie das xy-Modell. Guggst Du hier:
https://www.openhab.org/addons/bindings ... type-color 
Die größte Herausforderung besteht darin, die korrekte Steuerung zu finden. Leider verraten die gezeigten Bildausschnitte lediglich ankommende Topics, verraten aber nichts über eine zu sendende Payload.
Hier wäre es wichtig, den genauen Typ der Hardware zu kennen, um bei Zigbee2mqtt nachschauen zu können, wie genau gesteuert wird. Z.B.
https://www.zigbee2mqtt.io/devices/GL-B-001Z.html fordert für die Farbe ein josn Objekt der Form
wobei laut Doku des mqtt Bindings (oben) ein Parameter
funktionieren sollte. Notfalls könnte man die Lampe oben aber immer noch über RGB ansteuern.
Nur zur Erinnerung: so gut wie alle am Markt erhältlichen Leuchten arbeiten intern mit den drei Grundfarben Rot, Grün und Blau. Das Farbmodell ist halt nicht sehr intuitiv - ganz im Gegensatz zu HSB, wo die Vollfarbe, die Sättigung und die Helligkeit angegeben wird. Die Sättigung kann man auch als umgekehrten Weißanteil betrachten, das lässt sich also recht einfach verstehen, und die Helligkeit kennt jeder vom Dimmer.
Das xyy-Modell hingegen ist dieser Farbraum, den kein Display vollständig abdecken kann. Und das soll dann für die Beleuchtung sinnvoller sein, als die anderen beiden Modelle...
Re: Handling von Nicht-Hue-RGB-Leuchtmitteln
Verfasst: 10. Jul 2023 17:19
von HABuserJM
Hallo Udo, vielen Dank für die Hinweise.
Das Steuern über ein Colorpicker-Widget auf einer Page funktioniert erst einmal und ich habe auch herausgefunden, dass ich über den Topic
Code: Alles auswählen
{["color": {"R" : r_value, "G": g_value, "B": b_value}}
auch zum Ziel komme. Das Problem ist nur der umgekehrte Weg, das Auslesen, bzw. reagieren auf einen xy-Wert. Da fehlt mir der Ansatz um Werte über einen Channel->Item angezeigt zu bekommen und dort direkt zu ändern.
Re: Handling von Nicht-Hue-RGB-Leuchtmitteln
Verfasst: 10. Jul 2023 23:34
von udo1toni
Wichtig ist, dass Du eine Leuchte immer mit dem gleichen Modus befiehlst, den die Lampe auch liefert. Wenn Zigbee2mqtt nur xyy zurück liefert, dann muss der gesamte Channel mit xyy arbeiten, ansonsten müsste man Sende- und Empfangsweg über zwei getrennte Channel realisieren, das wäre aber quasi der letzte Weg.
Das mqtt Binding in openHAB unterstützt jedenfalls alle drei Modi.
Re: Handling von Nicht-Hue-RGB-Leuchtmitteln
Verfasst: 16. Jul 2023 17:25
von HABuserJM
Leider handhabt Openhab dies bei dem Item scheinbar nicht.
Ich habe einen Color-Channel erstellt mit Color-Mode CIE und mit einem Color-Item verlinkt, welches die Kategorie colorlight hat.
Nun bekomme ich als Steuerelemente aber 2 Slider für H - S - B angezeigt, die dann irgendwelche Farben und Warnungen im Log erzeugen, aber nicht so, wie ich es gern hätte und es beim Hue-Binding ja geht.
Da werde ich wohl noch etwas experimentieren und recherchieren müssen, wie ich das hinbekomme.
Hmm: Vernünftige Farben bekomme ich dann, wenn ich den S-Slider, also die Sättigung, höher als 75 stelle, Vollfarben mit 100. wie sage ich dem Item das dann aber z.B. über ein Skript? Der B - Slider macht irgendwie gar nichts.
Re: Handling von Nicht-Hue-RGB-Leuchtmitteln
Verfasst: 16. Jul 2023 19:35
von udo1toni
Wie gesagt, intern arbeitet openHAB immer mit HSB, es ist vollkommen egal, welcher Typ Lampe hier angesteuert wird.
Wichtig ist aber, dass Input und Output (also beide Kommunikationsrichtungen mit der Lampe) identisch arbeiten. Das heißt, Wenn Du eine Lampe mit CIE zur Steuerung anlegst, dann muss auch die Rückmeldung mit CIE erfolgen. Und natürlich muss die Betriebsart vom Binding vorgesehen sein.
Wichtig in dem Zusammenhang: Was ist bitte CIE? Das openHAB MQTT Binding unterstützt laut offizieller Doku:
colorMode: An optional string that defines the color representation: HSB, RGB or XYY (x,y,brightness). Defaults to HSB when not specified.
Also entweder HSB, RGB oder XYY.
Re: Handling von Nicht-Hue-RGB-Leuchtmitteln
Verfasst: 17. Jul 2023 16:26
von HABuserJM
Ich habe nur die Hauptabkürzung genommen, CIE ist dann wohl eine genormte Definition von xyY:
cie.png
Steuerungstechnisch scheint es ja bei mir zu funktionieren, nur eingabetechnisch nicht, mit den Payload
Code: Alles auswählen
{"color":{"hue":120,"saturation":100,"x":0.1724,"y":0.7468}}
kann weder ich noch scheinbar der Channel etwas anfangen. Oder kennst du ein Skript, was das in HSB umwandelt?
Re: Handling von Nicht-Hue-RGB-Leuchtmitteln
Verfasst: 17. Jul 2023 22:07
von udo1toni
Na, das Ding ist ja, intern arbeitet openHAB mit einer kommaseparierten Werteliste, es kommt aber ein JSON Objekt rein. Zum Senden musst Du aus der kommaseparierten Werteliste das JSON bauen (formatBeforePublish), und genauso muss das für den Eingangswert nun auch passieren, die Werte aus dem JSON herauslösen, in die richtige Reihenfolge bringen und durch Kommata voneinander trennen.
Ich vermute, das wird am einfachsten mit der JS Transformation gehen (auch die muss installiert werden).
JS steht für JavaScript. Du musst also ein JavaScript Script schreiben, welches den ankommenden Wert in die Bestandteile zerlegt und korrekt zusammensetzt, z.B. so:
Code: Alles auswählen
(function(dataString){
var json = JSON.parse(dataString);
var hue = json.color.hue;
var saturation = json.color.saturation;
var x = json.color.x;
var y = json.color.y;
var retval = x + ", " + y + ", " + saturation;
return retval;
})(input)
Den Code speicherst Du im Verzeichnis $OPENHAB_CONF/transform/ ab, z.B. unter dem Namen json2cie.js (auf einem openHABian Image z.B.
/etc/openhab/transform/json2cie.js)
Nun kannst Du im Channel den Parameter
transformationPattern="JS:json2cie.js" setzen (in der UI über Show advanced). Damit nimmt openHAB den ankommenden Wert (das JSON Objekt) und leitet es an den JS Transformation Service weiter, mit dem Namen des auszuführenden Scripts. Im Script wird das JSON Objekt in seine Bestandteile zerlegt und in der passenden Reihenfolge zurückgegeben.
Da der Channel als CIE definiert ist (nirgends in der Doku...), wird openHAB die gelieferten Werte anschließend automatisch nach HSB überführen.
Zum Debuggen kann es sinnvoll sein, zusätzlich zum color Channel noch einen String Channel anzulegen, auch dort kannst Du transformationPattern setzen (identisch zum color Channel) und Dir dann anschließend das Resultat in einem String Item anzeigen lassen.
Re: Handling von Nicht-Hue-RGB-Leuchtmitteln
Verfasst: 18. Jul 2023 17:38
von HABuserJM
ok, danke dir, werde aber erst am Wochenende Zeit dafür haben. Ich werde mich auf jeden Fall melden.
Re: Handling von Nicht-Hue-RGB-Leuchtmitteln
Verfasst: 12. Dez 2023 13:07
von go1974
Moin, habe hier ebenfalls eine Nous am Wickel, eine
https://www.zigbee2mqtt.io/devices/P3Z.html.
Laut Zigbee2MQTT etwartet dieses Gerät (color_mode = xy) anscheinend Farbe und Helligkeit in sepearaten Topics. Hat dafür schon jemand eine elegante Lösung gefunden? Und wenn nicht - hat jemand einen Idee ob/wie man dies elegant lösen könnte? LG Gerrit