Что это и зачем это
Моя система позволяет мониторить различные датчики и управлять исполнительными устройствами. Изначально же, создавалась для удаленного мониторинга критически важных систем дома. Меня интересовала температура в определенных помещениях и состояние источника бесперебойного питания котла отопления (работает-ли от аккумулятора и на сколько этого аккумулятора еще хватит). Ну а так как вычислительная мощность применяемых контроллеров избыточна, то можно нагрузить их помимо датчиков температуры, еще и анализатором качества воздуха, или например, метеодатчиками чтобы наблюдать за погодой.
Из чего состоит и выбор компонентов
Система состоит из нескольких датчиков которые отправляют информацию о себе по WiFi
центральному контроллеру. Датчики собраны на контроллере esp8266. Центральный контроллер — любой компьютер, под управлением операционной системы из семейства линуксообразных, на котором поднята система Domoticz. В моем случае используется микро компьютер «BananaPi m2 Berry» с установленной Ubuntu. Если не требуется большого количества датчиков и не планируется передавать исполнительным устройствам команды, то центральный контроллер особо не нужен. Можно зарегистрировать свои датчики на сервисе «Народный мониторинг» https://narodmon.ru и наблюдать за ними из любой части света. Правда есть ограничения. Бесплатно можно зарегистрировать на сервисе всего два датчика и хранится история только за последний год.
Так как главной задачей было быстро создать некий прототип то и компоненты выбирались максимально простые но с максимальной обвязкой. Так, чтобы сильно паяльником не размахивать и не лезть в дебри программирования. Соответственно, все они избыточны для моего применения.
Профессионалы собрали бы тоже самое — дешевле.
Выбор Domoticz в качестве контроллера системы “умного дома” — импульсивный шаг. Взял что первое попалось под руку, и оно заработало “из коробки”. Есть нюансы, но данное приложение работает. Все что нужно, есть в стандартной поставке. Функционал легко (по крайней мере так пишут на форумах) можно допилить для своих нужд. Отельными нахлобучками, например, можно научить работать с некоторыми датчиками беспроводных метеостанций (которые работают на частоте 433.92Мгц), а также научить реагировать на сигналы беспроводных радио-звонков, радиопультов и т.п, работающих на этой частоте.
Короче, хватит словоблудства, теперь будут картинки.
Изготавливаем WiFi датчики.
И делаем следующее: в поле «Name» вводим название датчика (можно любое, у меня для примера вписано «hall»). В поле «Type» выбираем тип «Dummy» и жмем кнопку «Add»
После этого датчик появляется в списке датчиков. Внимательно смотрbм на поле «IDX» и запоминаем его (в данном случае, у датчика «hall» «IDX» равен «4»)
После, жмем «Create Virtual Sensors» у выбранного датчика и появляется такое окно.
Тут опять все просто, в поле «Name» вводим название сенсора (как он будет отображаться в списке наших датчиков). И выбираем тип сенсора (т.к. используется датчик температура+влажность+давление то у нас это будет «Temp+Hum+Baro»). Жмем «ОК», переходим на вкладку «Temperature» в Domoticz и можем полюбоваться на красивую картинку с датчика.
Вот только значений там пока не будет, т.е. все будет по нулям.
Так что переходим к следующему этапу — настройка ESP-датчика.
Этап 2:
Заходим на интерфейс датчика через веб-браузер, идем во вкладку Controllers и заполняем по аналогии, только своими данными. Если в Domoticz устанавливали пароль на вход, не забываем его указать. Так же, не забываем поставить галочку «Enabled»
Сохраняем и переходим во вкладку «Devices»
Смотрим столбец IDX и видим, что он не совпадает с тем, что запоминали у нашего датчика в Domoticz. Поэтому жмем кнопку Edit и переходим в настройки сенсора
Обязательно ставим галочку «Send to Controller». Вводим запомненный IDX датчика из Domiticz, сохраняем настройки. На всякий случай можно перезагрузить ESP.
Собственно, на этом все, если сделали все правильно и не забыли проставить нужные галочки, то через несколько секунд (иногда придется подождать пару минут) в Domoticz, во вкладке Temperature увидим текущее значение датчика. P.S. Если нажать «звездочку» у датчика, то он будет отображаться на главной странице Domoticz.
Собранный по такой же схеме переключатель стабильно работает у меня уже более полугода по протоколу Domoticz HTTP (на прошивке ESPEasy R120)
Текущий будет работать на ESPEasy Mega от 14.05.2018 по протоколу Domoticz MQTT
Плюсы:
- Обратная связь (всегда знаем статус — включен или выключен свет)
- Управление через абсолютно любой переключатель
- Если оставить свет включенным, и будет отключение электроэнергии, то при возобновлении реле будет выключено
- Даже при недоступности Domoticz и/или отсутствия wifi выключатель полностью работоспособен
- Сам выключатель не под напряжением, а под 3v логикой esp (безопасно и для детей, и для взрослых)
Минусы (монтажа):
- Необходимы ноль и фаза в подрозетнике
- Желателен глубокий подрозетник
Для меня это не минусы, так как у меня идет ремонт, и я сразу тяну 3-х жильный кабель к выключателями и устанавливаю вот такие глубокие (55мм) подрозетники:
Приступим к сборке.
Подключаем ESP с прошивкой ESPEasy к реле следующим образом:
ESP пин 3v3 к VCC реле ESP пин GND к GND реле ESP пин D6 (Gpio-12) к IN реле
В ESPEasy создаем переключатель Switch input — Switch для реле во вкладке Devices:
Приводим его к следующему виду:
Сохраняем.
Управляется реле командой (192.168.0.23 это адрес ESPEasy):
Включить: http://192.168.0.23/control?cmd=GPIO,12,1 Выключить: http://192.168.0.23/control?cmd=GPIO,12,0
или
Создаем переключатель Switch input — Switch для переключателя во вкладке Devices:
Имя: button Enabled: — галочка Internal PullUp: — галочка Inversed Logic: — пусто 1st GPIO: GPIO-14 (D5) (так же можно поставить D7, с boot state output low) Switch Type: Switch Switch Button Type: Normal Switch Send Boot state: — пусто (если активировать, то при загрузке esp синхронизирует реле с выключателем: если был свет включен, то при загрузке тоже будет включен, тогда можно убрать следующую строчку в Rules после On Rules#Timer=1 do: «gpio,12,0″) Send to Controller: — пусто IDX: — пусто Values Name: state
Сохраняем.
Подключим обычный (любой) переключатель света: от ESP пин GPIO-14 (D5 на NodeMCU) в разрыв переключателя и на GND ESP:
Включаем Rules в Tools> Advanced
Переходим на вкладку Rules и вставляем туда следующее:
Если используется протокол передачи Domoticz HTTP, то нижняя часть кода следующая:
Если используется протокол передачи Domoticz MQTT, то нижняя часть кода следующая:
Если выбрать у реле Send to Controller и прописать idx, то эту часть кода указывать не нужно, НО при недоступности контроллера (в нашем случае Domoticz) ESP будет жестко тупить, выключателем будет пользоваться невозможно (может включать реле по несколько секунд). Так же ESP будет тупить если использовать Domoticz HTTP без самого Domoticz. Именно поэтому удобнее использовать Rules и MQTT, а не Send to Controller для выключателей на базе ESPEasy.
Теперь при нажатии переключателя, будет меняться статус реле — включаться и выключаться.
В Domoticz добавляем Dummy переключатель:
И приводим его к следующему виду:
Действие при выключении:
Сохраняем. Теперь можно включать и выключать свет в Domoticz, а если переключить вручную через физический переключатель, статус в Domoticz обновится.
Весь этот набор отлично вмещается в глубокие подрозетники
Используемые источники:
- https://imhodom.ru/samodelnaya-sistema-domashnego-monitoringa-iz-kaftanchikovo/
- https://kvvhost.ru/2018/05/17/switch-on-esp8266-espeasy/