Еще раз об автоматизации освещения
Добавлено: Вс май 20, 2018 8:07 pm
Доброго времени суток. Есть задача автоматизировать управление освещением, основной код работает, но есть одно "НО"...
Система "живет" на raspberry pi 3, в системе присутствует модуль MegaD и с десяток NodeMCU (там, где кабель уложить невозможно) с прошивкой Wifi-IOT.
В системе существует один сенсор освещенности (Sensor_light01), согласно показателям которого в сумеречное и темное время суток в кабинетах по движению должен загораться свет. Каждый кабинет (в зависимости от расположения) калибруется отдельно, согласно текущей освещенности в нем (но все относительно показателей сенсора).
Код для датчиков движения получился следующий:
Все работает хорошо, но до того момента, как нужно включить свет с помощью выключателя или браузера (бывают случаи, когда нужно, чтобы он просто горел без автоматики). В данном же случае, каким бы способом свет не включался - при появлении движения в комнате запускается таймер.
На ум приходит добавить проверку состояния выключателя - если он уже включен - то скрипт не выполняется, и соответственно не запускается таймер и нет авто отключения. Для этого в первую строчку казалось бы логичным добавить следующее: - но в таком случае система совсем перестает выполнять данный скрипт. Пробовал разные вариации с AND и т.д.
Подскажите пожалуйста как правильно прописать 2 условия в этой ситуации.
Система "живет" на raspberry pi 3, в системе присутствует модуль MegaD и с десяток NodeMCU (там, где кабель уложить невозможно) с прошивкой Wifi-IOT.
В системе существует один сенсор освещенности (Sensor_light01), согласно показателям которого в сумеречное и темное время суток в кабинетах по движению должен загораться свет. Каждый кабинет (в зависимости от расположения) калибруется отдельно, согласно текущей освещенности в нем (но все относительно показателей сенсора).
Код для датчиков движения получился следующий:
Код: Выделить всё
if (getGlobal("Sensor_light01.value") > 100) {
if (getGlobal("Motion03.status")) {
callMethod("Relay05.turnOn");
setTimeOut("svet2", "callMethod('Relay05.turnOff');",10);
}
}
На ум приходит добавить проверку состояния выключателя - если он уже включен - то скрипт не выполняется, и соответственно не запускается таймер и нет авто отключения. Для этого в первую строчку казалось бы логичным добавить следующее:
Код: Выделить всё
&& (getGlobal("Relay05.status") == 0) {
Код: Выделить всё
&& if (getGlobal("Relay05.status") == 0) {
Подскажите пожалуйста как правильно прописать 2 условия в этой ситуации.