MQTT

Топики брокера MQTT как данные оборудования прямо в чате

Подключите брокер MQTT к ИИ-агенту: топики UNS, Zigbee2MQTT, ChirpStack и Node-RED через шлюз. Агент покажет текущие значения, тренд за смену и устаревшие датчики.

Как агент работает с MQTT

Брокер MQTT обычно стоит в сети объекта, поэтому к нему ходит шлюз: программа, установленная на компьютер в той же сети. Шлюз добавляется на вкладке «Шлюзы» и назначается подключению. В подключении указываются адрес брокера (mqtt:// или mqtts://), при необходимости логин и пароль и фильтры топиков. Пока связи наружу нет, шлюз копит данные на диске и отправляет их, когда она вернётся.

Шлюз подписывается только на названные фильтры, а не на весь брокер, и каждый топик становится тегом. Сообщение читается как JSON или как текст; указатели JSON задают, где в нём значения и где время источника, а объект с несколькими полями даёт несколько тегов. Retained-сообщение без времени шлюз помечает как значение неизвестного возраста. Сессия чистая: то, что брокер копил, пока шлюза не было, не переигрывается.

Шлюз не публикует ни одного сообщения: у него нет ни публикации, ни завещания (will), ни retained-сообщений от своего имени. Поэтому его учётной записи в ACL брокера достаточно права подписки, и только чтение держит сам брокер. Агент читает текущие значения, историю и свежесть, но ничего не отправляет в топики и не управляет оборудованием.

Каталог тегов растёт по мере прихода сообщений и ограничен настройкой «Не больше тегов» (по умолчанию 10000), чтобы слишком широкий фильтр не превратил загруженный брокер в сотни тысяч тегов. Тип тега берётся по первому значению и меняется, только если два значения подряд пришли другого типа. История копится с момента подключения: прошлых значений брокер не хранит.

Сценарии интеграции

Текущие значения

Агент найдёт теги по топику или имени и покажет последние значения со временем источника, а устаревшее значение назовёт устаревшим, а не текущим.

Тренд за смену

Агент соберёт историю тега за период интервалами: минимум, максимум, среднее и последнее значение, с пропусками там, где данных не было.

Датчики через мосты

Агент читает JSON-сообщения Zigbee2MQTT, ChirpStack, Node-RED и HighByte: каждое поле объекта становится своим тегом со своей историей.

Сравнение линий

Агент сопоставит один показатель по разным топикам, например температуру на нескольких линиях, и сравнит средние и пики за один период.

Задача по условию

Агент заведёт задачу «По событию»: она запустится, когда значение тега перейдёт порог и продержится заданное время.

Связь шлюза

Агент скажет, на связи ли шлюз и подключение к брокеру, а задача по событию узнает, когда шлюз пропал и когда вернулся.

Примеры: MQTT

MQTT
Реальные чаты: выберите вопрос
Какие датчики на складе замолчали?

3 датчика из 26 не присылали данных больше часа.

  • Два датчика Zigbee2MQTT в холодной зоне, последнее значение в 06:15
  • Датчик влажности у ворот молчит с вечера

Устаревшее значение называю устаревшим, а не показываю его как текущее.

Открыть в чате

Как подключить

Перед подключением

  • Брокер MQTT 5 или 3.1.1, доступный с компьютера шлюза
  • Учётная запись брокера с правом подписки на нужные топики
  • Компьютер в сети объекта для программы шлюза
  • Для mqtts:// сертификат брокера, которому доверяет шлюз
  • Сервер пускает только известные адреса? Разрешите подключения с 158.160.205.91 и 87.228.27.163.
  1. 1

    Создайте пользователя брокера

    Шлюз только подписывается и ничего не публикует. Дайте его учётной записи в ACL брокера право подписки на нужные топики, публикация ей не нужна.

  2. 2

    Задайте Client ID, если брокер их проверяет

    Если ACL брокера пускает только известные ID клиента, впишите такой ID в дополнительных настройках подключения. Пусто: шлюз назовётся сам.

  3. 3

    Подпишитесь узкими фильтрами

    Перечислите фильтры через запятую, например линия/+/температура, а не #. Для Zigbee2MQTT подпишитесь на zigbee2mqtt/+, а не на zigbee2mqtt/#.

  4. 4

    Для TLS положите сертификаты на шлюз

    Адрес mqtts:// проверяется по корням системы и PEM из папки данных шлюза pki/mqtt/trusted/. Для mTLS: pki/mqtt/own/cert.pem и key.pem.

Частые вопросы

Установите шлюз на компьютер в сети объекта и добавьте его на вкладке «Шлюзы». В подключении MQTT укажите адрес брокера, например mqtt://10.0.12.5:1883, логин и пароль, если брокер их требует, и фильтры топиков через запятую.

Топики под вашими фильтрами как теги: значения из JSON или текста, время источника, если оно есть в сообщении, историю с момента подключения и свежесть каждого значения. Поля объекта JSON становятся отдельными тегами.

Нет. Шлюз только подписывается: публикации, завещания и retained-сообщений от его имени нет. Учётной записи шлюза достаточно права подписки.

Брокер принял логин, но отказал в подписке на один из фильтров. Проверьте ACL учётной записи шлюза для каждого фильтра, а если брокер пускает только известные ID клиента, впишите Client ID в дополнительных настройках.

Категория
Оборудование
Подключение
По API-ключу

Подключите MQTT

Подключение занимает пару минут, данные остаются в ваших системах.

Подключить