Logrus

<<< Назад

Управление подсветкой на шлюзе Сяоми

устаревший вариант, последняя более простая для пользователя реализация - https://connect.smartliving.ru/tasks/288.html

Переработаный (чутка) скрипт от Сергея
В сойствах RGB создаем свойство brightness
В модуле xiaomihome следуем настройкам на скрине

Скрипт gateColorAction

if (isset($params['color'])) {
 //sg('Rgb01.color', $params['color']);
 cm('Rgb01.setColor', array('color'=> $params['color'])); //Устанавливаем цвет по требованию
 setTimeout('xiColorReset', 'runScript(\'gateColorAction\');', 5); //Устанавливаем вызов скрипта через 5 сек.
 return;
} elseif (gg('NobodyHomeMode.active') == 1) { //Никого нет дома
 $color = '000000';
 //sg('Rgb01.color', $color);
 cm('Rgb01.setColor', array('color'=> $color)); //Выключаем подсветку
} elseif (gg('NobodyHomeMode.active') == 2) { //Все спят
 $color = 'ff8c00';
 //sg('Rgb01.color', $color);
 cm('Rgb01.setColor', array('color'=> $color));
 if (gg('Rgb01.brightness') != 25) {
  sg('Rgb01.brightness', 25); //Яркость
 }
} else {
 $color = '00ff00';
 $redFound = 0;
 $systemColor = gg('System.stateColor');
 if ($systemColor == 'red') {
  $color = 'ff0000';
  $redFound = 1;
 }
}
 if (!$redFound) {
 $states = array('System', 'Communication');
 foreach($states as $state) {
  if (gg($state . '.stateColor') == 'yellow') {
   $color = 'ffaa00';
  }
 }
 //sg('Rgb01.color', $color);
 cm('Rgb01.setColor', array('color'=> $color)); //Устанавливаем цвет в соответствии с условиями выше
 if (gg('Rgb01.brightness') != 50) {
  sg('Rgb01.brightness', 50); //Яркость
 }
}
setTimeout('xiColorReset', 'runScript(\'gateColorAction\');', 60); //Устанавливаем вызов скрипта через 60 сек.

Пример установки цвета по требованию

runScriptSafe('gateColorAction', array('color'=> ff8000));

или со средней температуры по квартире (из метода перевода температуры в цвет от Багира)

runScriptSafe('gateColorAction', array('color'=> $hcolor));

сам метод TempHEX (привязан на изменение свойства)

$x = $this->getProperty('TempAvg');

if ($x < 12) {$x = 12;} elseif ($x > 30) {$x = 30;} 

//расчет величины цветовой шкалы
$x = round(($x-12) * 42, 5);

//$hcolor = '#';

//расчет r
$y = $x - 255;
if ($y < 0) {$y = 0;} elseif ($y > 255) {$y = 255;}
$y = dechex($y);
if (strlen($y) == 1) {$y = '0' . $y;}
$hcolor = $hcolor . $y;

//расчет g
$y = 255 - $x;
if ($y < 0) {$y = 0;} elseif ($y > 255) {$y = 255;}
$y = dechex($y);
if (strlen($y) == 1) {$y = '0' . $y;}
$hcolor = $hcolor . $y;

//расчет b
$y = 765 - $x;
if ($y < 0) {$y = 0;} elseif ($y > 255) {$y = 255;}
$y = dechex($y);
if (strlen($y) == 1) {$y = '0' . $y;}
$hcolor = $hcolor . $y;

//установить свойство цвета температуры
$this->setProperty('TempHEX', $hcolor);

//callMethodSafe('Data.absoluteHumidity');
runScriptSafe('gateColorAction', array('color'=> $hcolor));

Полезное:
БЗ

Обсуждение (2) (8)

Смотрите так же:
10.01.2021 DROP_TABLE
07.05.2020 Телеграмм. Полезное
30.06.2019 Телеграмм. Меню - управление группами ПУ
29.06.2019 Телеграмм. Меню - запуск скриптов (сценариев)
21.10.2018 Настройки громкости
07.10.2018 Примеры кода
25.09.2018 Телеграмм. pChart
02.05.2018 Класс SOpenClose метод logicAction (по-русски "Входная дверь")
05.04.2018 Шаблон отображения в классе "Users"
02.12.2018 Режим "Никого нет дома"

Нижний Тагил, Россия

На форуме: Logrus