1-wire контроллер Умного Дома (Поддержка протоколов MQTT, UDP, Websocket)

version: 1.1 21.01.2020

Прошивка разработана на базе предыдущего проекта. Как и в предыдущем проекте основная цель контроллера - это автономность и самодостаточность для простых случаев автоматизации (без использования дорогих внешних контроллеров). Добавился web интерфейс по настройке устройства. Технологически интерфейс представляет собой web-приложение, которое хранится в расширенной памяти устройства ESP8266, данное приложение взаимодействует с основным приложением, которое работает в самом устройстве, по протоколу websocket. Данный факт позволяет взаимодействовать с устройством в режиме DIY, т.е. вместо web-приложения может быть любая пользовательская система. Формат данных, который используется в обмене - JSON. Контроллер может быть использован как шлюз для доступа к устройствам на шине 1-wire по протоколам WebSocket и UDP, формат данных при этом остается одинаковым. Контроллер может быть использован как автономное устройство управления, так и в составе более сложной системы такой как OpenHab. В системе может быть нескольких контроллеров в одном сегменте Wi-Fi сети, каждый контроллер является равноправным по отношению к другим, каждый контроллер получает информацию о всех подключенных датчиках и исполнительных устройствах от соседних контроллеров.

Под данный проект разработана плата устройства, которая включает:

  • Электромагнитное реле - 2 шт;
  • Цифровой вход сенсор/счетчик - 2 шт;
  • светодиодный сегментный дисплей (4 сегмента) + три кнопки управления;
  • вольтметр до 5 вольт;
  • адаптер (мастер) шины 1-wire на базе чипа DS2482S-100.

Устройство можно увидеть на картинках, в текущей версии используется готовый корпус, который доступен в продаже. Устройство можно устанавливать в электрощиток, а дисплей крепить к лицевой дверке ящика.

         
  • Sensor C - вход датчика/счетчика канал C, нормальное состояние соответсвует высокому (1) уровню TTL, подключаемые датчики должны формировать нулевые (0) импульсы.
  • Sensor D - вход датчика/счетчика канал D.
  • +5V - от устройства питания.
  • +5P - линия питания до устройства бесперебойного питания (UPS). Если устройство UPS отсутвует в системе, то выходы питания нужно соединить вместе. Вход Sensor D совмещен с датчиком напряжения питания. В случае пропадания питания на время более чем 20 секунд, контроллер перейдет в энергосберегающий режим работы (отключится wi-fi), напряжение +5 вольт будет поддерживаться только на выходе шины 1-wire и будет работать вход Sensor С. После появления напряжения на входе +5P, контроллер перейдет в нормальный режим работы.
  • ADC - вход АЦП до +5 вольт.
  • 1-wire - выход линии 1-wire.

Контроллер предполагает расширение аппаратного функционала по шине 1-wire, на первом этапе (текущем) поддерживаются устройства:

  • датчик температуры DS18B20
  • switch/sensor DS2413 (подключение сенсоров и исполнительных устройств-реле)
  • iButton устройства TM1990A

Максимально возможное количество подключенных устройств к контроллеру по шине 1-wire ограничено числом 32.

Запланировано поддержка других устройств для шины 1-wire и развитие функционала самой прошивки. Прошивка включает автообновление новых версий через интернет.

На светодиодном индикаторе можно просмотреть состояние всех подключенных датчиков. При изменении температуры или состояния датчика, индикатор замигает и покажет номер и значение этого датчика.

С помощью кнопок можно управлять заданными в приложении реле по умолчанию или путем выбора средней кнопкой нужного модуля реле на шине 1-wire верхняя кнопка включает/отключает реле канала A, а нижняя включает/выключает реле канала B. В приложении по настройке устройства можно выбрать релейный модуль, которым будут управлять кнопки по умолчанию.                                                  

При первоначальном включении устройства, оно находится режиме AP-точки доступа WiFi, так что пользователь может подключиться к нему со смартфона и произвести первоначальные настройки для подключения к домашней WiFi сети, пароль доступа - password. Если смартфон при подключении не перешел на страницу конфигурации домашней сети wi-fi, то необходимо в браузере зайти на страницу http://192.168.4.1/config
В дальнейшем на устройство можно заходить любым интернет-браузером по адресу вида http://ow-XXXXXX.local, где XXXXXX - уникальный номер устройства.

Сетевое взаимодействие по протоколу UDP

Для расширения системы поддерживаетя взаимодействие контроллеров между собой в одной локальной Wi-Fi сети. Значения подключенных датчиков, реле и сенсоров передаются по протоколу UDP методом broadcast по порту 7777 (по умолчанию, который можно изменить). Каждый контроллер является равноправным по отношению друг другу. В приложении по настройке можно видеть все контроллеры-соседи (neighbors). В приложении можно переключаться между контроллерами и настраивать их по отдельности. Таким образом можно автоматизировать отдельные зоны контроля/управления и осуществлять взаимодействие между ними, так-же без участия внешних контроллеров.

Возможности прошивки можно увидеть в демо-приложении - esp.1vp.ru. ( Действующая версия приложения отличается от демонстрационной! )                                                                                                                             

MQTT

К данному варианту настройки из демонстрационного приложения соответсвует mqtt-панель для смартфона (скриншет ниже). В основном, mqtt-панель служит для мониторинга настроенных в приложении исполнительных устройств, но можно вмешиваться в автоматический режим работы реле. Если какое либо реле остается не настроенным, то им можно управлять только в ручном режиме с помощью mqtt панели или посредством DIY режима, по протоколу websocket или UDP. MQTT топики, которые используются контроллером можно увидеть в web-интерфейсе по его настройке нажав на иконку "MQTT topics" у каждого из управляемых устройств. Publish и Subscribe топики - это для контроллера, т.е. для клиента (mqtt-панели) нужно настраивать наоборот: Subscribe и Publish. Существует команда "sync", если ее отправить устройству в корневой топик вида: "/1vp.ru/esp8266/XXXXXX/" на любой контроллер из нескольких (neighbors), то устройства сразу ответят всеми топиками. Все контроллеры можно представить как в одной MQTT-панели так и в нескольких.



Реализована web-панель, которая позволяет использовать любой планшет в качестве панели "умного дома" ( http://ow-XXXXXX.local/panel.html ). Панель можно сохранить на главной странице планшета как приложение. Панель позволяет разместить дополнительные виджеты, такие как обновляемые картинки с камер видео-наблюдения, погодные информеры и другое. Скриншет ниже на картинке:



Далее следует описание функций, которые могут быть настроены для любого реле (исполнительного устройства) в системе.                         

Реле времени

Реле времени может быть использовано для включения какой либо нагрузки в определенный промежуток времени. Для задания моментов включения и/или выключения реле используются записи в формате CRON, данный формат задания моментов времени выбран из-за своей универсальности и лаконичности записи.

Реле времени, режим Astro

Для случая включения освещения в темное время суток предусмотрен данный режим работы. Работа реле будет привязана к астрономическим часам, к моментам восхода и захода солнца. В момент восхода солнца реле будет отключаться, а в момент захода включаться или наоборот, если включить опцию инверсии режима. Необходимо будет задать географические координаты вашего местоположения и времени поправки в минутах относительно моментов восхода и заката. Точное время срабатывания реле будет рассчитываться: время восхода +(плюс) время поправки и время заката -(минус) время поправки(смещения). Так же можно задать и значения включения и/или выключения для обычного режима "реле времени". Тогда результирующее состояние реле будет результатом двух условий по логической операции "И", т.е. реле времени будет в состоянии включено по астрономическому времени И в заданные моменты времени.

Термостат

Термостат по алгоритму температурного гистерезиса c двумя температурными границами (нормальной и высокой). Нормальная граница задает температуру, которую нужно достигнуть включив нагрузку и выключить, достигнув температуры +(плюс) температуры гистерезиса. Верхний диапазон, рассчитан для случая когда нужно снова включать нагрузку, когда достигнута верхняя граница температуры и выключить, когда температура снизилась на величину высокого гистерезиса.

Термостат (PID-регулятор)

Данный режим работает по алгоритму PID контроллера (proportional–integral–derivative controller). Данный алгоритм обеспечивает более точное поддержание температуры в отличии от алгоритма температурного гистерезиса.

На картинке можно наблюдать эффект на различных значениях параметров PID алгоритма. По дефолту заданы следующие значения: Kp=2.0 Ki=5.0 Kd=1.0, длительность одного цикла выбрана 960 секунд (16 минут), ввиду большой инерционности систем отопления (значения настраивается). Параметры можно подбирать экспериментальным путем. Длительность рабочего цикла (включенного состояния реле) рассчитывается алгоритмом. В настройки вынесены минимальное время рабочего цикла, т.к. нет смысла включать двигатель отопления или газовый котел на слишком короткий интервал времени и максимальное время, выше которого реле будет постоянно включенным, опять же нет смысла отключать систему отопления на слишком короткое время.

Модуль термостата в режиме PID контроллера посылает mqtt-топик со значением процента длительности рабочего цикла работы алгоритма, что можно интерпретировать как процент мощности работы управляемого устройства (например, газового котла) в текущий момент времени.                       

В обоих режимах термостата можно задавать моменты времени и устанавливать необходимые целевые температуры, так-же в формате CRON.

Реализован режим управления мощностью с несколькими реле. PWR-режим позволяет подключать мощность состоящую из нескольких нагрузок (например, нагревательные тэны). Процент подключаемой минимальной мощности и шагом зависят от количества подключенных реле для данного режима. Например, два реле, позволяют реализовать шаг в 33% мощности и 4 градации (0%, 33%, 66%, 100%). Три реле - 14.3% и 8 градациий и так далее. Колличество градаций это 2 в степени количества реле. Данный режим подразумевает подключение нагрузок разной мощности. Возможен так-же вариант подключение нагрузок одинаковой мощности (Linear mode).

Цифровой сенсор

В данном режиме реле будет включать или выключать нагрузку в зависимости от состояния цифрового датчика, который подключается через устройство по шине 1-wire на основе микросхемы DS2413. Если необходимо просто скопировать состояние какого-либо реле или включить или выключить нагрузку на заданный интервал времени в зависимости от состояния другого реле в системе.

Сенсор напряжения

Состояние реле включается или выключается в зависимости от уровня напряжения на входе датчика-вольтметра.                                                                                                

iButtons

Реле срабатывает на установленное время в секундах, если приложить "таблетку"-ключ к считывателю, который можно подключить к шине 1-wire. Если длительность включения установить в ноль, то реле будет работать как триггер, ключ будет переводить реле из одного состояния в другое. Подходят любые электронные ключи совместимые с DS1990A.



Контроллер можно заказать за 2900 рублей.                                                                                                                                                      

продолжние следует ...