Перейти к содержимому

Home Assistant

Умный дом за дашбордом: работает ли Home Assistant или он запустился в режиме восстановления, сущности, недоступные или неизвестные по домену, низкий заряд батарей, ожидающие обновления (ядро, операционная система, дополнения, прошивка устройств) и открытые исправления.

DumbMonit читает REST API Home Assistant с долгоживущим токеном доступа выделенного пользователя без прав администратора, и список исправлений через WebSocket API. Он никогда не вызывает сервис, никогда не запускает событие и никогда не меняет состояние.

Отказ, за которым стоит следить, — не «Home Assistant не отвечает» (это уже видит проверка сайта), а Home Assistant отвечает, но что-то за ним перестало работать: интеграция, у которой все сущности стали недоступны после обновления, Zigbee-стик, отвалившийся от шины USB, датчик двери, батарея которого достигла 5 %, исправление, ожидающее неделями.

Все метрики с префиксом dumbmonit_homeassistant_.

МетрикаЧтоМетки
infoзначение 1version
running1, когда состояние ядра — RUNNING, 0 — пока оно запускается или останавливается
recovery_mode1 в режиме восстановления (или безопасном режиме на старых версиях): конфигурация не загрузилась
entitiesсущности по доменуdomain
entities_unavailable, entities_unknownсущности в этом состоянии, по доменуdomain
entity_unavailableзначение 1 на каждую недоступную сущность, не более 50entity, name, domain
batteriesдатчики батарей и булевы датчики батарей
batteries_lowбатареи ниже порога, и булевы датчики батарей, которые включены
battery_lowодин ряд на каждую низкую батарею, значение = её уровень в процентах (0 для булевого датчика), не более 50entity, name
updates_availableсущности update.*, которые включены
update_availableзначение 1 на каждое ожидающее обновление, не более 50entity, name, installed, latest
repairsоткрытые исправления (ни игнорируемые, ни отклонённые) по серьёзности: critical, error, warningseverity
repairзначение 1 на каждое открытое исправление, не более 50issue, 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»
  1. В Home Assistant: Settings → People → Users → Add user (включите режим Advanced в своём профиле, если вкладки Users нет). Назовите пользователя так, дайте ему длинный случайный пароль и оставьте переключатель Administrator выключенным. Обычный пользователь может читать каждую сущность и список исправлений, и не может менять конфигурацию.

    dumbmonit
  2. Войдите в Home Assistant один раз этим пользователем, откройте его профиль (имя внизу боковой панели) → Security → Long-lived access tokens → Create token. Назовите его по имени DumbMonit и скопируйте сразу: он показывается только один раз.

  3. В DumbMonit введите адрес Home Assistant, например «homeassistant.local» (порт 8123) или «https://ha.example.net» за обратным прокси, и вставьте токен. Батареи ниже 20 % считаются низкими; опция Low battery threshold это меняет.

  4. 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 дня).