Присутствие в Home Assistant: Person, Zones, GPS и Wi-Fi
Home Assistant / Геолокация / Автоматизация

Присутствие в Home Assistant: person, zones, Companion App и защита от ложного режима «Ушёл»

Как определить, кто действительно дома, объединить геолокацию телефона с данными Wi-Fi, правильно настроить зоны и не выключить свет или отопление из-за случайного сбоя связи. Практический гайд по device_tracker, person, zone.home и надёжным сценариям.

PersonDevice trackerGPS / Wi-FiZonesCompanion App2026
Комната и дом - разные задачи

PIR/mmWave определяет движение или присутствие в комнате. GPS, маршрутизатор и Home Assistant Person определяют присутствие человека дома или в другой географической зоне.

Не используйте один источник как абсолютную истину

Телефон может разрядиться, Wi-Fi отключиться, геолокация задержаться. Правила должны учитывать неизвестное состояние.

Отсутствие требует осторожности

Выключить декоративную подсветку можно автоматически. Перекрыть отопление или включить охрану лучше только после дополнительных проверок.

Архитектура

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

Сам Home Assistant не умеет угадывать местоположение. Источники данных создают device_tracker: приложение телефона отправляет координаты, а интеграция маршрутизатора сообщает о подключении устройства к сети. Один или несколько трекеров назначаются человеку (person), а правила автоматизации используют его состояние или занятость географической зоны.

Телефон: GPSРоутер: подключение к сети
↓
device_tracker.phone_gpsdevice_tracker.phone_wifi
↓
person.resident_one
↓
zone.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 можно изменить её размер и добавить работу, школу, дачу или другие места.

Домzone.home
Работаzone.work
Дачаzone.cabin

Встроенная домашняя зона особая: она не бывает 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. Геолокация может обновляться при пересечении зоны, значительном перемещении, запуске приложения, фоновой проверке или запрошенном обновлении. Интервал не гарантирован: его определяют ОС, доступ к геолокации, заряд батареи и условия сети.

01

Установите Companion App и добавьте свой сервер Home Assistant.

02

Разрешите нужный уровень определения местоположения, включая фоновую работу, если она нужна для geofencing.

03

Проверьте, что появилась entity device_tracker для телефона.

04

Создайте Person или откройте Settings → People и добавьте к человеку трекер телефона.

05

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

Exact, Zone Name Only и Disabled

У Companion App предусмотрены настройки передачи точного местоположения (Exact), только названия зоны (Zone Name Only) либо полного отключения отправки. Для простого сценария «дома/не дома» передача только имени зоны может быть достаточной и более приватной. Набор доступных параметров зависит от версии приложения и ОС.

Геолокация - персональные данные. Включайте её только с согласия участников, ограничивайте доступ к серверу и используйте минимально достаточную точность и объём истории.
Операционные системы

Почему Android и iPhone отправляют координаты по-разному

Android

Проверьте разрешения геолокации для фоновой работы, включённую Zone Based Tracking в настройках Companion App и ограничения энергосбережения производителя телефона. Для диагностики полезны Location Sensors. High Accuracy Mode может расходовать батарею заметно быстрее.

iOS

Проверьте доступ к геолокации для приложения и системные разрешения. 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.

Wi-Fi

Можно ли определять присутствие по маршрутизатору 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.

Телевизор, стационарный планшет и робот-пылесос не подтверждают, что конкретный человек остался дома. Для Person нужны источники, действительно связанные с человеком.

Пошагово

Настройка определения присутствия с нуля

01

Настройте домашнюю зону. Проверьте координаты и радиус zone.home.

02

Подключите Companion App. Убедитесь, что location updates доходят до Home Assistant вне Wi-Fi.

03

Создайте People. Один Person на каждого участника, учитываемого сценарием.

04

Добавьте подходящие trackers. GPS обязателен не всегда; второй source выбирайте по надёжности.

05

Посмотрите состояния. Проверяйте не UI-подпись «Вне дома», а значения person.* и zone.home в Developer Tools.

06

Проверьте несколько реальных выходов. Запишите время фактического ухода и изменения состояния.

07

Начните с уведомления. Действия на оборудовании добавляйте только после проверки.

08

Добавьте задержку и условия. Не выключайте всё по одному мгновенному GPS-событию.

09

Проверьте перезапуск HA. Убедитесь, что выбранная логика не выполнит нежелательное действие после рестарта.

Готовая логика

Как правильно определять, что все ушли из дома

В новых версиях Home Assistant удобен специальный trigger zone.occupancy_cleared: он срабатывает, когда домашняя зона переходит из занятой в пустую. У него есть параметр for, чтобы пустое состояние сохранялось заданное время.

Это лучше, чем отдельные triggers «первый человек вышел», «второй человек вышел» и сложные комбинации not_home для каждой персоны. Но дополнительная проверка достоверности person states остаётся полезной.

Область стала пустой→10 минут ожидания→проверка персон→безопасное действие

У зоны есть и обратный trigger zone.occupancy_detected: он реагирует на переход от нуля к одному или нескольким людям.

Пример YAML №1

Все ушли: выключить только некритичное освещение

В примере два участника. Сценарий выключает конкретную группу светильников через 10 минут после опустения zone.home, но только если обе person entities имеют определённое состояние и не находятся дома.

Пример автоматизацииautomation YAML
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, сценарий не считает отсутствие доказанным. Это снижает риск ложного срабатывания, но не спасает от устаревшего состояния, которое внешне выглядит корректным.
Пример YAML №2

Кто-то вернулся: включить свет у входа после заката

При переходе домашней зоны из пустой в занятую Home Assistant включает свет у входа, если солнце уже зашло. Сценарий не отпирает замок и не отключает охранную систему.

Пример автоматизацииautomation YAML
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 либо дополнительный локальный сигнал.

Пример YAML №3

Проверка без команды оборудованию: уведомление о переходе

На этапе обкатки безопаснее использовать информационные уведомления и смотреть, сколько раз система ошибочно считала дом пустым.

Вариант с persistent_notificationautomation YAML
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_homeGPS-погрешность или маленькая зонаКоординаты, 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), отдельную проверку при запуске и явную валидацию текущих данных. В такую схему нужно заложить защиту от действий сразу после восстановления системы с устаревшими состояниями.

Не путайте «10 минут нет людей по данным HA» и «10 минут реальный дом пуст».

Разница особенно важна для охраны, отопления, насосов и исполнительных устройств.

Практика

Сценарии, для которых геолокация действительно подходит

Подготовить комфорт к приезду

После выхода из зоны «Работа» заранее изменить целевой комфортный режим с учётом штатной автоматики отопления.

Выключить ненужный свет

Спустя заданное время после подтверждённого ухода выключить некритичное освещение.

Прислать напоминание

Когда последний человек ушёл, напомнить о незакрытом окне или включённой вытяжке.

Отметить возвращение

Включить свет у входа, если темно, без автоматического отпирания замков.

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

Смежная тема

Как определять присутствие в комнате, а не только дома

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 определяется неправильно

01

Проверить Person. Какие trackers привязаны, нет ли устаревшего устройства или неверного владельца?

02

Проверить исходные trackers. Состояние, tracking_type, время обновления, gps_accuracy, in_zones.

03

Проверить радиус zone.home. Не находится ли дом у границы зоны?

04

Проверить доступ с мобильной сети. Доступен ли HA, когда телефон не в Wi-Fi?

05

Проверить разрешения ОС. Есть ли background location и разрешена ли фоновая работа?

06

Проверить connection tracker. Как быстро он считает телефон отключённым?

07

Проверить zone.home. Отображает ли правильное число людей?

08

Проверить automation Trace. Какой trigger сработал и почему conditions прошли или не прошли?

09

Проверить часы и перезапуски. Не сбрасывается ли ожидание for?

10

Оставить диагностические уведомления. Понаблюдать несколько реальных выходов и возвращений.

Если проблемы начались после обновления, откройте материал 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 и приложения.

FAQ

Частые вопросы о присутствии в 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 и устранения нестабильных сценариев посмотрите онлайн-консультации по умному дому. Если требуется работа с оборудованием на объекте в Туле и Тульской области, доступна настройка систем умного дома.