Структура MQTT-топиков

Материал из HOMEd Wiki
HOMEd > Структура MQTT-топиков

Общие сведения

Статья содержит обобщенные данные о структуре MQTT-топиков, посредством которых сервисы HOMEd общаются друг с другом, и не включает в себя описание данных, которые содержат эти топики. Для ознакомления со структурой данных можно почитать соответствующие статьи на страницах сервисов в этой вики или воспользоваться приложением MQTT Explorer для самостоятельного изучения (на мой взгляд - там нет ничего сложного).

В описании топиков используются следующие шаблоны:

  • {prefix} - корневой топик, как указано в файле конфигурации любого сервиса
  • {service} - название сервиса в нижнем регистре, например, recorder или zigbee
  • {deviceId] - идентификатор устройства или его имя (в зависимости от конфигурации сервиса)
  • [/instance] - название инстанса, в случае, если указано (для сервисов, поддерживающих кластеризацию)
  • [/endpointId] - номер конечной точки устройства для устройств с несколькими однотипными конечными точками, таких как многоканальные реле или выключатели


service

{prefix}/service/{service}[/instance]

Топики, в которые сервисы HOMEd публикуют состояние своей доступности. Данные топики являются LWT-топиками, это значит, что при потере соединения между каким-либо сервисом и брокером (по причине плохой связи или некорректного завершения работы сервиса), брокер сам опубликует в соответсвующий топик сообщение с содержимым {"status":"offline"}.

status

{prefix}/status/{service}[/instance]

Топики, в которые сервисы HOMEd публикуют свои версии и статические данные, такие, как списки устройств, настройки дашбордов и автоматизаций.

device

{prefix}/device/{service}[/instance]/{deviceId}

Топики, в которые сервисы HOMEd, работающие с устройствами, публикуют состояния доступности своих устройств. Помимо прочего, сервис ZigBee публикует в эти топики метки времени "lastSeen", указывающие на момент получения последних данных от устройства.

expose

{prefix}/expose/{service}[/instance]/{deviceId}

Топики, в которые сервисы HOMEd, работающие с устройствами, публикуют данные о способностях устройств и соответствующие им опции.

fd - from device

{prefix}/fd/{service}[/instance]/{deviceId}[/endpointId]

Топики, в которые сервисы HOMEd, работающие с устройствами, публикуют данные, полученные от устройств. Помимо прочего, сервис ZigBee публикует в эти топики параметр "lastSeen", указывающий на качество связи с устройством (с ближайшим к координатору роутером, в случае, когда устройство работает через роутер).

td - to device

{prefix}/td/{service}[/instance]/{deviceId}[/endpointId]

Топики, из которых сервисы HOMEd, работающие с устройствами, получают данные для управления устройствами. Эти данные публикуются, например, сервисом автоматизаций.