ioBroker.yahka
ioBroker.yahka copied to clipboard
Conversion: RGB to HEX / HEX to RGB with ZigBee Adapter and without Hue Bridge
Pleas can you add support for the Hue LightStripe RGB-Color?
I have all my ZigBee Devices connected per ZigBee-USB-Stick and the ioBroker.ZigBee Adapter.
But the RGB Color is not available ... The Stripe show in Objects a
level.color.rgb
for change the RGB Color ...
And a small tip :D :D the color changes with HexCode direct in ioBroker. Like: FF00FF or 0000FF or so ...
Hello? No answer? Can you add support for RGB Devices?
Do you already have the datapoints in ioBroker? Is the issue, that you need send the color values in rgb?
Yes, I have Datapoints in ioBroker.
{ "type": "state", "common": { "name": "Color", "type": "string", "read": true, "write": true, "role": "level.color.rgb", "mobile": { "admin": { "visible": true, "type": "light" } } }, "from": "system.adapter.zigbee.0", "ts": 1545703500797, "_id": "zigbee.0.00178801011d043c.color", "acl": { "object": 1636, "state": 1636, "owner": "system.user.admin", "ownerGroup": "system.group.administrator" }, "native": {} }
Yes this is the problem ... I think
Solved via javascript.
https://forum.iobroker.net/viewtopic.php?f=21&t=18154&sid=b3e6507bf37eea3cb5baf9a91e74be20&start=20
Solved via javascript.
https://forum.iobroker.net/viewtopic.php?f=21&t=18154&sid=b3e6507bf37eea3cb5baf9a91e74be20&start=20
Funktioniert leider nicht ordentlich bei der Farbwahl - wird immer überschrieben.
Doppelt #79
Das grundlegende Problem RGB to HEX
und HEX to RGB
kann, ohne zusätzliche Conversion, über ein Skript IN YAHKA gelöst werden. Habe es hier dokumentiert.
Eine vordefinierte Conversion seines YAHKA wäre natürlich wünschenswert. @jensweigele
--
Das andere Problem mit den HomeKit-Color-Picker, dass die 6 gespeicherten Farben immer überschrieben werden, konnte ich genauer analysieren. Dies tritt immer auf, wenn die Characteristics Hue
UND ColorTemperatur
zeitgleich definiert sind.
- Wenn nur
ColorTemperature
kein Problem. - Wenn nur
Hue
+Saturation
kein Problem.
Hier aber ACHTUNG, jetzt wird es strange! ColorTemperature
darf im dem Fall, NIE bei dem Geräte in YAHKA konfiguriert gewesen sein. Wenn es mal konfiguriert war und nur der Haken bei "Aktiviert" entfernt wird - tritt das Problem dennoch auf. Am besten ein frisches Gerät, ohne ColorTemperature
, anlegen.
Das Problem kann ohne Leuchtmittel, mit einfachen Datenpunkten in ioBroker und YAHKA problemlos reproduziert werden!
Für mich ist nur
Hue
+ Saturation
keine Option, da man eh in 90% der Fälle eine natürliche Farbe nutzt. Es wäre dennoch schön, wenn beides in einem funktionieren würde! @jensweigele
Hier wird das Problem beschrieben und teilweise gelöst: https://github.com/ebaauw/homebridge-hue/issues/439 https://github.com/cflurin/homebridge-mqtt/issues/71
--
Gruß Nico
@nicoh88 Wenn ich das Skript Einstelle, kommt im Log dieser Fehler: "hex.substring is not a function". Siehe hier (https://prnt.sc/syu50w)
Edit: Für alle die Probleme mit dem Script von @nicoh88 haben, ändert im Script "To HomeKit" jeweils "hex.substring(x.x);" zu "hex.toString().substring(x,x);". Das hat bei mir geholfen.
@seankmg Danke für die Info!!
@nicoh88
Das grundlegende Problem
RGB to HEX
undHEX to RGB
kann, ohne zusätzliche Conversion, über ein Skript IN YAHKA gelöst werden. Habe es hier dokumentiert.Eine vordefinierte Conversion seines YAHKA wäre natürlich wünschenswert. @jensweigele
Hallo,
es mag an meinem Setup liegen, aber wenn ich versuche, die Anleitung https://github.com/jensweigele/ioBroker.yahka/wiki/Leuchtmittel-dimmbar-mit-Farbe-_-Philips-Hue-Color-LCT001) mit meiner OSRAM Lightify LED nutzen, stürzt Home auf dem iPhone (ioS14) reproduzierbar ab, sobald das Gerät in Home angezeigt wird. Im ioBroker wird nichts angezeigt.
Falls es mit den Osram gar nicht funktionieren kann/ soll: Alles OK :)
Gruß daNick
@daNick73 Habe die Anleitung im Wiki aktualisiert - weil das Skript im YAHKA-Adapter öfters Probleme gemacht hat, es handelt sich jetzt um ein eigenständiges Skript.
@jensweigele Es wäre schön wenn der Lightbulb-Service mit Hue UND ColorTemp ordentlich funktionieren würde.
Hallo!
Ne Idee wie ich meine Meross RGB LEDs damit zum farbig leuchten bringe?
Mit dem Skript gehts leider nicht - und die "hue" Einstellung in Yahka auch nicht. Der Meross Datenpunkt "HUE" hat HEX Werte in dem Format: #000ffa Nutze ich das Skript, wirds überschrieben auf "ffaNaN" und das Licht lässt sich nur mehr in verschiedenen Helligkeitsstufen "Blau" ändern.
Danke!
Das Script ist leider nur ein Workaround. Es wäre schön, wenn es ein Yahka Device gäbe, dass COLOR, COLORTEMP, BRIGHTNESS direkt und ohne Verrenkungen vom Nutzer ansteuern könnte.
Schließe mich @Marty56 an. Würd mich freuen wenn dieses Issue resolved werden könnte.
scheitere auch daran, leider scheint YAHKA nicht wirklich weiterentwickelt zu werden.
Ich habe das Problem folgendermaßen "gelöst": Zunächst habe ich einen eigenen Datenpunkt angelegt. Nun habe ich den Yahka so konfiguriert, dass er Hue und Saturation in diesen Datenpunkt schreibt. In der Javascript Instanz läuft ein Script, welches auf meinen selbst angelegten Datenpunkt lauscht, diesen umwandelt und den umgewandelten Wert an das entsprechende gerät schickt.
Ist zwar alles etwas umständlich und unsauber aber es funktioniert sehr gut und überraschend schnell. Die Homekit Farbwahl ist dennoch etwas buggy bzw. setzt sich immer wieder zurück aber ich gehe davon aus, dass das problem hierbei eher bei Apple's Software liegt als an irgend einer meiner Automationen oder der Yahka bridge (berichtigt mich falls ich falsch liegen sollte).
Hier ein screenshot der Instanz:
Hier der Javascript code (die ID's müssen selbstverständlich angepasst werden)
(0_userdata.0.Hex_convert.Lautsprecherlampe_hue == Der selbst angelegte Datenpunkt)
(zigbee.0.50325ffffed646c9.color == Die eigentliche LED):
on({id:"0_userdata.0.Hex_convert.Lautsprecherlampe_hue", ack: false, change: 'any'}, function (obj) {
var hue = parseInt(obj.state.val);
var sat = parseInt(getState("0_userdata.0.Hex_convert.Lautsprecherlampe_sat").val);
var res = hsvToRgb(hue, sat, 100);
setRGB(res[0], res[1], res[2], "zigbee.0.50325ffffed646c9.color");
});
function setRGB(r, g, b, id){
var val = ''+('00'+r.toString(16)).slice(-2)+('00'+g.toString(16)).slice(-2)+('00'+b.toString(16)).slice(-2);
setState(id, val);
}
function hsvToRgb(h, s, v) {
var r, g, b;
var i;
var f, p, q, t;
h = Math.max(0, Math.min(360, h));
s = Math.max(0, Math.min(100, s));
v = Math.max(0, Math.min(100, v));
s /= 100;
v /= 100;
if(s === 0) {
// Achromatic (grey)
r = g = b = v;
return [
Math.round(r * 255),
Math.round(g * 255),
Math.round(b * 255)
];
}
h /= 60; // sector 0 to 5
i = Math.floor(h);
f = h - i; // factorial part of h
p = v * (1 - s);
q = v * (1 - s * f);
t = v * (1 - s * (1 - f));
switch(i) {
case 0:
r = v;
g = t;
b = p;
break;
case 1:
r = q;
g = v;
b = p;
break;
case 2:
r = p;
g = v;
b = t;
break;
case 3:
r = p;
g = q;
b = v;
break;
case 4:
r = t;
g = p;
b = v;
break;
default: // case 5:
r = v;
g = p;
b = q;
}
return [
Math.round(r * 255),
Math.round(g * 255),
Math.round(b * 255)
];
}
So hab ich es mittlerweile auch gemacht. Konnte den Beitrag im ioBroker Forum finden. Funktioniert und der Bug liegt daran, dass es eine Kollision mit Colortemp gibt. Ist dort auch beschrieben und kommt bei mir nicht mehr vor.
die ScaleInt Conversion oben kannst du weglassen, da Hue von Homekit aus auf 0-360 beschränkt ist.
funktioniert so alles auch, aber wäre direkt in YAHKA schöner.
Bin inzwischen auch bei diesem Problem angekommen. Habe das Script aus dem Wiki sowie dieses hier ausprobiert und habe leider das Problem, dass die Farben nicht korrekt gesetzt werden. Eigentlich wird nu Lila korrekt gesetzt - bei allem anderen kommt immer etwas anderes bei raus oder weiss. Ich hab auch das Gefühl, dass bei "gelb" immer mal wieder etwas anderes bei rauskommt.
Hatte jemand das schon mal?
nein, bei mir funktioniert es auf Anhieb. Du kannst ja mal paar Werte händisch eintragen und schauen welcher HEX Wert rauskommt und googllen, ob der HEX Wert passt.
Oder du postest hier mal ein paar Werte und ich geb sie bei mir ein und schau was rauskommt.
Welche Leichtmittel? Vielleicht gehört das zum Problem?
unstressable @.***> schrieb am Mo. 5. Dez. 2022 um 22:07:
nein, bei mir funktioniert es auf Anhieb. Du kannst ja mal paar Werte händisch eintragen und schauen welcher HEX Wert rauskommt und googllen, ob der HEX Wert passt.
Oder du postest hier mal ein paar Werte und ich geb sie bei mir ein und schau was rauskommt.
— Reply to this email directly, view it on GitHub https://github.com/jensweigele/ioBroker.yahka/issues/76#issuecomment-1338162886, or unsubscribe https://github.com/notifications/unsubscribe-auth/AFBNRBWRVOKFHOXD4NUQQ3DWLZKPVANCNFSM4GJJNLYQ . You are receiving this because you were mentioned.Message ID: @.***>
Bei mir Hue via Zigbee Adapter
nein, bei mir funktioniert es auf Anhieb. Du kannst ja mal paar Werte händisch eintragen und schauen welcher HEX Wert rauskommt und googllen, ob der HEX Wert passt.
Oder du postest hier mal ein paar Werte und ich geb sie bei mir ein und schau was rauskommt.
Ich hab das Yahka Device neu erstellt und schon gehts. Ist zwar 1:1 wie vorher, aber... Technik halt ;)
Moment mal: Haben die Farben an der Lampe nicht funktioniert, oder die Farben der 6 Presets? Die 6 Presets sind ein Bug der bekannt ist. Das liegt daran, wenn an diesem Gerät jemals Color Temperature (Weißtöne) angelegt wurde.
selbst wenn dieses wieder deaktiviert wird kommt es zu diesem Phänomen. Da muss tatsächlich das Gerät manuell neu angelegt werden (nicht kopiert!).
Moment mal: Haben die Farben an der Lampe nicht funktioniert, oder die Farben der 6 Presets? Die 6 Presets sind ein Bug der bekannt ist. Das liegt daran, wenn an diesem Gerät jemals Color Temperature (Weißtöne) angelegt wurde.
selbst wenn dieses wieder deaktiviert wird kommt es zu diesem Phänomen. Da muss tatsächlich das Gerät manuell neu angelegt werden (nicht kopiert!).
Dann bin ich in den Fehler der Color Temp gelaufen. Nicht bewusst, aber daher das mein erster Yahka Ausflug ist, sehr gut möglich.
Noch eine Frage zu den Scripten: Das hier aus dem Thread sowie das aus dem Wiki unterscheiden sich. Gibt es dabei ein "aktuelleres"?
Zudem landen im Log beim Umrechnen einige Meldungen "has to be type string but received type number". Als Datenpunkte habe ich String angelegt. Kann man die Meldung noch fixen im Script oder im Datenpunkt?