MQTT клиент (обновлено: 05 Jul 2020, 09:13:53)

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

Тестируется новая версия MQTT клиента на RTOS прошивках !!! Включается в дополнительных настройках

6.01.20 - произведена оптимизация кода приема команд модулем, возможны ошибки !!! Сообщать о проблемах в чате(Telegram)


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

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

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

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

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

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

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

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

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

                                      для ESP8266    


                

                               для ESP32/ESP8266RTOS


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

fix 2.05.16 - исправление для стабильности работы MQTT (для ESP8266).

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

Отдельный топик на запись  email/hostname/set/output5  - для записи,  email/hostname/output5  - для чтения.

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

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

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

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

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

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

wss:// -websocket режим, но с ssl (не протестировано)

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

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

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

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

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

Для ESP8266:

Пример: 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- 20 символов, пароля - 10 символов. В данный момент увеличить длину пароля можно  через дополнительную настройку в шестеренке опции, но это испортит настройки модуля из-за смещения структуры параметров.

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

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

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

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

email/hostname/system/restart - перезапуск модуля.

email/hostname/system/upd - обновление по OTA.

email/hostname/system/aupd - обновление по Auto OTA.

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

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

mqtt.wifi-iot.com, порт: 1883

mqtt.flymon.net, порт: 1883

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

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

MQTT Dash - Автор Routix.

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


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

Topic Description
email/hostname/hostname Имя устройства
email/hostname/freemem Свободное ОЗУ
email/hostname/ver Версия и дата сборки прошивки
email/hostname/uptime Время работы
email/hostname/rssi Уровень сигнала (нет на старых SDK)
email/hostname/vdd Напряжение питания (ESP8266)
email/hostname/apdsc APDS9960 Освещенность
email/hostname/apdsr APDS9960 Освещенность красный
email/hostname/apdsg APDS9960 Освещенность зеленый
email/hostname/apdsb APDS9960 Освещенность синий
email/hostname/thermo_setX Установка термостата
email/hostname/thermo_enX Состояние термостата вкл/выкл
email/hostname/ccsco2 CO2 датчика CCS811
email/hostname/ccstvoc TVOC датчика CCS811
email/hostname/lorsXY Метрики LORA
email/hostname/rtd MAX31865 Температура
email/hostname/hdct Температура датчика HDC1080
email/hostname/hdch Влажность датчика HDC1080
email/hostname/pmspm10 PM1.0
email/hostname/pmspm25 PM2.5
email/hostname/pmspm100 PM1.00
email/hostname/vl53l0x Расстояние VL53L0X
email/hostname/mbYYXX ModBus метрики
email/hostname/as5600 Угол AS5600
email/hostname/gpslat Широта GPS приемник
email/hostname/gpslon Долгота GPS приемник
email/hostname/heightgps Высота GPS приемник
email/hostname/speedgps Скорость GPS приемник
email/hostname/coursegps Курс GPS приемник
email/hostname/numsatgps Количество спутиков GPS приемник
email/hostname/btXrssi BT HUB RSSI
email/hostname/btXt BT HUB Температура
email/hostname/btXl BT HUB Освещенность
email/hostname/btXf BT HUB Плодородие
email/hostname/btXm BT HUB Влажность(почвы)
email/hostname/btXh BT HUB Влажность
email/hostname/btXb BT HUB Заряд батареи
email/hostname/adc Внутренний АЦП (ESP8266)
email/hostname/iadcX Внутренние АЦП (ESP32)
email/hostname/lm Температура с датчика LM75 или DS1621
email/hostname/inav Напряжение с датчика INA219
email/hostname/inac Ток с датчика INA219
email/hostname/dhttХ Температура датчиков DHT22 DHT11
email/hostname/dhthХ Влажность датчиков DHT22 DHT11
email/hostname/bmpt Температура датчиков BMP180/085
email/hostname/bmpp Давление датчиков BMP180/085
email/hostname/cntXi Данные с счетчика 60
email/hostname/light Освещенность с датчика BH1750
email/hostname/amt Температура с датчика AM2321
email/hostname/amh Влажность с датчика AM2321
email/hostname/dswX Температура датчиков DS18B20
email/hostname/bmet Температура с датчика BME280
email/hostname/bmeh Влажность с датчика BME280
email/hostname/bmep Давление с датчика BME280
email/hostname/shtt Температура с датчика SHT21
email/hostname/shth Влажность с датчика SHT21
email/hostname/sht30t Температура с датчика SHT30
email/hostname/sht30h Влажность с датчика SHT30
email/hostname/heat Температура с термопары MAX6675
email/hostname/cvv Напряжение с устройства CC/CV
email/hostname/cvc Ток с устройства CC/CV
email/hostname/pmv Напряжение с устройства Power Monitor
email/hostname/pmc Ток с устройства Power Monitor
email/hostname/pmw Мощность с устройства Power Monitor
email/hostname/pmwh Расход с устройства Power Monitor
email/hostname/rfid Данные с RFID
email/hostname/co2 Датчики CO2 MH-Z1x
email/hostname/ping ping тест статус
email/hostname/adcX Данные с АЦП PCF8591
email/hostname/rcdata Прием кода с радио пульта
email/hostname/rtct Температура DS3231
email/hostname/nrfYcX Счетчик с модулей NRF24
email/hostname/nrfYtX Температура с модулей NRF24
email/hostname/nrfYhX Влажность с модулей NRF24
email/hostname/nrfYaX АПЦ с модулей NRF24
email/hostname/nrfYgX Состояние GPIO с модулей NRF24
email/hostname/nrfYbX Другие данные с модулей NRF24
email/hostname/rssigsm RSSI GSM
email/hostname/irdata Прием кода с ИК пульта
email/hostname/pcfcntX Счетчик импульсов PCF8583
email/hostname/rcsXt Температура с модулей RC датчик
email/hostname/rcsXh Влажность с модулей RC датчик
email/hostname/rcsXa АЦП с модулей RC датчик
email/hostname/countrstX Счетчики импульсов сбрасываемый.
email/hostname/counterX Счетчики импульсов.
email/hostname/gpiointX Событие прерывания
email/hostname/pwmX Состояние ШИМ
email/hostname/inputX Состояние GPIO входа (MQTT)
email/hostname/outputX Состояние и установка выхода (MQTT)
email/hostname/valuedesX Глобальные переменные конструктора кода
email/hostname/scale Весы HX711
email/hostname/mcpa1 Данные с АЦП MCP3201
email/hostname/ring Номер входящего звонка из GSM модуля
email/hostname/sms Текст входящей SMS GSM модуля
email/hostname/tel Номер телефона при входящей SMS GSM модуля
email/hostname/dtmf Входящая команда DTMF GSM модуля
email/hostname/adsX Данные с АЦП ADS1115
email/hostname/nexX Данные с дисплеев Nextion. Прием нажатий с сенсорного экрана
email/hostname/vzco2 CO2 VZ-89T
email/hostname/nlXt Температура с датчиков NooLite
email/hostname/nlXh Влажность с датчиков NooLite
email/hostname/hcsr04 HC-SR04
email/hostname/tsllux Данные с TSL2561
email/hostname/ibutton ID iButton ключа
email/hostname/ibuttonst Статус ключа iButton
email/hostname/upsi Данные с UPS Монитора. Напряжение на входе.
email/hostname/upsf Данные с UPS Монитора. Напряжение на входе.
email/hostname/upso Данные с UPS Монитора. Напряжение на выходе.
email/hostname/upsh Данные с UPS Монитора. Частота сети
email/hostname/upst Данные с UPS Монитора. Температура в корпусе
email/hostname/upsb Данные с UPS Монитора. Напряжение батареи.
email/hostname/upss Данные с UPS Монитора. Нагрузка
email/hostname/mlxo Температура объекта MLX90614
email/hostname/mlxa Температура окружающая MLX90614
email/hostname/vwtXY Температура с VirtualWire
email/hostname/vwhXY Влажность с VirtualWire
email/hostname/vwcXY Счетчики с VirtualWire
email/hostname/vwaXY АЦП с VirtualWire
email/hostname/vwbXY Один байт с VirtualWire
email/hostname/hlw_w HLW8012 (Sonoff POW) Мощность
email/hostname/hlw_v HLW8012 (Sonoff POW) Напряжение
email/hostname/hlw_c HLW8012 (Sonoff POW) Ток
email/hostname/hlw_wh HLW8012 (Sonoff POW) Ватт/ч