Страница 1 из 2
Синхронизация RGB лампы с RGB лентой
Добавлено: Вс июл 21, 2019 11:25 am
Divan
Сейчас у меня выбор цветов работает по такой схеме (см. ниже). Скажите, как сделать так, чтобы при включении RGB лампы, RGB лампа включала такой же цвет как у RGB ленты? Как настроить синхронизацию цветов между RGB лентой и RGB лампой? Допустим, RGB лампа в настоящий момент выключена, а RGB лента включена и выбран цвет "Зеленый", пришло время, включаю RGB лампу и она должна загореться зеленым цветом, если RGB лента светилась синим цветом, то и RGB лампа должна включиться уже с синим цветом. Также хотелось бы сделать между ними связь, если RGB лента и RGB лампа включены, то где бы ни выбрал цвет, то между ними должен быть одинаковый цвет.
Для RGB ленты создал поле (SELECT) и:
Прописал данные:
- Голубой
Синий
Розовый
Оранжевый
Зеленый
Желтый
Пурпурный
Красный
Морской
Прописал код:
Код: Выделить всё
switch($params["VALUE"]) {
case Голубой:sg('Deepcool_RGB360.Голубой', 1);break;
case Синий:sg('Deepcool_RGB360.Синий', 1);break;
case Розовый:sg('Deepcool_RGB360.Розовый', 1);break;
case Оранжевый:sg('Deepcool_RGB360.Оранжевый', 1);break;
case Зеленый:sg('Deepcool_RGB360.Зеленый', 1);break;
case Желтый:sg('Deepcool_RGB360.Желтый', 1);break;
case Пурпурный:sg('Deepcool_RGB360.Пурпурный', 1);break;
case Красный:sg('Deepcool_RGB360.Красный', 1);break;
case Морской:sg('Deepcool_RGB360.Морской', 1);break;
}
Для RGB лампы также создал поле (SELECT), прописал данные и код. (см. скриншот)
Re: Синхронизация RGB лампы с RGB лентой
Добавлено: Вс июл 21, 2019 11:55 am
SmoKE_xDDD
Какая то сложная реализация у вас.... Вызывайте сценарий или метод при изменении свойства цвета, а в сценарии/методе задавайте параметр в другой девайс...
Re: Синхронизация RGB лампы с RGB лентой
Добавлено: Ср июл 24, 2019 6:14 pm
Divan
Немного сдвинулось с места. Добавив такой код (см. ниже), у меня при выборе цвета, на RGB лампе и ленте одновременно включается выбранный цвет. Теперь нужно понять, как сделать так, чтобы при включении RGB лампы, включился такой же свет как и у ленты. Допустим RGB лента горит зеленым светом, а RGB лампа пока выключена, как я ее включил, идет сравнение цветов между RGB лентой и лампой, и лампа включает зеленый цвет.
Код: Выделить всё
switch($params["VALUE"]) {
case Голубой:
sg('Deepcool_RGB360.Голубой', 1);
sg('Gauss_RGB_лампа.DeepSkyBlue', 1);
break;
case Синий:
sg('Deepcool_RGB360.Синий', 1);
sg('Gauss_RGB_лампа.Blue', 1);
break;
case Розовый:
sg('Deepcool_RGB360.Розовый', 1);
sg('Gauss_RGB_лампа.Fuchsia', 1);
break;
}
Re: Синхронизация RGB лампы с RGB лентой
Добавлено: Ср июл 24, 2019 7:29 pm
SmoKE_xDDD
Divan писал(а): ↑Ср июл 24, 2019 6:14 pm
Немного сдвинулось с места. Добавив такой код (см. ниже), у меня при выборе цвета, на RGB лампе и ленте одновременно включается выбранный цвет. Теперь нужно понять, как сделать так, чтобы при включении RGB лампы, включился такой же свет как и у ленты. Допустим RGB лента горит зеленым светом, а RGB лампа пока выключена, как я ее включил, идет сравнение цветов между RGB лентой и лампой, и лампа включает зеленый цвет.
Код: Выделить всё
switch($params["VALUE"]) {
case Голубой:
sg('Deepcool_RGB360.Голубой', 1);
sg('Gauss_RGB_лампа.DeepSkyBlue', 1);
break;
case Синий:
sg('Deepcool_RGB360.Синий', 1);
sg('Gauss_RGB_лампа.Blue', 1);
break;
case Розовый:
sg('Deepcool_RGB360.Розовый', 1);
sg('Gauss_RGB_лампа.Fuchsia', 1);
break;
}
Получить все свойства объекта, используя цикл найти свойство в котором свойство 1.
Re: Синхронизация RGB лампы с RGB лентой
Добавлено: Ср июл 24, 2019 8:20 pm
SmoKE_xDDD
Divan писал(а): ↑Ср июл 24, 2019 6:14 pm
Немного сдвинулось с места. Добавив такой код (см. ниже), у меня при выборе цвета, на RGB лампе и ленте одновременно включается выбранный цвет. Теперь нужно понять, как сделать так, чтобы при включении RGB лампы, включился такой же свет как и у ленты. Допустим RGB лента горит зеленым светом, а RGB лампа пока выключена, как я ее включил, идет сравнение цветов между RGB лентой и лампой, и лампа включает зеленый цвет.
Код: Выделить всё
switch($params["VALUE"]) {
case Голубой:
sg('Deepcool_RGB360.Голубой', 1);
sg('Gauss_RGB_лампа.DeepSkyBlue', 1);
break;
case Синий:
sg('Deepcool_RGB360.Синий', 1);
sg('Gauss_RGB_лампа.Blue', 1);
break;
case Розовый:
sg('Deepcool_RGB360.Розовый', 1);
sg('Gauss_RGB_лампа.Fuchsia', 1);
break;
}
Накидал вам быстренько, не знаю насколько правильно лазить по БД, но код работает:
Код: Выделить всё
$search_obj = 'testObject';
//Найтем ID обьекта
$sql = SQLSelectOne("SELECT id FROM `objects` WHERE `TITLE` = '{$search_obj}'");
$obj_id = $sql['id'];
//Найдем значения свойства
$sql = SQLSelect("SELECT ID,TITLE FROM `properties` WHERE `OBJECT_ID` = '{$obj_id}'");
$prop_id = [];
foreach ($sql as $key => $value) {
//Запросим значения свойств
$sql = SQLSelectOne("SELECT VALUE FROM `pvalues` WHERE `OBJECT_ID` = '{$obj_id}' AND `PROPERTY_ID` = {$value['ID']}");
//Сформировали массив с ID свойств
array_push($prop_id, array('ID' => $value['ID'], 'TITLE' => $value['TITLE'], 'VALUE' => $sql['VALUE']));
}
В результате получите массив:
Код: Выделить всё
array(5) {
[0]=>
array(3) {
["ID"]=>
string(4) "2257"
["TITLE"]=>
string(4) "blue"
["VALUE"]=>
string(1) "0"
}
[1]=>
array(3) {
["ID"]=>
string(4) "2258"
["TITLE"]=>
string(5) "green"
["VALUE"]=>
string(1) "0"
}
[2]=>
array(3) {
["ID"]=>
string(4) "2259"
["TITLE"]=>
string(3) "red"
["VALUE"]=>
string(1) "1"
}
[3]=>
array(3) {
["ID"]=>
string(4) "2260"
["TITLE"]=>
string(6) "yellow"
["VALUE"]=>
string(1) "0"
}
[4]=>
array(3) {
["ID"]=>
string(4) "2261"
["TITLE"]=>
string(5) "white"
["VALUE"]=>
string(1) "0"
}
}
А дальше что хотите с ним делайте...
P.S. Я знаю про JOIN и т.д. просто так код понятнее для автора.
Re: Синхронизация RGB лампы с RGB лентой
Добавлено: Ср июл 24, 2019 9:21 pm
Divan
Ух ты, спасибо что ответили ). Скажите, я правильно понимаю, что это запросы для БД, т.е нужно в БД сделать запросы и в итоге я получу массив?
Код: Выделить всё
$search_obj = 'testObject';
//Найтем ID обьекта
$sql = SQLSelectOne("SELECT id FROM `objects` WHERE `TITLE` = '{$search_obj}'");
$obj_id = $sql['id'];
//Найдем значения свойства
$sql = SQLSelect("SELECT ID,TITLE FROM `properties` WHERE `OBJECT_ID` = '{$obj_id}'");
$prop_id = [];
foreach ($sql as $key => $value) {
//Запросим значения свойств
$sql = SQLSelectOne("SELECT VALUE FROM `pvalues` WHERE `OBJECT_ID` = '{$obj_id}' AND `PROPERTY_ID` = {$value['ID']}");
//Сформировали массив с ID свойств
array_push($prop_id, array('ID' => $value['ID'], 'TITLE' => $value['TITLE'], 'VALUE' => $sql['VALUE']));
}
Re: Синхронизация RGB лампы с RGB лентой
Добавлено: Ср июл 24, 2019 10:21 pm
SmoKE_xDDD
Divan писал(а): ↑Ср июл 24, 2019 9:21 pm
Ух ты, спасибо что ответили ). Скажите, я правильно понимаю, что это запросы для БД, т.е нужно в БД сделать запросы и в итоге я получу массив?
Код: Выделить всё
$search_obj = 'testObject';
//Найтем ID обьекта
$sql = SQLSelectOne("SELECT id FROM `objects` WHERE `TITLE` = '{$search_obj}'");
$obj_id = $sql['id'];
//Найдем значения свойства
$sql = SQLSelect("SELECT ID,TITLE FROM `properties` WHERE `OBJECT_ID` = '{$obj_id}'");
$prop_id = [];
foreach ($sql as $key => $value) {
//Запросим значения свойств
$sql = SQLSelectOne("SELECT VALUE FROM `pvalues` WHERE `OBJECT_ID` = '{$obj_id}' AND `PROPERTY_ID` = {$value['ID']}");
//Сформировали массив с ID свойств
array_push($prop_id, array('ID' => $value['ID'], 'TITLE' => $value['TITLE'], 'VALUE' => $sql['VALUE']));
}
Это готовый код - используйте где хотите, хоть в сценариях, хоть в методах...
Re: Синхронизация RGB лампы с RGB лентой
Добавлено: Ср июл 24, 2019 10:38 pm
SmoKE_xDDD
var_dump($prop_id) покажет содержимое массива
Re: Синхронизация RGB лампы с RGB лентой
Добавлено: Ср июл 24, 2019 10:51 pm
Divan
что-то я не совсем вас понимаю (. Можете написать как и куда нужно это все вставлять? Например: Сначала создаю сценарий с именем "RGB лампа - сверка цветов", вставляю этот код в раздел PHP и привязываю к объекту RGB лампа, которая будет сканировать объект RGB лента, так?
Код: Выделить всё
$search_obj = 'RGB лента';
//Найтем ID обьекта
$sql = SQLSelectOne("SELECT id FROM `objects` WHERE `TITLE` = '{$search_obj}'");
$obj_id = $sql['id'];
//Найдем значения свойства
$sql = SQLSelect("SELECT ID,TITLE FROM `properties` WHERE `OBJECT_ID` = '{$obj_id}'");
$prop_id = [];
foreach ($sql as $key => $value) {
//Запросим значения свойств
$sql = SQLSelectOne("SELECT VALUE FROM `pvalues` WHERE `OBJECT_ID` = '{$obj_id}' AND `PROPERTY_ID` = {$value['ID']}");
//Сформировали массив с ID свойств
array_push($prop_id, array('ID' => $value['ID'], 'TITLE' => $value['TITLE'], 'VALUE' => $sql['VALUE']));
}
А этот код куда вставлять?
Код: Выделить всё
array(5) {
[0]=>
array(3) {
["ID"]=>
string(4) "2257"
["TITLE"]=>
string(4) "blue"
["VALUE"]=>
string(1) "0"
}
[1]=>
array(3) {
["ID"]=>
string(4) "2258"
["TITLE"]=>
string(5) "green"
["VALUE"]=>
string(1) "0"
}
[2]=>
array(3) {
["ID"]=>
string(4) "2259"
["TITLE"]=>
string(3) "red"
["VALUE"]=>
string(1) "1"
}
[3]=>
array(3) {
["ID"]=>
string(4) "2260"
["TITLE"]=>
string(6) "yellow"
["VALUE"]=>
string(1) "0"
}
[4]=>
array(3) {
["ID"]=>
string(4) "2261"
["TITLE"]=>
string(5) "white"
["VALUE"]=>
string(1) "0"
}
}
Re: Синхронизация RGB лампы с RGB лентой
Добавлено: Ср июл 24, 2019 11:01 pm
SmoKE_xDDD
Divan писал(а): ↑Ср июл 24, 2019 10:51 pm
что-то я не совсем вас понимаю
Да, тяшко без хотя - бы базовых знаний php =)
Давайте я вам еще вариант подкину - попроще.
1) Создаете CRON задание с php кодом
Код: Выделить всё
if(gg('Deepcool_RGB360.Голубой') == 1 || gg('Gauss_RGB_лампа.DeepSkyBlue') == 1) {
if(gg('Gauss_RGB_лампа.DeepSkyBlue') != 1) {
sg('Gauss_RGB_лампа.DeepSkyBlue', 1);
}
if(gg('Deepcool_RGB360.Голубой') != 1) {
sg('Deepcool_RGB360.Голубой', 1);
}
}
if(gg('Deepcool_RGB360.Синий') == 1 || gg('Gauss_RGB_лампа.Blue') == 1) {
if(gg('Gauss_RGB_лампа.Blue') != 1) {
sg('Gauss_RGB_лампа.Blue', 1);
}
if(gg('Deepcool_RGB360.Синий') != 1) {
sg('Deepcool_RGB360.Синий', 1);
}
}
.............и так далее по примеру
Криво, медленно, можно проще, но работать должно.
UPD! обновил, кода побольше, но нагрузка поменьше.