NEWS
tint remote (Müller Licht) - xy in RGB oder HEX
-
Hallo,
ich habe eine Tint dim remote control in mein System eingebunden und verzweifle gerade an der Farbausgabe. Die Fernbedienung gibt die Farbe als "colorx" und "colory" ausgegeben. Die beiden Werte bewegen sich jeweils im 10.000er Bereich.
Ich versuche das nun irgendwie in HEX umzurechnen, komme da aber nicht weiter. Ich habe unter [[https://stackoverflow.com/questions/22894498/philips-hue-convert-xy-from-api-to-hex-or-rgb](Link Adresse)](Link Adresse) folgenden Code gefunden und als "JS-Funktion mit Ergebnis" versucht einzubinden:function xyBriToRgb(x, y, bri) { z = 1.0 - x - y; Y = bri / 255.0; // Brightness of lamp X = (Y / y) * x; Z = (Y / y) * z; r = X * 1.612 - Y * 0.203 - Z * 0.302; g = -X * 0.509 + Y * 1.412 + Z * 0.066; b = X * 0.026 - Y * 0.072 + Z * 0.962; r = r <= 0.0031308 ? 12.92 * r : (1.0 + 0.055) * Math.pow(r, (1.0 / 2.4)) - 0.055; g = g <= 0.0031308 ? 12.92 * g : (1.0 + 0.055) * Math.pow(g, (1.0 / 2.4)) - 0.055; b = b <= 0.0031308 ? 12.92 * b : (1.0 + 0.055) * Math.pow(b, (1.0 / 2.4)) - 0.055; maxValue = Math.max(r,g,b); r /= maxValue; g /= maxValue; b /= maxValue; r = r * 255; if (r < 0) { r = 255 }; g = g * 255; if (g < 0) { g = 255 }; b = b * 255; if (b < 0) { b = 255 }; r = Math.round(r).toString(16); g = Math.round(g).toString(16); b = Math.round(b).toString(16); if (r.length < 2) r="0"+r; if (g.length < 2) g="0"+g; if (b.length < 2) b="0"+r; rgb = "#"+r+g+b; return rgb; }
Im Blockly rechne ich den colorx und colory Wert noch durch 100.000, da das Script für HUE ist und von dort Werte mit 0,.. kommen.
Ich erhalte aber nur ein undefined, komme aber auch ehrlich gesagt mit der Debug-Funktion nicht klar.
Daher die Frage, ob mich jemand auf die richtigen Weg bzgl. des geschilderten Fehlers briungen kann oder eine andere Idee hat, wie ich XY in HEX konvertieren kann.
Danke
Viele Grüße
Ronny