You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Hi, this isn't probably the place to ask this question but I don't really know where else to ask it.
When I request the data from my RGBW lamp it returns dps 20-26 with 24 containing the color, brightness and saturation in colour mode.
I can't seem to understand how this code is build. I've read a lot of issues on GitHub with possible explanations but none have completely worked for me.
From what i can find on the internet the color is in HSV separating the values with a 0.
Not quite, the zero is not a separator.
What i can't seem to figure out is why my color code contains letters and what they mean.
This is a hexadecimal representation of color. Two hexadecimal digits represent one byte, so the challenge is figuring out which byte controls which channel.
I would send the bulb values with one byte set at a time and observe what it does, ie ff0000000000 00ff00000000 0000ff000000
... and so on.
I ran into the same issue, from my findings it seems that the 3e803e8 dictates the brightness and the colour/white sliders. The first 5 bits are for the colour.
The colour code can be (almost) directly decoded to an HSV color value, so if you know what color you'd like, you can also encode the correct color value (the resulting string is just the 3 segments of an HSV value, as hex, and then zero-padded):
The colour code can be (almost) directly decoded to an HSV color value, so if you know what color you'd like, you can also encode the correct color value (the resulting string is just the 3 segments of an HSV value, as hex, and then zero-padded):
Setting dps['24'] to the resulting value (007803e803e8) does the trick on my device (an LED strip in the "Arlec GridConnect" family).
Did this in javascript but got a different result. My result is 0078640640 I'm new to binary and hexadecimal so I dont completely understand how you got your result and why mine is different.
Activity
kueblc commentedon Sep 8, 2021
Not quite, the zero is not a separator.
This is a hexadecimal representation of color. Two hexadecimal digits represent one byte, so the challenge is figuring out which byte controls which channel.
I would send the bulb values with one byte set at a time and observe what it does, ie
ff000000000000ff000000000000ff000000... and so on.
duncte123 commentedon Oct 18, 2021
I ran into the same issue, from my findings it seems that the
3e803e8dictates the brightness and the colour/white sliders. The first 5 bits are for the colour.f00stx commentedon Nov 17, 2021
The colour code can be (almost) directly decoded to an HSV color value, so if you know what color you'd like, you can also encode the correct color value (the resulting string is just the 3 segments of an HSV value, as hex, and then zero-padded):
Setting
dps['24']to the resulting value (007803e803e8) does the trick on my device (an LED strip in the "Arlec GridConnect" family).tromphakvoort commentedon Nov 30, 2021
Did this in javascript but got a different result. My result is
0078640640I'm new to binary and hexadecimal so I dont completely understand how you got your result and why mine is different.This is the code I used:
codetheweb commentedon Nov 30, 2021
@tromphakvoort looks like you're missing the required parenthesis, i.e you're doing
tuyaS = 10 * hsv["s"].toString(16).padStart(4, "0")instead oftuyaS = (10 * hsv['s']).toString(16).padStart(4, '0').Converting to a discussion.