СЕРВИС

MQTT Engine

MQTT для парка устройств Cams. MQTT Engine — это бэкенд-потребитель за брокером EMQX, который подписывается на общие топики посещаемости и присутствия, направляет события в тот же конвейер посещаемости, что и транспорты HTTP и TCP, и публикует конверты команд от сервера к устройствам.

Обзор

Транспортный движок MQTT, который принимает события посещаемости и отправляет команды устройствам через брокер EMQX — создан для больших парков подключённых устройств.

MQTT Engine — это транспорт MQTT в семействе движков Cams, аналог HTTP и постоянного TCP. Он работает как бэкенд-потребитель за брокером EMQX: подписывается на общие топики посещаемости и присутствия в api/mqtt/v1/{sn}/, направляет каждое событие в общий конвейер и публикует команды от сервера к устройствам в топике команд в виде JSON-конвертов с прямой совместимостью. EMQX завершает TLS-сеансы устройств, аутентификацию, QoS и last-will; несколько экземпляров движка распределяют нагрузку через общие подписки EMQX для больших парков устройств.

СЕРВИСMQTTEMQXTLSJSONC++
Схема топиков MQTT (EMQX)
# device -> server (attendance)
api/mqtt/v1/{sn}/evt   { "user_id":"1001", "att_time":"...", "att_state":1 }
# device -> server (presence / LWT)
api/mqtt/v1/{sn}/st    { "online": true }
# server -> device (command)
api/mqtt/v1/{sn}/cmd   { "id":"c1", "op":"sync_user", "data":{} }

Возможности

Что он умеет

Приём по MQTT

Подписывается на общие топики событий и направляет каждое событие посещаемости в тот же конвейер хранения и отправки, что и HTTP и TCP.

Отслеживание присутствия

Читает топик присутствия и last-will, чтобы отключения, обнаруженные брокером, помечали устройство как офлайн.

Отправка команд

Публикует поставленные в очередь команды от сервера к устройствам в топике команд каждого устройства в виде JSON-конвертов с QoS 1.

Горизонтальное масштабирование

Общие подписки EMQX распределяют посещаемость между несколькими экземплярами движка для больших парков устройств.

Функции

Всё включено

  • Фронтенд транспорта MQTT для посещаемости, наравне с движками HTTP и собственного TCP
  • Схема топиков api/mqtt/v1/{sn}/{evt|cmd|st}, согласованная с приложением и ACL EMQX
  • Бэкенд-потребитель за EMQX: общие подписки распределяют нагрузку между N экземплярами
  • Принимает события посещаемости, идентичные по содержимому телу отметки HTTP, в общий конвейер
  • Присутствие и last-will через топик состояния: при отключениях устройства помечаются офлайн
  • Отправка команд от сервера к устройствам в виде JSON-конверта {id, op, data} с прямой совместимостью и QoS 1
  • TLS до брокера с проверкой CA; движок использует бэкенд-аккаунт, а не серийный номер устройства
  • Кроссплатформенная сборка (Linux и Windows) на Eclipse Paho C++

Создавайте с MQTT Engine

Получите ключ, изучите документацию и запускайте. Наша команда поможет с первой интеграцией.

FAQ

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

Как MQTT Engine связан с EMQX?

EMQX остаётся брокером, который завершает TLS-сеансы устройств, аутентификацию, QoS и last-will. MQTT Engine — это бэкенд-потребитель, который подписывается на общие топики для приёма посещаемости и публикует команды для устройств.

Можно ли запустить несколько экземпляров MQTT Engine?

Да. Общие подписки EMQX распределяют топики посещаемости и присутствия между всеми запущенными экземплярами, так что масштабирование достигается добавлением экземпляров.

Каков формат команд от сервера к устройству?

JSON-конверт {id, op, data} в топике команд с QoS 1, где op — единственное обязательное поле, а неизвестные операции игнорируются более старыми устройствами ради прямой совместимости.

Связанное

Узнайте больше о платформе