NEWS
WLAN Lampe mit Color_Data ID kein Hex oder RGB
-
Hallo Leute, ich benötige etwas Hilfe, damit ich den Code verstehen kann. Vieleicht muss ich auch Reverse Engineering betreiben. Vielleicht hat das jedoch schon jemand getan bzw. kennt den Code.
Ich erhalte folgenden Wert für rot: "0000F000F000". Ein weiterer Wert für z.B. lila-blau ist "00c0018103e8".
Was bedeutet dieser String-Wert? RGB bzw. Hex-Werte sind es nicht.Ich habe folgende Lampe mit dem Tuya-Adapter eingebunden: "https://www.amazon.de/gp/product/B083FMW832/ref=ppx_yo_dt_b_search_asin_title?ie=UTF8&psc=1"
-
@wuff1956
Doch es sind HEX WerteR=0000 G=F000 B=F000
-
8 bit/Kanal = 2 hoch 8 = 256 Farbdifferenzierungen je Grundfarbe (RGB) = 256 x 256 x 256 = 16.777.216 unterschiedliche Farben.
16 bit/Kanal = 2 hoch 16 = 65.536 Farbdifferenzierungen je Grundfarbe (RGB) = 65.535 x 65.535 x 65.535 = 281.474.976.710.656 unterschiedliche Farben.
0000 F000 F000 = 0 x 61.440 x 61.440
00c0 0181 03e8 = 192 x 385 x 1000
FFFF FFFF FFFF = 65.535 x 65.535 x 65.535console.log(parseInt('FFFF',16))
EDIT: wofür allerdings 281 Billionen Farben in einer Tuya-Lampe sinnvoll sein sollen, erschließt sich mir auch nicht
-
@armilar Vielen Dank erstmal für die Aufklärung. Gibt es schon zu diesen Hex-Werten ein Widget für den "vis"-Adapter? Ich habe schon ein paar auspobiert. Die können anscheinend nur RGB oder einen Hex-Wert bspw. "#32a84a". Hat hier jemand schon einen Converter gebaut? Zudem verstehe ich noch nicht genau, wie die Farben umgerechnet werden. Bspw. für rot wäre es bei RGB "255, 0, 0" und für HEX "#ff0000". Wie rechnet sich das bei mir?
-
Wollte bloß etwas zum Reengineering beitragen nachdem ich gelesen habe "es wäre kein HEX"
. Ich habe so etwas noch nie zuvor wirklich in Umrechnungen gesehen und es würde mich wundern wenn es einer für ioBroker umgesetzt hätte. Die meisten Adapter schubsen ja nur Daten von rechts nach links. Bei speziellen Widgets muss ja die Umrechnung erfolgen. Allerdings kann ich mich auch nicht an dieses Muster erinnern.
Prinzipiell müsste jetzt eine Umrechnung (bitwise) von 16 bit auf 8 bit erfolgen.
Denke da wird man auch ein Weilchen googlen... Gibt es nur den Wert oder hat der Tuya-Adapter auch noch schickere Formate?
Edit: das mit dem rot hat mich am meisten irritiert... selbst wenn du die RGB565 durch 257 teilst, bekommst du ja eher R=0 G=239 B=239 --> Also etwas weniger rot als gefordert
-
Das Geheimnis wurde anscheinend auch noch nicht in anderen Smart Home Systemen gelöst...
https://community.home-assistant.io/t/no-color-picker-with-tuya-bulbs/160711
-
Falls jemand hier drüber stolpert
lila blau: 00c0 0181 03e8
es handelt sich vermutlich um eine form von HSV (Hue Saturation Vibrance) encoding...erste Kollone werte von 0 bis 359
die beiden anderen Kolonnen werte für die Helligkeit und den Farbkolonnen...
hier kann es Unterschiede geben was die maximal werte sind... im Lila-blau beispiel wäre die03e8 = 1000 vermutlich ein Maximal wert... (was mir das F000 ) bei deinem rot wert komisch vorkommen lässt...
Hier mal ein js code Beispiel... um RGB werte in strings für tuja geräte die dieses encoding verweden umzuwandeln
function rgb2hsv(t,e,n){t/=255,e/=255,n/=255;var r,a,s=Math.max(t,e,n),g=Math.min(t,e,n),i=s,l=s-g;if(a=0==s?0:l/s,s==g)r=0;else{switch(s){case t:r=(e-n)/l+(e<n?6:0);break;case e:r=(n-t)/l+2;break;case n:r=(t-e)/l+4;break}r/=6}return[r,a,i]} function rgb2tuya2(r,g,b) { //--- Set Up Initial Values ---// const rgb = [r,g,b]; const hsv = rgb2hsv(rgb[0],rgb[1],rgb[2]); let hexValue_hsv = new String(); //--- Generate HSV ---// let hsvarray = [parseInt((hsv[0] * 360).toString()), parseInt((hsv[1] * 1000).toString()), parseInt((hsv[2] * 1000).toString())] for (const i in hsvarray) { let hex = hsvarray[i].toString(16).padStart(4, '0') hexValue_hsv += hex; } return hexValue_hsv }