Как в Home Assistant получить карту сети zigbee2mqtt

Иногда хочется посмотреть на карту zigbee сети. Есть несколько способов как можно получить карту сети при использовании Home Assistant и zigbee2mqtt:

Можно использовать встроенный в zigbee2mqtt вебинтерфейс (появилось в версии 1.15.0). Можно установить дополнительный софт. Я знаю следующие проекты которые умеют показывать карту сети zigbee2mqtt:

Но, на самом деле, получить карту сети можно исключительно средствами Home Assistant и одного сервиса в интернете.

В этом тесте я рассказываю как можно получить карту zigbee сети без необходимости что-то устанавливать. Нужен только Home Assistant который настроен на работу с zigbee2mqtt.

Описание

Home Assistant общается с zigbee2mqtt через MQTT сервер. Для того чтобы получить карту из zigbee2mqtt нужно отправить в MQTT сервер специальную команду, а потом из этого же сервера MQTT взять данные с картой сети.

Это все можно сделать исключительно средствами Home Assistant.

Открыть инструмент Home Assistant по работе с MQTT

Home Assistant очень динамично разрабатывается, поэтому то где в интерфейсе находится инструмент по работе с MQTT зависит от версии Home Assistant.

На свежих версиях Home Assistant нужно выбрать в меню: Configuration -> Integrations -> MQTT Configure

На более ранних версиях Home Assistant чтобы открыть этот инструмент нужно выбрать Developer Tools -> MQTT.

Отправить команду в MQTT и получить данные с картой

В раздел "Listen to a topic" необходимо ввести текст "zigbee2mqtt/bridge/#" и нажать кнопку "START LISTENING". С помощью этого действия мы просим Home Assistant отображать на экране все обновления MQTT топиков которые начинаются с "zigbee2mqtt/bridge/" (символ "решетка" в MQTT означает "все"). Сразу же после нажатия на кнопку мы должны увидеть какие-то сообщения.

После того как мы стали слушать все что происходит в нужном разделе MQTT нужно отправить команду на создание карты сети. Для этого в раздел "Publish a packet" нужно указать топик "zigbee2mqtt/bridge/networkmap", а в поле "Payload" нужно ввести слово "graphviz" и нажать на кнопку "Publish".

После нажатия на кнопку "Publish" в разделе "Listen to a topic" сразу появится информация о топике который мы только что отправили, а чуть позже в этом же разделе появится данные с картой сети (чем больше устройств в сети тем больше времени займет формирование этих данных)

Преобразовать данные с картой сети в картинку

Итак, мы получили из zigbee2mqtt данные с картой сети. Но эти данные описаны текстом в специальном формате (этот формат называется "graphviz"). Чтобы сделать из этого текста картинку нужно воспользоваться специальным инструментом. Открываем страницу https://dreampuf.github.io/GraphvizOnline/ (этот инструмент очень просто найти через поиск по запросу "graphviz online").

Дальше нужно скопировать данные с картой сети из Home Assistant в буфер обмена и вставить их в этот инструмент. Результат — появится картинка с картой.

Но для лучшего отображения стоит поменять "Engine". В этом инструменте по умолчанию используется "dot", но для zigbee карты сети лучше подходит "circo". Так элементы располагаются вокруг центрального компонента.

Итак, вот карта. Если кликнуть на нее, скачается .svg файл с этой картой.

Иван Бессарабов
ivan@bessarabov.ru

14 июля 2020

Этот текст есть и на английском языке
Кстати, у меня есть телеграм канал про Home Assistant: https://t.me/bessarabov_ha