MQTT
MQTT (Message Queue Telemetry Transport) — это один из наиболее популярных протоколов построения распределённых IoT систем и обмена данными между IoT устройствами. С технической точки зрения MQTT — это «лёгкий» сетевой протокол, работающий поверх TCP/IP и использующий архитектуру «издатель-подписчик».
Ядром системы является «MQTT брокер» — специальный (локальный или глобальный) сервис, который принимает, агрегирует и распределяет все сообщения в системе. В схеме «издатель-подписчик» используются «топики», в которых можно опубликовать данные или подписаться на получение нужных данных.
Топики записываются в виде строки текста и в общем случае имеют следующий вид:
login/hostname/metrics
где:
login — логин, который используется для доступа к MQTT брокеру (указывается на вкладке настроек Servers). Там же указывается пароль, если он требуется. В случае публичных общедоступных MQTT сервисов логин может отсутствовать.
hostname — имя модуля (имя вашего контроллера), настраивается на вкладке настроек Main.
metrics — имя датчика или устройства или номер GPIO.
Например:
mylogin/controller1/gpio229
в этом топике публикуются данные о состоянии вывода GPIO229 контроллера с именем controller1, который использует логин mylogin для публикации на брокере.
MQTT брокеры
MQTT брокеры могут быть локальными (например, в виде мини-компьютера на Raspberry Pi с установленным на нём ПО брокера) или глобальными в интернете в виде платных или бесплатных MQTT сервисов.
Бесплатные сервисы, например,
mqtthq.com
имеют ограниченный функционал и могут использоваться для тестирования работы вашей системы. Подобные сервисы часто лишены необходимых в реальной работе возможностей, например личного кабинета и развитых настроек работы MQTT.
В интернете также присутствует большое количество платных MQTT сервисов, найти которые и выбрать наиболее подходящий для вас можно при помощи поисковых систем. Например, облачный брокер
wqtt.ru
обладает всеми необходимыми качествами для практической работы вашей системы с MQTT и начать можно с тестирования этого интернет-сервиса.
Настройка MQTT в прошивке Lavritech
Настройки всех сетевых сервисов, в том числе и MQTT находятся на странице (в пункте меню) «Servers». И начинать настройку подсистемы MQTT нужно с этого пункта меню.
Для тестового примера мы будем использовать публичный MQTT сервис mqtthq.com, он позволяет быстро и бесплатно проверить работоспособность нашей системы с протоколом MQTT.
На главной странице сервиса указаны реквизиты доступа к нему, из которых нас будут интересовать два:
public.mqtthq.com — адрес MQTT сервиса в интернете.
1883 — TCP порт для посылки и получения незашифрованных сообщений.
Далее на странице «Servers» нужно ввести эти данные.
Поскольку у нас публичный бесплатный тестовый MQTT сервис, то поля Login
и Passw
оставляем пустыми.
В реальной работе с платным MQTT сервисом эти поля нужно будет заполнить.
После заполнения всех необходимых полей нужно нажать на кнопку «Set» для сохранения настроек.
Обратите внимание: для работы MQTT нужно обязательно поставить галочку
Enable send MQTT
. Период можно задать любой, 60 секунд выбрано для удобства тестирования.
Обратите внимание: для начала работы MQTT нужно принудительно перезагрузить контроллер. Это делается в главном меню, в пункте «Restart». Это обязательное условие — без перезагрузки системы MQTT работать не будет.
На этом процедуру настройки работы MQTT в прошивке Lavritech можно считать законченной. После перезагрузки контроллера нужно ещё раз зайти на страницу «Servers» и убедиться, что в первой строке появилась надпись «OK», говорящая о том, что контроллер успешно подключился к серверу MQTT брокера.
Если вы не видите надписи «OK» или видите надпись «Error», то что-то пошло не так и MQTT не работает — в этом случае нужно ещё раз проверить все настройки или попробовать подключиться к другому MQTT брокеру.
Утилита MQTT Explorer
Для удобной работы с MQTT протоколом, доступа к настройкам и тестирования работы контроллера с MQTT вам понадобится популярная утилита MQTT Explorer (mqtt-explorer.com) — она позволяет в реальном времени видеть все настройки MQTT и интерактивно взаимодействовать с вашим контроллером.
Для дальнейшей работы с MQTT топиками (их формирования) нам понадобится имя вашего контроллера, его можно посмотреть и/или задать на странице основных настроек:
Имя нашего тестового контроллера — «LT_V15_EL» (сокращение от «плата Lavritech версии V1.5», в вашем случае это будет другое имя, заданное вами).
Запускаем MQTT Explorer, создаём новое соединение и задаём параметры доступа к MQTT брокеру. Затем нажимаем кнопки «SAVE» и «CONNECT».
Далее в строке поиска набираем имя нашего контроллера «lt_v15_el» (чтобы отфильтровать чужие публичные данные на тестовом сервере) и видим 40 метрик (параметров), которые наш тестовый контроллер выдаёт в соответствующих топиках.
Количество и набор параметров определяется прошивкой — нам доступны данные о версии прошивки, IP-адресе контроллера, уровне Wi-Fi сигнала, свободной памяти, состоянии GPIO и прочие параметры.
Пояснение. Здесь, при помощи утилиты MQTT Explorer, мы видим набор метрик, которые доступны на нашем тестовом контроллере — это просто информация для нашего ознакомления. В реальном проекте на любой из этих топиков можно подписаться и получать эти данные в вашей IoT системе.
Для того, чтобы увидеть значение любого параметра, достаточно сделать на нём двойной клик мышкой. Например, дважды кликнув на параметре «freemem», мы можем увидеть его значение в топике «LT_V15_EL/freemem», равное 134120, а также график изменения этого параметра во времени.
Изменение данных при помощи MQTT
При помощи MQTT Explorer можно не только получать и просматривать данные, но и изменять их. Например, в прошивке Lavritech для изменения состояния GPIO выводов нужно использовать топики следующего вида:
login/hostname/set/gpioXXX
где для изменения нужно добавить «set» и указать номер GPIO. На скриншоте ниже изменяется состояние GPIO229:
Для этого:
-
В разделе «Publish» интерфейса MQTT Explorer задаём название топика для изменения GPIO229 («LT_V15_EL/set/gpio229»).
-
Устанавливаем тип данных «raw».
-
Задаём передаваемое значение «1» (включено).
-
Нажимаем на кнопку «PUBLISH».
В результате состояние GPIO229 контроллера меняется с «0» на «1», то есть мы при помощи MQTT изменили состояние GPIO229 нашего контроллера с выключенного на включённое.
Дополнительная информация
Кроме стандартного подключения (mqtt://) к MQTT брокеру, прошивка Lavritech поддерживает и другие типы подключения:
ws:// — режим Websockets
mqtts:// — стандартное подключение с SSL
wss:// — Websockets режим с SSL
Примечание. SSL — это специальный режим соединения с шифрованием. Он должен поддерживается сервером брокера и обычно для него используется отдельный номер порта.
Связанные темы
Работа с прошивкой Lavritech
Первичная настройка
Где купить
Купить оборудование Lavritech можно в официальном интернет-магазине.