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