Logrus

<<< Back

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

Переработаный (чутка) скрипт от Сергея
В сойствах 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));

Полезное:
БЗ

Discuss (2) (3)

See also:
2018-06-21 Каталог ссылок
2018-06-10 Меню
2018-07-08 mail()
2018-05-04 Режим "EnergyTariffMode"
2018-05-02 Класс SOpenClose метод logicAction (по-русски "Входная дверь")
2018-04-22 Программы
2018-04-19 Пользовательские функции
2018-04-11 Шаблон отображения в классе "ExchangeRates"
2018-04-05 Шаблон отображения в классе "Users"
2018-04-05 Режим "Никого нет дома"
2018-02-25 Бэкап и обслуживание системы

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

На форуме: Logrus