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) (6)

Смотрите так же:
30.06.2019 Телеграмм. Меню - управление группами ПУ
29.06.2019 Телеграмм. Меню - запуск скриптов (сценариев)
21.10.2018 Настройки громкости
07.10.2018 Примеры кода
29.09.2018 checkState
25.09.2018 pChart
24.09.2018 Уход за базой данных
21.06.2018 Каталог ссылок
10.06.2018 Меню
08.07.2018 mail()
04.05.2018 Режим "EnergyTariffMode"
02.05.2018 Класс SOpenClose метод logicAction (по-русски "Входная дверь")
22.04.2018 Программы
19.04.2018 Пользовательские функции
11.04.2018 Шаблон отображения в классе "ExchangeRates"
05.04.2018 Шаблон отображения в классе "Users"
02.12.2018 Режим "Никого нет дома"
25.02.2018 Бэкап и обслуживание системы

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

На форуме: Logrus