4.8 MQTT - pr200sd/presp32 GitHub Wiki
MQTT — это протокол обмена сообщениями по шаблону издатель-подписчик (pub/sub). Сервис MQTT даёт возможность обмениваться данными с прибором через посредника в сети- брокера. Брокер может быть расположен как в домашней сети так и внешним. Для обмена информацией не нужна информация об IP адресе, достаточно доступа в интернет.
Основные настройки
-
ID должен быть уникальным для каждого из клиентов.
-
Broker IP Адрес брокера. Важно! адрес должен начинаться с mqtt://
-
Broker port Порт, зависит от настроек брокера, стандартный 1883
-
User, зависит от настроек брокера
-
Pass, зависит от настроек брокера
-
Keep Alive Период проверки связи в секундах между клиентом и сервером с помощью запросов ping.
-
Publish period Период в секундах публикаций данных сетевым интерфейсом из регистров включенных в настройках [11]
-
QoS качество связи. Поддержано 3 разных уровня:
- QoS 0 (неподтверждение)- Сообщение отправляется только один раз и в случае сбоя не будет доставлено. Используется, когда это не критично.
- QoS 1 (подтверждение): сообщение будет отправлено столько раз, сколько необходимо, чтобы гарантировать доставку клиенту. Обратной стороной является то, что клиент мог получить одно и то же сообщение несколько раз.
- QoS 2 (гарантировано)- То же, что и выше, но гарантированная доставка только один раз. Он часто используется для более ответственных систем, где требуется большая надежность.
-
Флаг Retain при включенном флаге, брокер будет сохранять значения топиков на сервере
-
Enable ввод/вывод сервиса в работу.
-
Сохранение всех полей MQTT.
-
Настройки адресов и форматов регистров, которые с периодом в секундах из поля [7] будут отправляться брокеру. Номера которые отмечены чекбоксами будут публиковаться. Выбор формата через нажатие на поле с типом регистра в левом верхнем углу:
- INT- целочисленные регистры
- F_EVEN- float регистры с четными адресами
- F_ODD float регистры с нечетными адресами
После выбора всех регистров необходимо сохранить настройки кнопкой Save.
Топики
Publish/Susbcribe - это шаблон обмена сообщениями, при котором устройство (Sub) информирует брокера о том, что оно хочет получить сообщение, в то время как другое устройство (Pub) публикует сообщения для брокера, чтобы передать их другому устройству/устройствам, ожидающим их.
В зависимости от типа регистра который требуется прочитать или записать формируется имя топика.
Имя топика формируется из поля ID [1] и MAC адреса сетевого интерфейса, MAC адрес можно узнать в сетевых настройках: /ID_MAC/PS/ZXXX
- ID- берется из [1] поля настроек
- MAC- часть мак адреса интерфейса
- PS- pub или sub в зависимости от назначения топика
- Z- формат регистра R, F, B
- XXX- адрес регистра
Быстрый способ получить формат топиков для конкретного экземпляра платы доступен при запуске сервиса TelegramBot, по запросу /mqtt будет выведена вся информация по сервису.
Для записи доступны все топики по умолчанию, после запуска сервиса mqtt интерфейсная плата подписывается на все топики по шаблону: /PRSD_56317c/sub/# Для записи значений в ПР используются следующие шаблоны:
- /PRSD_56317c/sub/R512 - запись значений 0-65535 в регистр 512
- /PRSD_56317c/sub/F512 - запись значений float в регистр 512-513
- /PRSD_56317c/sub/B512/0 - запись 0 бита в регистр 512
- /PRSD_56317c/sub/H512 - запись значений в HEX формате в регистр 512
Для чтения данных из ПР используются следующие шаблоны:
- /PRSD_56317c/pub/R512 - чтение значений 0-65535 из регистра 512
- /PRSD_56317c/pub/F512 - чтение значений float из регистра 512-513