Home Assistant
Умный дом за дашбордом: работает ли Home Assistant или он запустился в режиме восстановления, сущности, недоступные или неизвестные по домену, низкий заряд батарей, ожидающие обновления (ядро, операционная система, дополнения, прошивка устройств) и открытые исправления.
DumbMonit читает REST API Home Assistant с долгоживущим токеном доступа выделенного пользователя без прав администратора, и список исправлений через WebSocket API. Он никогда не вызывает сервис, никогда не запускает событие и никогда не меняет состояние.
Отказ, за которым стоит следить, — не «Home Assistant не отвечает» (это уже видит проверка сайта), а Home Assistant отвечает, но что-то за ним перестало работать: интеграция, у которой все сущности стали недоступны после обновления, Zigbee-стик, отвалившийся от шины USB, датчик двери, батарея которого достигла 5 %, исправление, ожидающее неделями.
Что отслеживается
Заголовок раздела «Что отслеживается»Все метрики с префиксом dumbmonit_homeassistant_.
| Метрика | Что | Метки |
|---|---|---|
info | значение 1 | version |
running | 1, когда состояние ядра — RUNNING, 0 — пока оно запускается или останавливается | |
recovery_mode | 1 в режиме восстановления (или безопасном режиме на старых версиях): конфигурация не загрузилась | |
entities | сущности по домену | domain |
entities_unavailable, entities_unknown | сущности в этом состоянии, по домену | domain |
entity_unavailable | значение 1 на каждую недоступную сущность, не более 50 | entity, name, domain |
batteries | датчики батарей и булевы датчики батарей | |
batteries_low | батареи ниже порога, и булевы датчики батарей, которые включены | |
battery_low | один ряд на каждую низкую батарею, значение = её уровень в процентах (0 для булевого датчика), не более 50 | entity, name |
updates_available | сущности update.*, которые включены | |
update_available | значение 1 на каждое ожидающее обновление, не более 50 | entity, name, installed, latest |
repairs | открытые исправления (ни игнорируемые, ни отклонённые) по серьёзности: critical, error, warning | severity |
repair | значение 1 на каждое открытое исправление, не более 50 | issue, domain, severity |
scrape_errors | вызовы, завершившиеся ошибкой при последней проверке |
Некоторые домены по природе находятся в состоянии unknown: никогда не
нажатая кнопка, никогда не полученное событие, сервис уведомлений или речи.
Они не считаются unknown: button, input_button, event, scene,
notify, tts, stt, conversation, wake_word, ai_task, person.
Опция Domains left out убирает дополнительные домены (например,
device_tracker или media_player для устройств, которые часто выключены)
из счётчиков недоступных и неизвестных.
Исправления не в REST API: DumbMonit открывает WebSocket API, отправляет
repairs/list_issues и закрывает его. Пользователь без прав администратора
может их перечислять. Опция Read the repairs отключает это.
Применяемые встроенные правила: «Home Assistant в режиме восстановления», «Home Assistant не запущен», «Сущности Home Assistant стали недоступны», «Низкий заряд батареи Home Assistant», «Доступно обновление Home Assistant», «Требуется исправление Home Assistant», плюс «Монитор недоступен».
Устройства
Заголовок раздела «Устройства»Каждый телефон и планшет, вошедшие в приложение-компаньон (интеграция
mobile_app), публикуются в общем семействе, разделяемом каждой
интеграцией DumbMonit, отслеживающей клиентские устройства —
dumbmonit_client_device_*, с префиксом без homeassistant, полностью
описанным в разделе
Клиентские устройства:
| Метрика | Что | Метки |
|---|---|---|
last_seen_timestamp_seconds | Последнее обновление сущности device_tracker устройства | device, type (Mobile), os (пусто), user (человек, с которым связано, если есть), kind |
stale_seconds | Положительно, когда устройство превысило device_stale_days (по умолчанию 3) без обновления; управляет правилом Клиентское устройство устарело | device, type, os, user, kind, signal (всегда connection: у Home Assistant нет резервной копии для сообщения) |
Как распознаётся устройство: /api/states не сообщает, какая интеграция
создала сущность — для этого нужен реестр сущностей, который REST API не
обслуживает. device_tracker приложения-компаньона — единственный, кто
задаёт атрибут battery_level; сторонние интеграции геолокации (Life360,
OwnTracks, демо-интеграция, используемая при тестировании) задают максимум
battery. Сторонняя интеграция, которая случайно скопировала бы точно это
имя атрибута, была бы принята за приложение-компаньон; и наоборот, устройство
приложения-компаньона с отключённым сообщением о батарее отсутствует в
таблице, а не показывается неправильно. Учётная запись устройства, когда
известна, берётся из сущности person.*, чей атрибут device_trackers
называет его.
Страница монитора
Заголовок раздела «Страница монитора»Панель над графиками читает то, что сохранила проверка; открытие страницы никогда не обращается к Home Assistant. Сначала она сообщает, что не так (режим восстановления, исправления уровня error, недоступные сущности), затем — низкие батареи по уровню, ожидающие обновления с их версиями, сущности по домену, и таблицу устройств приложения-компаньона с их последним подключением.
Как это проверялось
Заголовок раздела «Как это проверялось»На Home Assistant 2026.9.4, с долгоживущим токеном пользователя без прав
администратора: конфигурация, состояния сущностей демо-интеграции и шаблонных
датчиков (уровни батарей, булевый датчик батареи, недоступный датчик),
сущности обновлений и список исправлений через WebSocket API. Атрибуты
device_tracker приложения-компаньона (battery_level, source_type) были
проверены по исходному коду интеграции mobile_app, а не на реальном
телефоне.
Создание выделенного пользователя и долгоживущего токена в Home Assistant
Заголовок раздела «Создание выделенного пользователя и долгоживущего токена в Home Assistant»-
В Home Assistant: Settings → People → Users → Add user (включите режим Advanced в своём профиле, если вкладки Users нет). Назовите пользователя так, дайте ему длинный случайный пароль и оставьте переключатель Administrator выключенным. Обычный пользователь может читать каждую сущность и список исправлений, и не может менять конфигурацию.
dumbmonit -
Войдите в Home Assistant один раз этим пользователем, откройте его профиль (имя внизу боковой панели) → Security → Long-lived access tokens → Create token. Назовите его по имени DumbMonit и скопируйте сразу: он показывается только один раз.
-
В DumbMonit введите адрес Home Assistant, например «homeassistant.local» (порт 8123) или «https://ha.example.net» за обратным прокси, и вставьте токен. Батареи ниже 20 % считаются низкими; опция Low battery threshold это меняет.
-
DumbMonit читает только /api/config, /api/states и, через WebSocket API, список исправлений. Он никогда не вызывает сервис, никогда не запускает событие и никогда не меняет состояние.
Учётные данные
Заголовок раздела «Учётные данные»| Учётные данные | Поля |
|---|---|
| Долгоживущий токен доступа | Токен выделенного пользователя, отправляется как Authorization: Bearer. |
Адрес: имя хоста или IP (homeassistant.local), host:port, или полный
URL (https://ha.example.net, с префиксом пути за обратным прокси);
завершающий /api допускается. Опции: протокол (по умолчанию HTTP), порт
(8123), проверка сертификата, таймаут запроса (10 с), порог низкой батареи
(20 %), исключённые домены (нет), исправления (чтение) и устаревание
устройства (device_stale_days, по умолчанию 3 дня).