Automatyzacje w rodzaju „przykręć ogrzewanie, gdy wszyscy wyjdą” albo „zapal światło przed wejściem, kiedy wracam” zależą od jednego: Home Assistant musi wiedzieć, kto jest w domu. Pojedyncza aplikacja w telefonie albo sprawdzanie routera myli się zaskakująco często. GPS dryfuje, telefony usypiają Wi-Fi, a po ponownym uruchomieniu lokalizator potrafi przez chwilę trzymać stary stan.

Home Assistant rozwiązuje to encjami osób. Do osoby można przypisać kilka lokalizatorów, a jej stan wynika z nich wszystkich według stałych reguł. Połącz lokalizator, który zna położenie telefonu, z takim, który wie, że telefon jest w domowej sieci, a dostaniesz stan szybki i trudny do oszukania. Automatyzacje budujesz potem na strefach i osobach, a nie na pojedynczych lokalizatorach.

Dwa rodzaje lokalizatorów

Lokalizatory (encje device_tracker) dzielą się na dwa typy i od tego zależy, jak są łączone.

  • Lokalizatory położenia podają współrzędne: szerokość i długość geograficzną oraz dokładność GPS. Home Assistant sam ustala, w której strefie jest urządzenie. Typowy przykład to aplikacja Home Assistant Companion w telefonie.
  • Lokalizatory połączenia wiedzą tylko, czy urządzenie jest z czymś połączone: z routerem, punktem dostępowym Wi-Fi albo nadajnikiem Bluetooth. Nie mają współrzędnych. Gdy urządzenie jest połączone, umieszczają je w przypisanej strefie, domyślnie w domu.

Stan lokalizatora to nazwa strefy, w której jest urządzenie, albo home, not_home, unavailable lub unknown. Jeśli urządzenie jest w kilku nakładających się strefach, stanem jest najmniejsza z nich, a atrybut in_zones zawiera wszystkie, od najmniejszej.

Jeszcze jedna uwaga: według dokumentacji starsze lokalizatory, które nie podają typu śledzenia, mają zostać usunięte w pierwszej połowie 2027 roku. Jeśli wciąż masz stary lokalizator konfigurowany w YAML, sprawdź, czy jest dla niego nowoczesna integracja.

Jak osoba wybiera stan

Tę część warto dobrze znać, bo wyjaśnia większość zagadek typu „czemu pokazuje, że mnie nie ma”. Według dokumentacji integracji osób, gdy osoba ma kilka lokalizatorów, stan jest wybierany w tej kolejności:

  1. Jeśli którykolwiek lokalizator połączenia zgłasza, że urządzenie jest połączone (w domu), wygrywa ten z nich, który zaktualizował się najpóźniej.
  2. W przeciwnym razie wygrywa ostatnio zaktualizowany lokalizator położenia.
  3. Jeśli żaden z tych warunków nie pasuje, używany jest najnowszy lokalizator ze stanem not_home.

W praktyce, gdy jesteś w domu, ostatnie słowo ma router albo ping i skaczący odczyt GPS nie „wyprowadzi” cię z mieszkania. Gdy wyjdziesz, a lokalizator połączenia przejdzie na not_home, prowadzenie przejmuje położenie telefonu i pokazuje, w której strefie jesteś. Encja osoby kopiuje przy tym atrybuty latitude, longitude, gps_accuracy i in_zones z lokalizatora, za którym akurat podąża.

Dokumentacja omawia siedmiokrokowy przykład z lokalizatorem GPS, routerem i lokalizatorem BLE, łącznie z tym, co dzieje się po ponownym uruchomieniu. Warto go przeczytać, jeśli domownicy mają po kilka lokalizatorów.

Krok 1: aplikacja Companion jako lokalizator położenia

Zainstaluj aplikację Home Assistant Companion na każdym telefonie i zaloguj się. Aplikacja tworzy lokalizator telefonu. Dla wykrywania obecności liczą się te ustawienia:

  • Location Sent, czyli rodzaj wysyłanej lokalizacji. Aplikacja może wysyłać dokładne położenie, tylko nazwę strefy albo nic. Dokumentacja zauważa, że opcja „Zone Name Only” wysyła tylko nazwę strefy albo not_home. To wystarcza do wykrywania obecności i nie zdradza, gdzie dokładnie jesteś.
  • Uprawnienie do lokalizacji. Daj aplikacji dostęp do lokalizacji w tle, inaczej będzie zgłaszać położenie tylko wtedy, gdy jest otwarta.
  • Na Androidzie śledzenie oparte na strefach. Aplikacja zgłasza wejście do strefy i wyjście z niej tylko wtedy, gdy ta funkcja jest włączona. Android może też wysyłać aktualizacje w tle, które według dokumentacji przychodzą zwykle co jedną do trzech minut. Jest też tryb wysokiej dokładności z domyślnym odstępem 5 sekund, ale szybko rozładowuje baterię, więc można go ograniczyć do chwil, gdy telefon jest połączony z wybranym urządzeniem Bluetooth albo przebywa w strefie.
  • Na iOS znaczące zmiany położenia. Poza wejściem do strefy i wyjściem z niej iOS wysyła aktualizację po znaczącej zmianie położenia, którą Apple, cytowane w dokumentacji, określa jako 500 metrów lub więcej. Takie aktualizacje budzą też aplikację co najmniej raz na 15 minut.

Aplikacja ma też czujnik sensor.last_update_trigger, który pokazuje, co wywołało ostatnią aktualizację położenia. To pierwsze miejsce, do którego warto zajrzeć, gdy aktualizacja przyszła za późno.

Krok 2: lokalizator połączenia w domowej sieci

Drugi lokalizator, który odpowiada tylko na pytanie „czy telefon jest w mojej sieci”, znacznie stabilizuje stan „w domu”. Jeśli router ma integrację z Home Assistantem ze śledzeniem urządzeń, użyj jej. Jeśli nie, integracja Ping działa w każdej sieci:

  1. Przypisz telefonowi stały adres: statyczny IP albo, lepiej, rezerwację DHCP w routerze.
  2. Dodaj integrację Ping w „Ustawienia > Urządzenia oraz usługi” i wpisz adres telefonu.
  3. Włącz encję lokalizatora. Dokumentacja zaznacza, że domyślnie jest wyłączona.

Domyślnie Ping sprawdza urządzenie co 30 sekund, wysyłając 5 zapytań. Opcja „Consider home” określa, ile czasu musi minąć od utraty połączenia, zanim urządzenie zostanie uznane za nieobecne. Domyślnie to 180 sekund, więc krótkie przerwy nie liczą się jako wyjście z domu. Ping nie potrzebuje adresów MAC ani ARP, dlatego działa też wtedy, gdy telefony są w innej podsieci niż Home Assistant, gdzie metody oparte na ARP zawodzą.

Dokumentacja Pinga sama wskazuje słaby punkt: bezczynne telefony wyłączają Wi-Fi albo przestają odpowiadać, więc sam Ping jest zawodny. Właśnie dlatego nie powinien działać w pojedynkę, tylko razem z aplikacją Companion przy tej samej osobie.

Krok 3: przypisanie lokalizatorów do osoby

Przejdź do „Ustawienia > Osoby” i otwórz osobę albo dodaj nową. Osoba nie potrzebuje konta w Home Assistancie, więc możesz dodać domowników, którzy nigdy nie zaglądają do panelu. W sekcji lokalizatorów dodaj lokalizator z aplikacji Companion i lokalizator z Pinga albo routera.

Osoby można też zdefiniować w YAML:

person:
  - name: Nina
    id: nina
    device_trackers:
      - device_tracker.nina_phone
      - device_tracker.nina_phone_ping

Po zmianie pliku przeładuj osoby akcją person.reload.

Krok 4: strefy

Strefa domowa powstaje podczas pierwszej konfiguracji na podstawie lokalizacji domu i ma promień 100 metrów. Nie da się jej usunąć. Sprawdź, czy naprawdę obejmuje dom. Jeśli GPS często umieszcza cię tuż za jej granicą, zwiększ promień, zamiast dokładać kolejne lokalizatory.

Pozostałymi strefami zarządzasz w „Ustawienia > Obszary, etykiety i strefy”, na karcie stref. Położenie ustawiasz na mapie, a promień w metrach. Strefa oznaczona jako pasywna jest ukryta w interfejsie i nie wpływa na stan lokalizatorów, ale nadal możesz jej używać w automatyzacjach. Dokumentacja wspomina o przydatnym szczególe: od wersji 2026.6.0 aplikacji Companion i Home Assistanta aplikacja może w ramach funkcji testowej zgłaszać wszystkie strefy, w których jesteś, także pasywne.

Stan każdej strefy to liczba osób, które się w niej znajdują. Jeśli zone.home pokazuje 2, w domu są dwie osoby. Na tym opierają się opisane niżej wyzwalacze obecności w strefie.

Krok 5: automatyzacje na osobach i strefach

Dokumentacja lokalizatorów zaleca taki schemat: lokalizatory przypisane do osób i automatyzacje z wyzwalaczami stref dla tych osób. Integracja stref ma cztery wyzwalacze: zone.entered, zone.left, zone.occupancy_detected i zone.occupancy_cleared. Ten przykład pochodzi z dokumentacji stref (komunikat przetłumaczony):

alias: "Powiadom, gdy Nina dotrze do pracy"
triggers:
  - trigger: zone.entered
    target:
      entity_id: person.nina
    options:
      zone: zone.work
actions:
  - action: notify.send_message
    target:
      entity_id: notify.my_device
    data:
      message: "Nina jest w pracy."

Na sytuację „wyszła ostatnia osoba” użyj wyzwalacza obecności dla strefy domowej. Uruchamia się, gdy strefa przechodzi ze stanu zajętej na pustą, więc nie ma znaczenia, kto wychodzi ostatni:

alias: "Wszyscy wyszli"
triggers:
  - trigger: zone.occupancy_cleared
    options:
      zone: zone.home
actions:
  - action: climate.set_preset_mode
    target:
      entity_id: climate.living_room
    data:
      preset_mode: away

zone.occupancy_detected to odpowiednik dla sytuacji „pierwsza osoba wróciła”. Wśród warunków są zone.in_zone, zone.not_in_zone, zone.occupancy_is_detected i zone.occupancy_is_not_detected. Starszy wyzwalacz trigger: zone z event: enter albo event: leave nadal działa, jeśli masz oparte na nim automatyzacje.

Z dokumentacji wyzwalaczy warto zapamiętać jeszcze jedno: wyzwalacze reagują w chwili zmiany, a większość wyzwalaczy encji nie reaguje na przejście ze stanu unavailable albo unknown. Ponowne uruchomienie, po którym osoba wraca z unknown do home, zwykle nie zostanie potraktowane jako powrót do domu.

Typowe błędy

  • Automatyzacje na pojedynczym lokalizatorze zamiast na osobie. Używaj encji person.* i stref, a późniejsze ulepszanie lokalizatorów nie będzie wymagało przepisywania automatyzacji.
  • Sam Ping. Telefony usypiają Wi-Fi i osoba „wychodzi” z domu. Połącz go z aplikacją Companion.
  • Brak rezerwacji DHCP. Telefon dostaje nowy adres, a Ping sprawdza stary.
  • Niewłączona encja lokalizatora z Pinga. Domyślnie jest wyłączona.
  • Strefa domowa w złym miejscu albo za mała. Sprawdź ją na mapie, zanim zaczniesz poprawiać cokolwiek innego.
  • Wyłączona lokalizacja w tle dla aplikacji. Telefon zgłasza wtedy położenie tylko przy otwartej aplikacji.
  • Porównywanie stanu zone.home z nazwą. Stan to liczba osób, a nie home czy away.