Presence Detection: Schritt 1 - WLAN
Eine erste schnelle Variante der Anwesenheitskontrolle ist über WLAN. Mein WLAN wird durch 2 Ubiquity Unifi APs bereitgestellt, welche über die Unifi-Controller Software verwaltet werden. Diese lässt sich sehr gut in Home-Assistant einbinden und der Status von Geräten ermitteln.
Einschalten des 'device trackers'
configuration.yaml
################################################################
## Device-Tracking Platforms
################################################################
# Discover some devices automatically
discovery:
ignore:
- igd #=Internet Gateway Device: to prevent discovery notification of upnp/igd values of FitzBox
unifi:
controllers:
- host: !secret unifi_host
site: home
ssid_filter:
- !secret unifi_ssid_private
dont_track_wired_clients: true
Damit wird eine neue Integration "UniFi-Controller: home" in Einstellungen > Integrationen erzeugt. Neue Geräte werden automatisch angezeigt, Entitäten angelegt und aktiviert. Dies wird verhindert über
- Einstellungen für UniFi-Controller > Neu hinzugefügte Entitäten aktivieren: aus
Weitere Optionen der Integration:
- Nachverfolgen von Netzwerkclients: an
- Einbinden von kabelgebundenen Netzwerk-Clients: aus
- Verfolgen von Netzwerkgeräten (Ubiquiti-Geräte): aus
- Zeit in Sekunden vom letzten Gesehenen bis zur Entfernung: 300
Einrichten der neuen Geräte
2 neue Entitäten wurden in der Integration benannt:
- device_tracker.iphone8_max_wifi
- device_tracker.iphone8_ing_wifi
Als benutzerdefiniertes Icon:
packages/presence_detection.yaml
homeassistant:
customize:
device_tracker.iphone8_max_wifi:
icon: mdi:cellphone-wireless
device_tracker.iphone8_ing_wifi:
icon: mdi:cellphone-wireless
Gerätegruppe je Person
Ich möchte eine zentrale Stelle haben, an der für jede Person das Gerät (oder die Geräte) verwaltet werden, die für die Anwesenheitserkennung herangezogen werden sollen. Bei einem Wechsel der Telefone möchte ich nicht in unzähligen Automatisierungen ein spezifisches Gerät ändern müssen. Hierfür nutze ich Gruppen:
packages/presence_detection.yaml
group:
# group.phone_* dient zum zentralen Setzen des aktuell zu prüfenden Devices pro Person.
# Werden mehrere Geräte angegeben, dann ist Gruppe 'on'='anwesend' wenn mindestens ein Gerät 'on' ist.
phone_max:
name: Phone Max
control: hidden
entities:
- device_tracker.iphone8_max_wifi
phone_ing:
name: Phone Ing
control: hidden
entities:
- device_tracker.iphone8_ing_wifi
Diese Gruppen werden dann "anwesend" (=home) gesetzt, wenn mindestens eine der angegebenen Entitäten "anwesend" (=home). Also insbesonders ist zu beachten, dass die Gruppe nur denn "abwesend" (=not_home) wird, wenn alle angegebenen Entitäten "abwesend" sind (falls mehrere Entitäten Mitglied der Gruppen sein sollten).
Fazit
Positiv:
- Schnell zu implementieren
- Nutzen vorhandener WLAN-Infrastruktur, keine Zusatzhardware
- relativ schnelles Erkennen von 'home' (Einbuchen ins WLAN und Rückmeldung im device_tracker.* in ca 5-10sec)
Negativ:
- lange Zeiten bis Geräte beim Verlassen der Wohnung aus dem WLAN entfernt werden (5-10min)
- Keine Erkennung, wenn WLAN am Telefon ausgeschaltet ist.
- Verlust der WLAN Verbindung, wenn iPhone in den Schlaf fällt und damit ungewünschtes Ändern des Status