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).

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

Для управления светодиодом используются команды, описанные тут. Например, "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 в исходниках) и при изменении доп-входа, если он используется.