Подсветка шлюза привязана к объекту класса SRGB. В нем есть свойства color и brightness. Brightness работает вполне корректно и предсказуемо, а вот color нет.
Если устанавливать color прямо в свойстве объекта в панели управления, то шлюз загорается указанным цветом, brightness автоматически устанавливается в этом случае в 100, все хорошо.
А если пробовать установить цвет в коде, например в методе "motionDetected" датчика движения, то начинается что-то непонятное.
Поведение, которое пробовал настраивать:
При срабатывании датчика открытия входной двери в темное время суток включается белый цвет, яркость 100, через 2 мин тухнет.
При срабатывании датчика движения если уровень освещенности < 10 lux, то включать синий цвет, яркость 20 на 1 минуту.
Синий цвет включаю таким кодом:
Код: Выделить всё
setGlobal('GatewayLight.brightness', "20");
setGlobal('GatewayLight.color', "0000FF");
Код: Выделить всё
setGlobal('GatewayLight.brightness', "100");
setGlobal('GatewayLight.color', "FFFFFF");
Проблема в том, что сначала вне зависимости от задания цвета включался все время белый. Пробовал разными способами. В том числе и так:
Код: Выделить всё
callMethod('GatewayLight.setColor',array("color"=>'blue'));
Код: Выделить всё
setGlobal('GatewayLight.color', "0000FF");
SetTimeOut("lightOffTimer","setGlobal('GatewayLight.brightness', '50');", 15);
то работает нормально, сначала загорается синим, потом через 15 сек тускнеет
Потом через какое-то время экспериментов шлюз начал всегда загораться синим, даже если дверь открыть, хотя при открытии двери прописан белый цвет.
Полный код методов на текущий момент:
Метод motionDetected:
Код: Выделить всё
if (getGlobal('MotionSensor1.lux') < 10 ) {
setGlobal('GatewayLight.color', "0000FF");
setGlobal('GatewayLight.brightness', "20");
clearTimeOut("lightOffTimer");
SetTimeOut("lightOffTimer","setGlobal('GatewayLight.brightness', '0');", 60);
}
Код: Выделить всё
if (getGlobal('isDark')=="1" && getGlobal('MainDoor.status')=="0") {
setGlobal('GatewayLight.color', 'FFFFFF');
setGlobal('GatewayLight.brightness', '100');
clearTimeOut("lightOffTimer");
SetTimeOut("lightOffTimer","setGlobal('GatewayLight.brightness', '0');", 60 * 2);
}