Nmap против роутера. Что лучше для определения устройств для Home Assistant.

Некоторое время на моем сервере Home Assistant работала система обнаружения устройств через nmap. (Вот подробный рассказ о том как я настраивал nmap в Home Assistant).

Это работало, но работало не очень хорошо. Устройства все время "прыгали". То есть устройство в сети, то его нет.

На днях я заменил WiFi роутер. У меня был Zyxel Keenetic Giga II. Вместо него я поставил Xiaomi Router 4.

Home Assistant умеет забирать из роутера Xiaomi Router 4 данные о том какие устройства есть сети. Поэтому я выкинул nmap и переключил HA на получение данных из роутера. Вот как это настраивается в файле configuration.yaml :

device_tracker:
  - platform: xiaomi
    host: 192.168.31.1
    password: !secret xiaomi_router_password

А вот скриншот как Home Assistant показывает устройства:

Home assistant device_tracker nmap vs xiaomi router

Видите момент, когда я переключил Home Assistant на использование данных роутера вместо nmap? =)

Детектор nmap запускался на моем сервере Home Assistant, который работает на Raspberry Pi 3 B+. Nmap не ловит то устройство на котором работает, поэтому момент появления Raspberry Pi на этом графике — это и есть момент установки нового роутера. И момент пропадания роутера Zyxel с этого графика — это тоже процесс смены роутера.

Совершенно невероятная разница между nmap и использованием данных роутера. Через nmap на графике куча мелких провалов, как будто устройство то включается, то выключается. После смены роутера визуализация присутствия устройств абсолютно стабильна.

Итого резюме. Если можете, лучше использовать данные device_tracker с роутера, а не через nmap. Nmap стоит использовать только если нет других вариантов, но при этом стоит знать что данные с nmap сильно шумят.

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

13 января 2020

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