ioBroker.yahka
ioBroker.yahka copied to clipboard
Support for color.CIE
I have an IKEA Tradfri light that I've connected via a ConBee II Stick and the deconz app. If shows it's hue and saturation to ioBroker, but those have no effects. But it also has a property color.CIE
, which is a x/y coordinate in the range of 0..1.
Is it possible to somehow support those using the yahka plugin?
Hope you understand what I mean... I am quite new to ioBroker...
Hallo!
Genau das gleiche Problem hab ich leider auch. Ich hab eine IKEA RGB Lampe über einen Cobee II Stick importiert. Es funktioniert alles bis auf die Farbtemperatur und die Hue und Saturation. Ist es irgendwie möglich es so zu bauen das die Lampe auch übers Homekit die Farbe ändert? Wenn möglich natürlich ohne Scripte bauen zu müssen?
Ich denke das Problem haben fast alle Anwender die Phillips oder IKEA RGB leuchten benutzen.
Wäre super wenn ihr da einen Workaround schreiben könntet 😉
Hi @georgbachmann @lokus84,
bedeutet mit ConBee II und Deconz habt ihr nicht RGB-HEX (#111111
) wie hier beschrieben, sondern CIE?
💣 🧠 😖 🤯
Leider, keine Antwort. Schließe Issue!
Unfortunately, no answer. Close Issue!
I würde diesen issue gern wieder aufmachen. IoBroker/Deconz bzw. Die IKEA Lampe verwendet CIE zur Farbkodierung. Wäre ja schön, wenn das direkt in yahka unterstützt würde. Gibt bestimmt viele solche Lampen im Einsatz.
Ich habe genau das gleiche Problem. Habe die Lidl RGBW Lampen (E27) und konnte bisher alles über yahka und iobroker steuern. Nur leider gibt die Homekit-App bei der Farbe einen Wert von 0...255 aus, die Lampe will aber einen x,y CIE-Wert haben. Kann man das über ein Skript umwandeln oder sowas?
Das ist der Code, den ich für die Umrechnung verwendet habe. Ein bissl kompliziert, aber funktioniert. "deconz.1.lights.bc33acfffea074f5" ist die Ikea-Lampe
function hslToRgb() { C = (1 - Math.abs(2 * l - 1)) * s; var hue = h / 60; X = C * (1 - Math.abs(hue % 2 - 1)); r = g = b = 0; if (hue >= 0 && hue < 1) { r = C; g = X; } else if (hue >= 1 && hue < 2) { r = X; g = C; } else if (hue >= 2 && hue < 3) { g = C; b = X; } else if(hue >= 3 && hue < 4) { g = X; b = C; } else if (hue >= 4 && hue < 5) { r = X; b = C; } else { r = C; b = X; } m = l - C / 2; r += m; g += m; b += m; r = Math.round(r255.0); g = Math.round(g255.0); b = Math.round(b*255.0); // return [Math.round(r), Math.round(g), Math.round(b)]; }
/**
-
Converts RGB color space to CIE color space
-
@param {Number} r ed
-
@param {Number} g reen
-
@param {Number} b lue
-
@return {Array} Array that contains the CIE color values for x and y */ function rgbtocie() { //Apply a gamma correction to the RGB values, which makes the color more vivid and more the like the color displayed on the screen of your device r = (r > 0.04045) ? Math.pow((r + 0.055) / (1.0 + 0.055), 2.4) : (r / 12.92); g = (g > 0.04045) ? Math.pow((g + 0.055) / (1.0 + 0.055), 2.4) : (g / 12.92); b = (b > 0.04045) ? Math.pow((b + 0.055) / (1.0 + 0.055), 2.4) : (b / 12.92);
//RGB values to XYZ using the Wide RGB D65 conversion formula var X = r * 0.664511 + g * 0.154324 + b * 0.162028; var Y = r * 0.283881 + g * 0.668433 + b * 0.047685; var Z = r * 0.000088 + g * 0.072310 + b * 0.986039;
//Calculate the xy values from the XYZ values x = (X / (X + Y + Z)).toFixed(4); y = (Y / (X + Y + Z)).toFixed(4);
if (isNaN(x)) x = 0;
if (isNaN(y)) y = 0; // return [x, y]; }
// Bei Farbänderung oder Helligkeitsänderung //on({id: 'deconz.0.lights.bc33acfffea074f5.hue', change: "ne"}, function (obj) { on({id: new RegExp('deconz\.1\.lights\.bc33acfffea074f5\.hue' + "|" + 'deconz\.1\.lights\.bc33acfffea074f5\.sat'), change: "ne"}, function (obj) { var value = obj.state.val; var oldValue = obj.oldState.val;
h = getState("deconz.1.lights.bc33acfffea074f5.hue").val; s = getState("deconz.1.lights.bc33acfffea074f5.sat").val/100; l = getState("deconz.1.lights.bc33acfffea074f5.bri").val/255;
hslToRgb(); setState("deconz.1.lights.bc33acfffea074f5.Rot", r); setState("deconz.1.lights.bc33acfffea074f5.Grün", g); setState("deconz.1.lights.bc33acfffea074f5.Blau", b); rgbtocie() setState("deconz.1.lights.bc33acfffea074f5.xy", x+","+y); });
Hi bellagio66,
kannst du erklären wie das Script im Iobroker angelegt wird. Bzw. über welche Datenpunkte dann die Farbe gesteuert werden kann?
Danke
Hi! Das täte mich auch interessieren. Wenn ich das einfach als JavaScript einfüge, bekomme ich unzähliche Compilerfehler... Please help :-) Thomas
Hi. Für das JavaScript benötigt man natürlich den JavaScript Adapter in ioBroker. Einfach neues Script anlegen und die Funktionen kopieren. Die Aufrufe müsst ihr ggf. anpassen und die Variablen anlegen, entweder im script oder Manuell in ioBroker. var h, s, l, r, g, b, x, y habe ich im script verwendet. Die Ikea Lampe steuere ich über einen conbee2 Stick. Die Objekt ID für die Farbe heißt xy. Nur die muss letztendlich gesetzt werden. Viel Erfolg
die Datenpunkte Rot,Gelb,Grün gibt es bei mir nicht einzeln. hast du dafür eine Lösung @bellagio66
Eine volle Unterstützung der Farbsteuerung von Ikea Leuchten über Yahka wäre spitze!
Also ich habe das gleiche Problem:
deconz mit Tradfri Color will XY, Yahka gibt HSV aus. Ich kann das Skript von @bellagio66 nehmen, aber das funktioniert bei mir nur mit brightness < 80% ca. Wenn die Lampe heller eingestellt ist kommt beim RGB Wert immer 255,255,255 also weiß raus, was dann die Lampe auch anzeigt.