4.8 MQTT - pr200sd/presp32 GitHub Wiki

MQTT — это протокол обмена сообщениями по шаблону издатель-подписчик (pub/sub). Сервис MQTT даёт возможность обмениваться данными с прибором через посредника в сети- брокера. Брокер может быть расположен как в домашней сети так и внешним. Для обмена информацией не нужна информация об IP адресе, достаточно доступа в интернет.


Основные настройки

mqtt1

  1. ID должен быть уникальным для каждого из клиентов.

  2. Broker IP Адрес брокера. Важно! адрес должен начинаться с mqtt://

  3. Broker port Порт, зависит от настроек брокера, стандартный 1883

  4. User, зависит от настроек брокера

  5. Pass, зависит от настроек брокера

  6. Keep Alive Период проверки связи в секундах между клиентом и сервером с помощью запросов ping.

  7. Publish period Период в секундах публикаций данных сетевым интерфейсом из регистров включенных в настройках [11]

  8. QoS качество связи. Поддержано 3 разных уровня:

    • QoS 0 (неподтверждение)- Сообщение отправляется только один раз и в случае сбоя не будет доставлено. Используется, когда это не критично.
    • QoS 1 (подтверждение): сообщение будет отправлено столько раз, сколько необходимо, чтобы гарантировать доставку клиенту. Обратной стороной является то, что клиент мог получить одно и то же сообщение несколько раз.
    • QoS 2 (гарантировано)- То же, что и выше, но гарантированная доставка только один раз. Он часто используется для более ответственных систем, где требуется большая надежность.
  9. Флаг Retain при включенном флаге, брокер будет сохранять значения топиков на сервере

  10. Enable ввод/вывод сервиса в работу.

  11. Сохранение всех полей MQTT.

  12. Настройки адресов и форматов регистров, которые с периодом в секундах из поля [7] будут отправляться брокеру. mqtt2 Номера которые отмечены чекбоксами будут публиковаться. Выбор формата через нажатие на поле с типом регистра в левом верхнем углу:

  • 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 будет выведена вся информация по сервису. mqtt1


Для записи доступны все топики по умолчанию, после запуска сервиса 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

Работа с сервисом MQTT

ПР102+ПРМ-1. Сценарий управления освещением