LazyRolls

MQTT протокол

MQTT - протокол обмена данными между устройствами в сети. Удобен для обмена данными между датчиками и устройствами управления, телеметрии. Часто применяется в системах "умный дом".

Поддержка MQTT добавлена в прошивку LazyRolls начиная с версии 0.06. Используется библиотека Adafruit MQTT Library. С версии 0.09 библиотека заменена на PubSubClient. Для компиляции прошивки из исходников в Arduino IDE, нужно установить эту библиотеку через менеджер библиотек.

Для работы требуется MQTT-брокер. Можно использовать установленный локально в сети, например, Mosquitto.

Настройки MQTT протокола

MQTT включен

Включение/отключение MQTT. При отключении соединение с MQTT-брокером не устанавливается, статус не публикуется. При включении соединение устанавливается, в случае проблем со связью, попытки соединения совершаются каждые 10 секунд.

Сервер, порт

IP-адрес или имя хоста MQTT-брокера и порт. Порт, обычно, 1883.

Логин, пароль

Если у MQTT-брокера включена авторизация пользователей, нужно указать соответствующие логин и пароль. Если брокеру они не требуются, поля можно оставить пустыми. Ранее установленный пароль, в целях безопасности, не отображается.

Keep-alive

Время в секундах, между пинг-запросами. Минимальное значение 5 секунд. Для контроля соединения с брокером, при отсутствии передачи данных, требуется посылать пинг-запросы, иначе брокер отключает клиента. Зависит от настроек брокера. Обычно достаточно значения 45-60 секунд. Возможно увеличить интервал для снижения нагрузки на сеть, но брокер может начать отключать из-за неактивности.

Команды

Название топика, на который подписываются шторы. Через этот топик можно управлять шторой и, начиная с версии 0.08, светодиодом.

Можно использовать %HOSTNAME% для автоматической подстановки сетевого имени шторы, заданного в настройках шторы.

Если нескольким шторам задать идентичный топик для команд, они будут выполнять их синхронно.

В качестве команд можно присылать: число от 0 до 100 - желаемый процент открытия шторы ([v0.09+] Проценты можно инвертировать в настройках, вместо процента открытия будет процент закрытия.); "stop" - остановить движение; "on" и "off" - команды на открытие и закрытие шторы, соответственно. Логика такая: on - включить свет из окна, off - заблокировать.

[v0.09+] "open" и "close" (эквивалентно on и off). "stop" - остановка.

[v0.09+] Команда "=NNNNN" - точное позиционирование шторы в шагах. "@N" - переход к предустановленному положению N (от 1 до 5). Сами положения задаются в настройках. "%NNN" - переход к указанному проценту, то же самое, что и просто число.

[v0.12+] "click" и "longclick" ([v0.13+] "click2" и "longclick2" для второй кнопки) - делают то же самое, что и кнопка управления. Для работы этих команд, подключать аппаратную кнопку не обязательно, достаточно выбрать в настройках действие.

[v0.14+] "endstop" - эмулирует срабатывание концевика, например, zigbee датчиком открытия двери. "report" - сообщает по MQTT свой статус.

[v0.15+] "zero" - сброс текущего положения шторы для поиска нуля заново. "reboot" - перезагрузка.

Для управления светодиодом используются команды, описанные тут. Например, "led_blink" для однократного мигания.

Статус

Название топика, через который шторы сообщают об изменении состояния. Не должен совпадать с топиком из "команд".

Можно использовать %HOSTNAME% для автоматической подстановки сетевого имени шторы, заданного в настройках шторы.

Формат

О своём состоянии шторы могут сообщать в разных форматах.

"0-100 (%)" - при изменении положения шторы будут сообщать числом, соответствующим текущей степени открытия, в процентах. [v0.09+] Проценты можно инвертировать в настройках, вместо процента открытия будет процент закрытия.

"ON/OFF" и "0/1" - сообщение публикуется сразу после получения команды на открывание или закрывание. "0" и "OFF" соответствуют закрыванию. Промежуточные состояния расцениваются как меньше половины длины шторы (открыто) или больше половины (закрыто).

"JSON" - состояние отправляется при изменении положения в JSON-формате. Например: {"state":"ON", "position":"10"} - штора открыта на 10%. С версии 0.08 добавился элемент {..., "destination":"10"} - в какое положение движется штора. Во время движения position не равно destination.

Живой/Alive [v0.10+]

Название топика, через который шторы сообщают об изменении подключения к сети и MQTT-серверу. В этот топик отправляются строки "online" и "offline". Home Assistant отображает привод как недоступный, при потере связи или выключении привода. Можно поставить "-" для отключения данного типа сообщений.

Инвертировать проценты [v0.09+]

При включенном инвертировании процентов, меняется значение процентов в статусах и коммандах MQTT на противоположное. 0% становится равно полностью закрытой шторе, а 100% - полностью открытой. Это не влияет на команды "открыть" и "закрыть", управление по http и расписание.

Home Assistant MQTT discovery [v0.09+]

Включает автоматическое добавление шторы в Home Assistant. Для этого должно быть включено и настроено подключение к MQTT, выбран формат 0-100% для статусов и установлена интеграция MQTT в Home Assistant'е. Всё остальное настраивается автомагически.

Инфо/Info [v0.11+]

Топик, в который сообщается состояние привода в JSON-формате. Пример сообщения: {"ip": "10.0.2.180", "rssi": "-74", "uptime": "0d 00:02", "voltage": "15.4", "aux": "ON"}. Можно поставить минус (-) для отключения данных сообщений. Состояние отправляется каждые 5 минут (константа MQTT_INFO_SECONDS в исходниках) и при изменении доп-входа, если он используется. [v0.14+] запросить текущее состояние можно отправив "report" в топик команд. [v0.14+] в JSON сообщение добавлено поле "last_restart_time" - время последней перезагрузки привода в формате unixtime.