Присутствие в Home Assistant: person, zones, Companion App и защита от ложного режима «Ушёл»
Как определить, кто действительно дома, объединить геолокацию телефона с данными Wi-Fi, правильно настроить зоны и не выключить свет или отопление из-за случайного сбоя связи. Практический гайд по device_tracker, person, zone.home и надёжным сценариям.
PIR/mmWave определяет движение или присутствие в комнате. GPS, маршрутизатор и Home Assistant Person определяют присутствие человека дома или в другой географической зоне.
Телефон может разрядиться, Wi-Fi отключиться, геолокация задержаться. Правила должны учитывать неизвестное состояние.
Выключить декоративную подсветку можно автоматически. Перекрыть отопление или включить охрану лучше только после дополнительных проверок.
Как Home Assistant определяет присутствие человека
Сам Home Assistant не умеет угадывать местоположение. Источники данных создают device_tracker: приложение телефона отправляет координаты, а интеграция маршрутизатора сообщает о подключении устройства к сети. Один или несколько трекеров назначаются человеку (person), а правила автоматизации используют его состояние или занятость географической зоны.
device_tracker.phone_gpsdevice_tracker.phone_wifiperson.resident_onezone.home и правила автоматизацииДля домашней автоматизации обычно достаточно отдельного person для каждого согласившегося участника семьи, двух типов источников там, где они действительно нужны, и нескольких устойчивых правил. Не нужно отслеживать каждое передвижение по карте ради выключения лампы.
В чём разница между person, device_tracker и zone
| Объект | Назначение | Пример |
|---|---|---|
device_tracker | Один источник положения или подключения | device_tracker.phone_gps |
person | Объединённое состояние конкретного человека | person.resident_one |
zone | Географическая область: дом, работа, школа | zone.home |
zone.home state | Количество распознанных людей в домашней зоне | 0, 1, 2... |
У person возможны состояния home, not_home или название другой зоны. Поэтому проверка person.resident_one == not_home не равнозначна проверке «этого человека точно нет дома»: когда он на работе, состояние может быть work.
0 само по себе не гарантирует точность данных, если телефон разрядился или давно не отправлял координаты.Как Person выбирает источник: GPS или Wi-Fi
Home Assistant различает два основных типа device trackers: connection (наличие подключения к маршрутизатору, BLE) и position (GPS и другая геолокация). Алгоритм намеренно не сводится к «последний пришедший сигнал победил».
Активный connection tracker имеет приоритет, поэтому подключение телефона к домашней сети может подтвердить home, даже если GPS временно показывает неточные координаты.
После того как домашние connection trackers сообщают об отсутствии, более свежий position tracker позволяет определить not_home или конкретную зону, например work.
Несколько connection trackers сравниваются по времени обновления; GPS-источники тоже выбираются с учётом актуальности. Именно задержка обновления Wi-Fi-трекера может удерживать home несколько минут после реального ухода. Это штатный защитный компромисс, а не обязательно ошибка.
В актуальной реализации device_tracker различает tracking_type: connection и tracking_type: position. Часть старых integrations ещё использует legacy-модель; Home Assistant планирует удалить её в первой половине 2027 года. Проверяйте совместимость старых интеграций маршрутизаторов.
Как работают зоны Home Assistant
Zone - круговая географическая область с центром и радиусом. При первоначальной настройке Home Assistant создаёт домашнюю зону; стандартный радиус составляет 100 метров. В Settings → Areas, labels & zones → Zones можно изменить её размер и добавить работу, школу, дачу или другие места.
Встроенная домашняя зона особая: она не бывает passive. Другие зоны можно сделать passive, чтобы использовать их в автоматизациях, не назначая их имя как основное состояние трекера.
Как выбрать радиус
- Слишком маленькая зона повышает риск ложных выходов из-за GPS-погрешности.
- Слишком большая зона может считать человека дома ещё у магазина или соседнего дома.
- Перекрывающиеся зоны могут давать неожиданный выбор зоны: смотрите атрибут
in_zonesи размеры областей. - Для жилого комплекса радиус лучше уточнить по фактической геолокации, а не автоматически использовать самый маленький.
GPS-погрешность и задержки доставки координат не позволяют использовать geofence как точный датчик пересечения границы участка или двери.
Почему zone.home удобнее двух десятков условий
Состояние zone.home - число людей, которых Home Assistant сейчас относит к домашней зоне. Например, 2 означает, что система видит двух человек дома, а 0 означает, что система не видит в зоне никого.
| Состояние zone.home | Интерпретация | Действие |
|---|---|---|
2 | Два распознанных человека в зоне | Не запускать режим отсутствия |
1 | Один распознанный человек | Не запускать режим отсутствия |
0 | Распознанных людей в зоне нет | Проверить подтверждение и задержку |
unknown/unavailable | Нет достоверного состояния зоны | Не делать вывод, что дом пуст |
Но есть условие: не забудьте создать person для каждого человека, отсутствие которого важно для сценария. Если кто-то живёт дома без смартфона или без настроенного трекинга, zone.home == 0 не означает, что в квартире физически никого нет.
Companion App как GPS-трекер
Официальное приложение Home Assistant Companion App для Android и iOS создаёт device_tracker. Геолокация может обновляться при пересечении зоны, значительном перемещении, запуске приложения, фоновой проверке или запрошенном обновлении. Интервал не гарантирован: его определяют ОС, доступ к геолокации, заряд батареи и условия сети.
Установите Companion App и добавьте свой сервер Home Assistant.
Разрешите нужный уровень определения местоположения, включая фоновую работу, если она нужна для geofencing.
Проверьте, что появилась entity device_tracker для телефона.
Создайте Person или откройте Settings → People и добавьте к человеку трекер телефона.
Проверьте реальные переходы между домом и улицей прежде, чем запускать действия на оборудовании.
Exact, Zone Name Only и Disabled
У Companion App предусмотрены настройки передачи точного местоположения (Exact), только названия зоны (Zone Name Only) либо полного отключения отправки. Для простого сценария «дома/не дома» передача только имени зоны может быть достаточной и более приватной. Набор доступных параметров зависит от версии приложения и ОС.
Почему Android и iPhone отправляют координаты по-разному
Проверьте разрешения геолокации для фоновой работы, включённую Zone Based Tracking в настройках Companion App и ограничения энергосбережения производителя телефона. Для диагностики полезны Location Sensors. High Accuracy Mode может расходовать батарею заметно быстрее.
Проверьте доступ к геолокации для приложения и системные разрешения. iOS использует события входа/выхода из geofence и significant location changes; это не непрерывный GPS-поток с фиксированным интервалом.
Точное название экранов настроек меняется между версиями Android, iOS и Companion App. Не ориентируйтесь только на скриншоты старых гайдов: откройте текущий раздел приложения, связанный с Location и Privacy.
Нужен ли High Accuracy постоянно?
Обычно нет. Его имеет смысл включать временно для диагностики либо ограничивать определёнными зонами/условиями. Постоянная работа GPS с повышенной точностью увеличивает расход батареи и не устраняет проблемы недоступности самого сервера.
Как телефон передаст местоположение, если человек уже вышел из домашнего Wi-Fi
Вне дома Companion App должен иметь доступ к Home Assistant по мобильному интернету. Это может быть Home Assistant Cloud или корректно настроенный защищённый удалённый доступ. При отсутствии связи приложение может отправить данные позже, и автоматизация сработает с задержкой.
Не нужно ради этой задачи бездумно открывать web-порт Home Assistant через port forwarding. Для частного доступа можно использовать VPN, но важно учитывать, подключается ли он на телефоне автоматически и получает ли приложение доступ к серверу в фоне.
Дополнительные материалы: что должно работать при недоступности Home Assistant и основы архитектуры Home Assistant.
Можно ли определять присутствие по маршрутизатору Keenetic, UniFi или другому роутеру
Да, если конкретная интеграция предоставляет connection-based device_tracker для телефона. Маршрутизатор видит подключение к домашней сети; это часто хороший второй источник в дополнение к GPS.
Но Wi-Fi не равно «человек дома». Телефон может отключить Wi-Fi, уйти в энергосбережение, переключиться между точками доступа или остаться дома, пока человек ушёл без него. Некоторые интеграции определяют активность по DHCP/ARP/ICMP и имеют задержку перед переводом устройства в not_home.
| Источник | Что подтверждает | Слабое место |
|---|---|---|
| GPS Companion | Местоположение телефона | Точность, фоновые ограничения, интернет |
| Wi-Fi/router | Подключение телефона к сети | Сон устройства, задержка удаления клиента |
| BLE beacon | Обнаружение в зоне действия BLE | Радиус, помехи, наличие beacon |
| PIR/mmWave | Движение или присутствие в помещении | Это не идентификация конкретного человека |
Телевизор, стационарный планшет и робот-пылесос не подтверждают, что конкретный человек остался дома. Для Person нужны источники, действительно связанные с человеком.
Настройка определения присутствия с нуля
Настройте домашнюю зону. Проверьте координаты и радиус zone.home.
Подключите Companion App. Убедитесь, что location updates доходят до Home Assistant вне Wi-Fi.
Создайте People. Один Person на каждого участника, учитываемого сценарием.
Добавьте подходящие trackers. GPS обязателен не всегда; второй source выбирайте по надёжности.
Посмотрите состояния. Проверяйте не UI-подпись «Вне дома», а значения person.* и zone.home в Developer Tools.
Проверьте несколько реальных выходов. Запишите время фактического ухода и изменения состояния.
Начните с уведомления. Действия на оборудовании добавляйте только после проверки.
Добавьте задержку и условия. Не выключайте всё по одному мгновенному GPS-событию.
Проверьте перезапуск HA. Убедитесь, что выбранная логика не выполнит нежелательное действие после рестарта.
Как правильно определять, что все ушли из дома
В новых версиях Home Assistant удобен специальный trigger zone.occupancy_cleared: он срабатывает, когда домашняя зона переходит из занятой в пустую. У него есть параметр for, чтобы пустое состояние сохранялось заданное время.
Это лучше, чем отдельные triggers «первый человек вышел», «второй человек вышел» и сложные комбинации not_home для каждой персоны. Но дополнительная проверка достоверности person states остаётся полезной.
У зоны есть и обратный trigger zone.occupancy_detected: он реагирует на переход от нуля к одному или нескольким людям.
Все ушли: выключить только некритичное освещение
В примере два участника. Сценарий выключает конкретную группу светильников через 10 минут после опустения zone.home, но только если обе person entities имеют определённое состояние и не находятся дома.
alias: "Все ушли - выключить подсветку"
description: "Только некритичное освещение"
triggers:
- trigger: zone.occupancy_cleared
options:
zone: zone.home
for: "00:10:00"
conditions:
- condition: template
value_template: >-
{{ has_value('person.resident_one')
and has_value('person.resident_two')
and not is_state('person.resident_one', 'home')
and not is_state('person.resident_two', 'home') }}
- condition: state
entity_id: input_boolean.auto_away_enabled
state: "on"
actions:
- action: light.turn_off
target:
entity_id:
- light.hall_decor
- light.living_room_decor
mode: single
Замените вымышленные entity IDs на собственные и создайте helper input_boolean.auto_away_enabled либо удалите это условие, если оно не нужно. Не распространяйте пример автоматически на холодильник, котёл, сетевое оборудование, устройства безопасности и цепи жизнеобеспечения.
has_value()? Если человек или его источник данных имеет unknown/unavailable, сценарий не считает отсутствие доказанным. Это снижает риск ложного срабатывания, но не спасает от устаревшего состояния, которое внешне выглядит корректным.Кто-то вернулся: включить свет у входа после заката
При переходе домашней зоны из пустой в занятую Home Assistant включает свет у входа, если солнце уже зашло. Сценарий не отпирает замок и не отключает охранную систему.
alias: "Первый вернулся - свет у входа"
triggers:
- trigger: zone.occupancy_detected
options:
zone: zone.home
conditions:
- condition: sun
after: sunset
before: sunrise
actions:
- action: light.turn_on
target:
entity_id: light.entrance
mode: single
Учтите, что домашняя зона имеет радиус, и свет может включиться, пока человек ещё идёт от парковки. Для точного включения при входе лучше использовать датчик открытия двери, кнопку, mmWave/PIR либо дополнительный локальный сигнал.
Проверка без команды оборудованию: уведомление о переходе
На этапе обкатки безопаснее использовать информационные уведомления и смотреть, сколько раз система ошибочно считала дом пустым.
alias: "Диагностика ухода из дома"
triggers:
- trigger: zone.occupancy_cleared
options:
zone: zone.home
for: "00:05:00"
actions:
- action: persistent_notification.create
data:
title: "Home Assistant: зона дома пуста"
message: >-
В {{ now().strftime('%H:%M') }}
zone.home = {{ states('zone.home') }}.
Проверьте реальные положения людей.
mode: single
Это сообщение появляется в интерфейсе Home Assistant, не управляет устройствами и удобно для первичной проверки логики.
Почему возникают ложные уходы и возвращения
| Симптом | Вероятная причина | Что проверить |
|---|---|---|
Человек сидит дома, HA показывает not_home | GPS-погрешность или маленькая зона | Координаты, gps_accuracy, радиус |
После выхода долго остаётся home | Роутер медленно удаляет клиента | Connection tracker, timeout, источник Person |
| Работает дома, не работает вне Wi-Fi | Нет доступа Companion App к серверу | Cloud/VPN, фоновые разрешения, мобильный интернет |
Трекер часто становится unavailable | Интеграция или телефон недоступны | Logs, энергосбережение, сеть |
| Режим «Ушёл» включается ночью | Человек спит, Wi-Fi уснул, роутер потерял подключение | GPS плюс Wi-Fi, проверка person, дополнительные критерии |
| Один человек ушёл, выключился весь свет | Automation на событие одного Person | Заменить на занятость zone.home |
Двойное подтверждение, но без самообмана
Два источника повышают устойчивость только тогда, когда их ошибки действительно независимы. Два трекера, построенные на данных одного и того же телефона, всё ещё зависят от его заряда, ОС и сети. Для критичных решений нужна отдельная физическая логика.
Как отличить «человек ушёл» от «перестали приходить данные»
В Home Assistant unknown и unavailable не равнозначны not_home. Более того, у person за пределами домашней зоны может быть другое именованное состояние: work, school и т. п.
Данные актуальны, домашняя зона пуста, источники показывают положение вне дома, выдержана задержка.
Нет связи, устройство выключено, интеграция упала или информация давно не обновлялась. Автоматически считать дом пустым нельзя.
Для автоматизаций, управляющих дорогостоящими или опасными процессами, полезна стратегия fail-safe: при сомнениях сохранить безопасный режим, не принимать необратимых решений и уведомить владельца.
Подробнее о корректной обработке состояний читайте в статье Шаблоны Jinja, template sensors и availability.
Что происходит с задержкой for после перезагрузки
У обычных state/template triggers ожидание for не переживает перезапуск Home Assistant или перезагрузку автоматизаций. Это необходимо учитывать и при выборе специальных zone triggers: проверяйте фактическое поведение на используемой версии.
Если важно гарантированно выполнить действие после длительного периода отсутствия даже при рестарте, простого ожидания в автоматизации недостаточно. Для устойчивых сценариев используют сохранённый дедлайн (input_datetime), отдельную проверку при запуске и явную валидацию текущих данных. В такую схему нужно заложить защиту от действий сразу после восстановления системы с устаревшими состояниями.
Разница особенно важна для охраны, отопления, насосов и исполнительных устройств.
Сценарии, для которых геолокация действительно подходит
После выхода из зоны «Работа» заранее изменить целевой комфортный режим с учётом штатной автоматики отопления.
Спустя заданное время после подтверждённого ухода выключить некритичное освещение.
Когда последний человек ушёл, напомнить о незакрытом окне или включённой вытяжке.
Включить свет у входа, если темно, без автоматического отпирания замков.
Плохие сценарии для одной лишь геолокации: автоматическое отпирание входной двери, полное отключение отопления без защиты от замерзания, прямое отключение важных линий питания и автоматическое снятие охраны без дополнительной авторизации.
Как определять присутствие в комнате, а не только дома
GPS и домашняя зона не дадут надёжного ответа на вопрос, находится ли человек в спальне или гостиной. Для этого нужны PIR, mmWave, датчики дверей, локальные Bluetooth-системы или сочетания сигналов.
На сайте уже есть подробный материал mmWave или PIR: какой датчик присутствия выбрать. А практические сценарии освещения, отопления и протечек рассмотрены в статье Локальные сценарии Home Assistant.
Стоит ли использовать Bluetooth, iBeacon и Wi-Fi одновременно
Иногда стоит, но не ради количества датчиков. Wi-Fi подтверждает локальное подключение телефона; BLE/iBeacon может дать дополнительный локальный сигнал, а GPS удобен для зоны «Работа» и возвращения домой.
- Если достаточно знать, что кто-то дома, начните с Person + Companion + корректной home zone.
- Если GPS регулярно ошибается у дома, добавьте качественный connection tracker от маршрутизатора.
- Если нужна точность по комнате, используйте локальные датчики и не рассчитывайте на один GPS.
- Если решение влияет на безопасность, добавьте ручное подтверждение или независимые средства контроля.
Что проверить, если присутствие Home Assistant определяется неправильно
Проверить Person. Какие trackers привязаны, нет ли устаревшего устройства или неверного владельца?
Проверить исходные trackers. Состояние, tracking_type, время обновления, gps_accuracy, in_zones.
Проверить радиус zone.home. Не находится ли дом у границы зоны?
Проверить доступ с мобильной сети. Доступен ли HA, когда телефон не в Wi-Fi?
Проверить разрешения ОС. Есть ли background location и разрешена ли фоновая работа?
Проверить connection tracker. Как быстро он считает телефон отключённым?
Проверить zone.home. Отображает ли правильное число людей?
Проверить automation Trace. Какой trigger сработал и почему conditions прошли или не прошли?
Проверить часы и перезапуски. Не сбрасывается ли ожидание for?
Оставить диагностические уведомления. Понаблюдать несколько реальных выходов и возвращений.
Если проблемы начались после обновления, откройте материал Home Assistant после обновления: unavailable и не работают автоматизации.
Как настроить контроль присутствия без лишнего наблюдения
- Отслеживайте только тех участников, кто дал согласие и понимает, какие данные сохраняются.
- Выбирайте Zone Name Only вместо точных координат, если этого достаточно для сценария.
- Не публикуйте dashboard с картой местоположений в открытый интернет.
- Настройте индивидуальные учётные записи, права и двухфакторную аутентификацию.
- Проверяйте доступ к истории и резервным копиям Home Assistant.
- Не используйте данные присутствия как скрытый инструмент контроля работников или членов семьи.
Безопасность пользователей и устойчивость отопления, электропитания и физического доступа важнее удобства автоматического режима «Ушёл».
Что должно быть готово перед запуском автоматического режима «Ушёл»
Корректный центр и радиус home zone
В настройках каждого Person назначены актуальные trackers
Телефоны передают местоположение вне домашнего Wi-Fi
Обработаны состояния unknown и unavailable
Проверены реальные события ухода нескольких людей
Есть разумная задержка и понятная логика повторных событий
Устройства, критичные для безопасности, исключены из автоматического выключения
Проведён тест при перезагрузке Home Assistant
Сделан backup и сохранена возможность ручного управления
Что читать дальше
Официальные источники
Основой материала служат актуальные разделы документации Home Assistant и Companion App. Поскольку интерфейс и набор triggers развиваются, при настройке конкретной системы проверяйте версию Home Assistant Core и приложения.
- Home Assistant: Person - объединение GPS и connection trackers.
- Home Assistant: Device Tracker - типы трекеров и состояния.
- Home Assistant: Zone - настройка home zone, счётчик людей, passive zones.
- Zone occupancy cleared - современный trigger для отсутствия людей.
- Zone occupancy detected - современный trigger для возвращения.
- Companion App: Location - разрешения, способы и настройки обновления геопозиции.
- Automation triggers - поведение
forпри перезапуске.
Частые вопросы о присутствии в Home Assistant
Как Home Assistant понимает, что человек дома?
Через device trackers телефона, маршрутизатора и других источников. Их можно объединить в Person и использовать домашнюю зону.
Что лучше: GPS или Wi-Fi для определения присутствия?
GPS полезен для географических зон и выхода из дома, Wi-Fi подтверждает локальное подключение. Комбинация часто надёжнее одного источника.
Почему person всё ещё home, хотя человек ушёл?
Возможна задержка connection tracker маршрутизатора, который пока считает телефон подключённым. Проверьте исходный tracker и его таймаут.
Почему person показывает название работы, а не not_home?
Когда GPS находится в определённой zone, Person может получить имя этой зоны. Это корректное состояние отсутствия дома.
Что такое zone.home в Home Assistant?
Домашняя географическая зона. Её числовое состояние показывает количество распознанных людей, находящихся внутри.
Как определить, что ушёл последний человек?
Используйте Zone occupancy cleared для zone.home, затем при необходимости добавьте задержку и проверку актуальности данных.
Нужно ли открывать порт 8123 ради геолокации?
Нет. Можно обеспечить защищённый доступ через Home Assistant Cloud или правильно настроенный VPN/другой безопасный способ.
Как определить присутствие без передачи точных GPS-координат?
В Companion App можно использовать Zone Name Only, если этот режим поддерживается вашей версией и соответствует сценарию.
Почему iPhone или Android задерживает обновление геолокации?
Мобильные ОС регулируют фоновую работу и расход энергии. Также влияют разрешения, точность, сеть и доступ к серверу.
Можно ли определить присутствие человека по Keenetic или UniFi?
Да, если установленная интеграция создаёт нужный connection device_tracker. Однако факт подключения телефона к сети не гарантирует физическое присутствие человека.
Поможет ли PIR/mmWave вместо GPS?
Для присутствия в комнате да. Для различения конкретных людей, зоны работы или поездки за пределы дома обычный PIR/mmWave не заменяет геолокацию.
Можно ли автоматически ставить дом на охрану, когда все ушли?
Технически возможно, но не стоит полагаться только на геолокацию. Для охранных функций необходимы дополнительные подтверждения и корректная архитектура безопасности.
Почему режим «Ушёл» запускается из-за unavailable?
Обычно причина в ошибочной логике, которая принимает отсутствие данных за отсутствие человека. Нужно отдельно обрабатывать unknown/unavailable и проверять источник.
Переживает ли ожидание for перезагрузку Home Assistant?
Для обычных state/template triggers ожидание for сбрасывается при restart/reload. Для надёжной долгосрочной логики нужно предусмотреть сохранение дедлайна и отдельную проверку после запуска.
Если умный дом ошибается с присутствием
Когда в доме несколько телефонов, Wi-Fi-точек, VPN, Zigbee-датчиков и Home Assistant, надёжный режим «Дома / Ушёл» зависит от согласованной архитектуры, а не от одной галочки.
Для анализа логики, настройки Home Assistant и устранения нестабильных сценариев посмотрите онлайн-консультации по умному дому. Если требуется работа с оборудованием на объекте в Туле и Тульской области, доступна настройка систем умного дома.
