MQTT клиент (обновлено: 23 Feb 2024, 12:53:36)

Клиент протокола MQTT. Двухсторонний обмен данными. Управление модулем. Не требуется "белый" IP адрес для управления. Для ESP8266 noOS рекомендуемый SDK 1.5.1 и выше, если имеются проблемы со связью.
Данная опция отправляет каждую метрику в отдельном топике, если вам требуется json формат ,то вместо этой опции включаем опцию MQTT JSON.


MQTT (Message Queue Telemetry Transport)  - упрощённый сетевой протокол, работающий поверх TCP/IP. Используется для обмена сообщениями между устройствами по принципу издатель-подписчик.

Информация на брокере MQTT публикуется в элементах-топиках, которые в простейшем виде имеют вид login/hostname/метрика,
где:

login- логин или emal, который используется для доступа к MQTT брокеру(серверу). Указывается на вкладке настроек Servers. Там же указывается пароль, если он требуется

hostname - имя модуля, настраивается на вкладке настроек Main.

метрика - имя датчика или устройства, а так же номер GPIO.

Пример: mylogin/dacha/dsw3 - в этом топике публикуются показания третьего датчика DS18b20 с модуля с именем dacha, который использует логин mylogin для публикации на брокере.

Важно: В адресе топика в MQTT нет корневого слэша, то есть всегда пишется login/hostname/sensor, а не /login/hostname/sensor

Нельзя называть модуль (hostname) русскими буквами - иначе возможны проблемы в работе MQTT.

Настройка опции на модуле

На вкладке servers требуется ввести IP адрес или доменное имя  MQTT сервера, указать порт и интервал отправки данных, включить опцию. Рекомендуется перезагрузить модуль после настройки или изменения настроек.

Пример ввода адреса: 192.168.1.100 , или mqtt.wifi-iot.com .


Новый MQTT  (для RTOS прошивок ESP8266/ESP32 и Linux)

Данная опция использует mqtt из SDK. Опция поддерживает несколько вариантов подключения. Требуется указывать префикс перед адресом:

mqtt:// - стандартное подключение

ws:// - websocket режим.

mqtts:// - стандартное подключение, но с ssl 

wss:// -websocket режим, но с ssl

Пример mqtt://mqtt.wifi-iot.com или ws://mqtt.wifi-iot.com для websocket режима

SSL должен поддерживается сервером. Обычно для него используется отдельный порт.

Возможна работа через сертификаты TLS, загружаемые из SPIFFS, но функция не активирована.


Дополнительные опции:

                                      для ESP8266    


                

                               для ESP32/ESP8266RTOS


MQTT Lite Mode - короткие топики, без включенной настройки топики будут иметь более длинный вид с текстом login/hostname/sensors/xxx и login/hostname/gpio/xxx. Рекомендуемая опция.

Дополнительный буфер MQTT - необходимо установить объем памяти зарезервированный под MQTT в случае, если не все метрики видно на брокере. Расчет примерно 50 байт на каждую метрику. Опция уменьшает размер свободного ОЗУ модуля. Конструктор прошивки автоматически рассчитывает размер буфера, но иногда его может не хватать (для ESP8266(NoOS)).

Отдельный топик на запись - добавляет ко всем топикам на запись путь set. Пример:  login/hostname/set/gpio5  - для записи,  login/hostname/gpio5  - для чтения. Во избежание срабатывания от эхо - рекомендуемая опция.  Без включенной опции метрики  и на запись и чтение будут вида login/hostname/gpio5

Retain на все - все топики модуля будут иметь флаг retain , все подключаемые клиенты будут получать значения топиков сразу при подключении.

Длинный пароль - это исправление для увеличения размера поля для пароля больше 10 символов для ESP8266(NoOS). "Ломает" все настройки, если изначально не была включена опция NVS. 

Свой корневой топик - вместо login/hostname/sensor (описанного в данной документации) будет использоваться путь свой_текст/sensor, который установлен в настройках модуля. Можно делать вложенные топики. Длина до 63 символов.

Статус подключения MQTT

На сервисной вкладке http://[ip_adr]/debug можно узнать статус подключения к серверу MQTT.

Для ESP8266(NoOS):

Пример: MQTT IP: 192.81.221.198 State: 15 / Errors: 1

Что значит модуль подключен  к серверу IP адресом 192.81.221.198. Статус подключения 15, количество переподключений - 1.

Статус может принимать несколько вариантов:

15 - подключение успешно. Данные должны передаваться.

6 - ошибка, возможно не верный логин/пароль.

7,8 - ошибка подключения, сбой, исправляется обычно перезагрузкой модуля. Редкая проблема, но бывает, например, если сервер отключался.

Для RTOS прошивок:

Отображает счетчик переподключений и текущее состояние подключения.

Ограничения в MQTT

В Free варианте нельзя управлять устройством, интервал отправки фиксирован на 600 секундах.

Ограничение длины поля логина у ESP8266(NoOS)- 20 символов, пароля - 10 символов. В данный момент увеличить длину пароля можно  через дополнительную настройку в шестеренке опции, но это испортит настройки модуля из-за смещения структуры параметров если не используется опция NVS2.

При изменении настроек MQTT сервера, логина, пароля или имени устройства рекомендуется перезагрузка устройства.

VDD у ESP8266 не передается.

В safe mode у ESP8266(noOS) MQTT не работает.

Сервисные MQTT команды:

login/hostname/[set/]system/restart - перезапуск модуля.

login/hostname/[set/]system/upd - обновление по OTA.

login/hostname/[set/]system/aupd - обновление по Auto OTA.

В данные топики нужно отправить цифру 1.

set/ добавляется (без скобок), если включены отдельные топики на запись.


Поддержка работы с Home Assistant(тестовая опция)

Для работы с Home Assistant(HA) требуется включить в шестеренке опции соответствующую галку.

Требуется указать в настройках модуля ip адрес HA, логин и пароль созданного пользователя. Перезагрузить после настройки через 10 секунд.

Устройство обязательно должно быть названо только английскими буквам, никаких русских букв !

После запуска модуля в течении 30 секунд в системе Home Assistant должны появится все метрики. После добавления датчиков/GPIO для их появления в HA требуется так же перезагрузка модуля.

Поддерживаемые типы данных: датчики, GPIO на вход/выход, камера. 


MQTT GET

Это надстройка включается в шестеренке опции установкой количества необходимых метрик. Установка значения в ноль выключает эту опцию.

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

Для приема метрик необходимо на вкладке MQTT GET веб интерфейса указать полный путь топика к необходимым данным, а так же таймаут(интервал) , при котором будет считаться, что данные не дошли, максимальное время 2550 сек. Метрики опции доступны стандартно в системах модуля (см вкладку Metrics).

Опция при установленном большом колестве метрик занимает достаточно много ресуров модуля, особенно ОЗУ. Не стоит устанавливать количество метрик с большим запасом.


MQTT серверы (брокеры):

clusterfly.ru - бесплатный брокер. Группа Телеграм https://t.me/clusterfly_ru 

wqtt.ru - платный брокер, поддержка управления через Алису. Группа Телеграм https://t.me/wqtt_ru 

dealgate.ru  - бесплатный брокер, поддержка управления через Алису и WhatsApp. Поддержка сценариев.

При проблемах в работе данных сервисов необходимо обращаться в их поддержку, проект wifi-iot не имеет к ним отношения. Перед обращением убедитесь, что логин, пароль и другие параметры введены верно и на модуле доступен интернет.


Android приложения, совместимые с проектом:

Mqtt IoT - Автор Dolfik. WIKI.

MQTT Dash - Автор Routix.

Linear MQTT Dashboard - Автор Ravend. WIKI.


Таблица метрик:

Внимание ! Имена некоторых метрик поменялись с 6.02.21 !! Новые имена можно посмотреть на вкладке Metrics на самом модуле. 

Текущие топики можно посмотреть, подписавшись на все топики login/hostname/#