Конвертер я состряпал исключительно для колорпикера объекта в ПУ
Код: Выделить всё
$color = gg('Rgb01.colorTuya');
$HSV=$color;
$H=hexdec(substr($HSV,0,4));
$S=hexdec(substr($HSV,4,4));
$V=hexdec(substr($HSV,8,4));
//$H = $H/360;
//$S = $S/1000;
//$V = $V/1000;
$S = $S/10;
$V = $V/10;
echo '<BR>-------<BR>';
echo 'H: ';
echo $H;
echo '<BR>-------<BR>';
echo 'S: ';
echo $S;
echo '<BR>-------<BR>';
echo 'V: ';
echo $V;
echo '<BR>-------<BR>';
var_dump(hsv2rgb($H, $S, $V));
function hsv2rgb($hue,$sat,$val) {
$rgb = array(0,0,0);
//calc rgb for 100% SV, go +1 for BR-range
for($i=0;$i<4;$i++) {
if (abs($hue - $i*120)<120) {
$distance = max(60,abs($hue - $i*120));
$rgb[$i % 3] = 1 - (($distance-60) / 60);
}
}
//desaturate by increasing lower levels
$max = max($rgb);
$factor = 255 * ($val/100);
for($i=0;$i<3;$i++) {
//use distance between 0 and max (1) and multiply with value
$rgb[$i] = round(($rgb[$i] + ($max - $rgb[$i]) * (1 - $sat/100)) * $factor);
}
$rgb['html'] = sprintf('#%02X%02X%02X', $rgb[0], $rgb[1], $rgb[2]);
sg('Rgb01.color', sprintf( '#%02X%02X%02X', $rgb[0], $rgb[1], $rgb[2]));
return $rgb;
}
Спасибо отдельное fandaymon.
Потом увидев как сделал молодец Divan (не без помощи конечно SmoKE_xDDD)) сценарий для генерации случайного цвета решил провернуть у себя, но не тут-то было. При его коде действительно меняется цвет формата #FF0009, но только в колорпикере объекта в ПУ, а в Tuya необходимо закидывать свой формат цвета HSV (или HSB его называют). Вот и заковырка получается.