Протокол MQTT |
Содержание
Общие данные
Общие данныеMQTT (Message Queuing Telemetry Transport) — упрощённый сетевой протокол, работающий поверх TCP/IP, ориентированный на обмен сообщениями между устройствами по принципу «издатель — подписчик». MQTT Протокол ориентируется на простоту в использовании, невысокую нагрузку на каналы связи, работу в условиях постоянной потери связи, лёгкую интеграцию в любую систему. Основное предназначение — работа с телеметрией от различных датчиков и устройств. Использование шаблона подписчика обеспечивает возможность устройствам выходить на связь и публиковать сообщения, которые не были заранее известны или предопределены, в частности, протокол не вводит ограничений на формат передаваемых данных.
Основные особенности протокола MQTT:
Принцип работы протокола и серверов (брокеров) не рассматривается, дополнительную информацию можно получить на других сайтах. MQTT брокерыБрокер MQTT – это серверная система, которая координирует сообщения между разными клиентами. Брокер отвечает, в частности, за получение и фильтрацию сообщений, идентификацию клиентов, подписанных на каждое сообщение, и отправку им сообщений.
Также он отвечает за выполнение некоторых других задач, например:
В качестве брокеров можно выделить следующие сервисы:
Облачный MQTT брокер wqtt.ruWQTT.RU-это идеальное решение для обмена сообщениями "IoT" между маломощными датчиками или мобильными устройствами, такими как телефоны, встроенные компьютеры или микроконтроллеры. Работает с Алисой. Облачный MQTT брокер dealgate.ruСервис предназначен для интеграции с оборудованием, управляемым по широко известному в среде энтузиастов разработчиков MQTT протоколу. Позволяет добавлять, удалять и настраивать виртуальные устройства, которые впоследствии могут быть сопряжены с реальными, для чего реализован собственный MQTT сервер. Доступен контроль из Панели управления или голосом через навык Алисы Dealgate и приложение Умный Дом от Яндекса. Предоставляется возможность создания собственных сценариев автоматизации и оповещения на Телеграмм. Управляющие и телеметрические данные фиксируются в базе данных и могут быть представлены в графической форме. Работает с Алисой. Действия, для работы по протоколу MQTT
Для работы по протоколу MQTT, в прошивке «Smacont-ESP» предусмотрены следующие действия:
Действия, для работы по протоколу MQTT Общие параметры для действийБольшинство действий, для работы по протоколу MQTT, имеют общие параметры. Общие параметры Параметр «Хранение на сервере (RETAINED)». Если данный параметр установлен в состояние «true», то сообщение будет храниться в брокере, а новые подключенные клиенты будут получать данный пакет сразу же при подписке. Параметр «Использование префикса (prefix)». Данный параметр позволяет отключать использование общего префикса для имени топика. Общий префикс отключается только для топиков, указанных в данном действии. Действие «mqtt_Connect()»Запуск действия инициирует подключение к MQTT-серверу. Действие необходимо выполнять в сценариях ОДНОКРАТНО! Циклический запуск действия может привести к перезагрузке устройства.
Перед редактированием параметров действия «mqtt_Connect()», необходимо заполнить шаблоны (см. рис. ниже), в которых содержится следующая информация:
Пример шаблонов для действия «mqtt_Connect()»
ПРИМЕЧАНИЯ.
Действие «mqtt_Connect()» По завершению редактирование параметров действия «mqtt_Connect()», необходимо либо выполнить данное действие в ручном режиме (путем нажатия иконки ), либо выполнить перезагрузку устройства. Так как у действия «mqtt_Connect()» нет автозагрузки, его рекомендуется запускать в сценарии «start». Начальный номер шаблонов «Tx»Параметр указывает на начальный номер шаблона, где содержится информация для подключения к MQTT-серверу (см. рис. выше «Пример шаблонов для действия «mqtt_Connect()»). URL-адрес брокера/сервера
Параметр содержит URL-адрес брокера/сервера.
Имя пользователя
Параметр содержит имя пользователя.
Пароль
Параметр содержит пароль для подключения к брокеру/серверу.
ID клиента
Параметр содержит ID клиента (устройства).
ОБЯЗАТЕЛЬНОЕ УСЛОВИЕ: ID клиента должен быть уникальным для каждого устройства. По умолчанию, в качестве ID клиента используется серийные номер устройства. При необходимости, можно задать другой ID клиента используя шаблоны (см. рис. выше «Пример шаблонов для действия «mqtt_Connect()»). Порт
Параметр содержит номер порта для подключения к брокеру/серверу.
Топики для «публикации» (устройство -> СЕРВЕР)
Параметр содержит префикс топиков для «публикации».
Параметр является общим для всех топиков для «публикации». Для удобства отслеживания, от какого устройства происходит публикация данных, в имени топика рекомендуется использовать имя устройства. Топики для «подписки» (сервер -> УСТРОЙСТВО)
Параметр содержит префикс топиков для «подписки».
Параметр является общим для всех топиков для «подписки». Для удобства, в имени топика рекомендуется использовать имя устройства. Информация о текущем сост. MQTT
Параметр содержит информацию о текущем состоянии работы по протоколу MQTT.
Список значений:
Счетчик подключений
Параметр содержит количество подключений (переподключений) к серверу.
Счетчик подключений с ошибкой
Параметр содержит количество подключений (переподключений) к серверу с ошибкой.
Действие «mqtt_Disconnect()»Выполнение действия разрывает соединение с MQTT-сервером. Данное действие рекомендуется применять для подключения к резервному брокеру. Например, на устройстве используется алгоритм работы с двумя брокерами и при потере связи с основным брокером, выполняется действие «mqtt_Disconnect()», а затем осуществляется подключение к резервному брокеру при помощи действия «mqtt_Connect()» (и наоборот). Действие «mqtt_Disconnect()» Действие «mqtt_SendRaw3()»Выполнение действия позволяет отправить до трех значений переменных по MQTT-протоколу с указанием имени топиков. Действие «mqtt_SendRaw3()» Имя топика, должно быть предварительно указано в шаблоне. Действие «mqtt_SendRaw6()»Выполнение действия позволяет отправить до шести значений переменных по MQTT-протоколу без указания имени топиков. Переменные могут располагаться в произвольном порядке. Действие «mqtt_SendRaw6()» Действие «mqtt_SendRawTextArr()»Выполнение действия позволяет отправить массив переменных (до 16-ти значений) и/или массив текстовых сообщений (до 16-ти сообщений) по MQTT-протоколу. Переменные должны быть расположены друг за другом. Действие «mqtt_SendRawTextArr()» Действие «mqtt_SendJson()»Выполнение действия позволяет отправить переменные по MQTT в json-формате «topic={"name":Vx,"name":Vx}. Действие «mqtt_SendJson()»
Действие «mqtt_SendJsonArrVxText()»Выполнение действия позволяет отправить массив переменных (до 16-ти значений) и/или массив текстовых сообщений (до 16-ти сообщений) по MQTT-протоколу в json-формате. Действие «mqtt_SendJsonArrVxText()» Действие «mqtt_SendJsonArrVx()»Выполнение действия позволяет отправить массив переменных по MQTT в json-формате «topic={"name":[Vx,Vx,Vx]}» (до 16 «Vx»). Действие «mqtt_SendJsonArrVx()» Действие «mqtt_SendJsonArrText()»Выполнение действия позволяет отправить массив «Text» по MQTT в json-формате «topic={"name":["Text","Text"]}» (до 16 «Text»). Действие «mqtt_SendJsonArrText()» Действие «mqtt_SendText3()»Выполнение действия позволяет отправить текст по MQTT (до 3 «Text»). Действие «mqtt_SendText3()» Прием данных от брокераПрием данных от брокера происходит в фоновом режиме.
Для отправки данных от брокера необходимо использовать топик следующего вида:
Пример
Сообщения, формируемые устройством при работе по протоколу MQTTПри работе по протоколу MQTT, устройство формирует сообщения в «Журнал». Для этого необходимо выполнить действие «log_SetParam()», в котором разрешается логирование событий MQTT. |
Программы
Прошивка «Smacont-ESP»:
«Программа Настройки»:
Телеграм каналНовостиЭнергонезависимая память (EEPROM) Переменные «Vx» (карта переменных «Vx») Действие «wifi_CheckConn()». После подключения к WiFi-сети, выполнить действие с задержкой Обмен данными. Open Monitoring Датчики температуры и влажности AHT10/AHT15/AHT20/AHT21/AHT25 Датчик температуры и влажности SHT30 (SHT31/SHT35) Действие «valueToVx()», «valueToArrVx()». Отслеживание заданного уровня в диапазоне значений Действие «termostat()». Термостат ESP-NOW. Датчик температуры и влажности с питанием от батареек Последовательные интерфейсы (UART, I2C, SPI) Управление одноканальным модулем реле |