Страница 1 из 1
[Сценарий] Случайный выбор цвета
Добавлено: Сб авг 08, 2020 2:07 pm
Divan
Сценарий для генерации случайного цвета. Посмотреть видео можете
здесь
Код в PHP
Код: Выделить всё
$RandomColor;
function colour_random() {
return '#' . str_pad(dechex(mt_rand(0, 0xFFFFFF)), 6, '0', STR_PAD_LEFT);
}
$RandomColor = colour_random();
setGlobal('Lamp.RGB', $RandomColor);
Код в PHP от SmoKE_xDDD,
за что ему большое спасибо!!!
Код: Выделить всё
setGlobal('объект.свойство', sprintf( '%02X%02X%02X', rand(0, 255), rand(0, 255), rand(0, 255)));
Код в blockly
- Блокли - случайный выбор цвета.JPG (20.03 КБ) 3660 просмотров
Код кнопки и запуск сценария
Код: Выделить всё
<input name="кнопка" type="button" value="Рандомный выбор цвета" onclick="runScript('Рандомный выбор цвета');" />
Запуск сценария. Это можете вставить в любую кнопку.
Код: Выделить всё
onclick="runScript('Рандомный выбор цвета');"
Re: [Сценарий] Случайный выбор цвета
Добавлено: Сб авг 08, 2020 2:41 pm
SmoKE_xDDD
В одну строку:
Код: Выделить всё
$color = sprintf( '%02X%02X%02X', rand(0, 255), rand(0, 255), rand(0, 255));
Re: [Сценарий] Случайный выбор цвета
Добавлено: Сб авг 08, 2020 2:56 pm
Divan
SmoKE_xDDD писал(а): ↑Сб авг 08, 2020 2:41 pm
В одну строку:
Код: Выделить всё
$color = sprintf( '%02X%02X%02X', rand(0, 255), rand(0, 255), rand(0, 255));
а где указывается свойство объекта?
Re: [Сценарий] Случайный выбор цвета
Добавлено: Сб авг 08, 2020 3:10 pm
SmoKE_xDDD
Divan писал(а): ↑Сб авг 08, 2020 2:56 pm
SmoKE_xDDD писал(а): ↑Сб авг 08, 2020 2:41 pm
В одну строку:
Код: Выделить всё
$color = sprintf( '%02X%02X%02X', rand(0, 255), rand(0, 255), rand(0, 255));
а где указывается свойство объекта?
Код: Выделить всё
setGlobal('Lamp.RGB', sprintf( '%02X%02X%02X', rand(0, 255), rand(0, 255), rand(0, 255)));
Re: [Сценарий] Случайный выбор цвета
Добавлено: Вт янв 25, 2022 9:54 pm
Djeday999
А как сделать random на HSV? У меня из Tuya приходит: 016603e803e8 (говорят такой вид hhhhssssvvvv). Попробовал переделать код тупо в два раза все умножить:
Код: Выделить всё
setGlobal('Lamp.RGB', sprintf( '%02X%02X%02X%02X%02X%02X', rand(0, 100), rand(0, 100), rand(0, 100), rand(0, 100), rand(0, 100), rand(0, 100)));
вроде работает, но в итоге получаются только цифры в цвете и в основном белый цвет. Как этот разброс (0, 100) переписать, чтобы и буквы и цифры были?
Замысел-то очень даже не плохой случайного выбора цвета. Заходишь на горшок, а там новый цвет освещения.
Re: [Сценарий] Случайный выбор цвета
Добавлено: Ср янв 26, 2022 1:24 am
xor
Djeday999 писал(а): ↑Вт янв 25, 2022 9:54 pm
А как сделать random на HSV? У меня из Tuya приходит: 016603e803e8 (говорят такой вид hhhhssssvvvv). Попробовал переделать код тупо в два раза все умножить:
Код: Выделить всё
setGlobal('Lamp.RGB', sprintf( '%02X%02X%02X%02X%02X%02X', rand(0, 100), rand(0, 100), rand(0, 100), rand(0, 100), rand(0, 100), rand(0, 100)));
вроде работает, но в итоге получаются только цифры в цвете и в основном белый цвет. Как этот разброс (0, 100) переписать, чтобы и буквы и цифры были?
Замысел-то очень даже не плохой случайного выбора цвета. Заходишь на горшок, а там новый цвет освещения.
в мдм есть 4 функции для работы с hsv, в том числе, и конвертация из ргб. если можно в ргб рандом сделать, то можно его и конвертировать
- 2022-01-26_01-20-43.png (36.29 КБ) 2300 просмотров
Re: [Сценарий] Случайный выбор цвета
Добавлено: Ср янв 26, 2022 8:42 am
Djeday999
Конвертер я состряпал исключительно для колорпикера объекта в ПУ
Код: Выделить всё
$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 его называют). Вот и заковырка получается.