Presence Detection: Schritt 2 - Bluetooth
Um eine schnellere und verlässlichere Kontrolle der Anwesenheit zu bekommen, möchte ich Bluetooth als device_tracker einsetzen. Hierzu muss zuerst einmal ein Bluetooth USB-Stick an die Synology DS angeschlossen und im Docker aktiviert werden. Dies ist in folgenden Artikel beschrieben.
Aktivieren der device_tracker Platform
configuration.yaml
################################################################
## Device-Tracking Platforms
################################################################
# Discover some devices automatically
discovery:
[...]
unifi:
[...]
device_tracker:
- platform: bluetooth_tracker
track_new_devices: no
interval_seconds: 5
consider_home: 12
new_device_defaults:
track_new_devices: false
hide_if_away: false
Einrichten der neuen Geräte
Eintragen der bekannten Bluetooth MAC-Adressen:
known_devices.yaml
iphone8_max_bt: name: iPhone8 Max BT mac: BT_xx:xx:xx:xx:xx:xx icon: mdi:cellphone-iphone picture: hide_if_away: false track: true iphone8_ing_bt: name: iPhone8 Ing BT mac: BT_xx:xx:xx:xx:xx:xx icon: mdi:cellphone-iphone picture: hide_if_away: false track: true
Anpassen der Icons der Entitäten:
packages/presence_detection.yaml
homeassistant:
customize:
device_tracker.iphone8_max_bt:
icon: mdi:bluetooth-audio
device_tracker.iphone8_ing_bt:
icon: mdi:bluetooth-audio
Als nächstes werden die zentralen Gruppen mit den Geräten pro Person erweitert:
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
- device_tracker.iphone8_max_bt
phone_ing:
name: Phone Ing
control: hidden
entities:
- device_tracker.iphone8_ing_wifi
- device_tracker.iphone8_ing_bt
Anpassen der Status-Ermittlung
Der wichtige Sensor für die Berechnung der Anzahl Personen zuhause muss mit den neuen Entitäten erweitert werden, so dass er auch korrekt aktualisiert wird. Dies ist eine "unschöne" Konsequenz daraus, dass ich je Person eine Gruppe für die zu verfolgenden Geräte pflege. Sensoren aus Gruppen werden in HA nur dann aktualisiert, wenn sich der Status der Gruppe, und nicht nur einer der beteiligten Sensoren der Gruppe, ändert.
packages/presence_detection.yaml
sensor:
# Anzahl der Personen zuhause
- platform: template
sensors:
n_people_home:
friendly_name: Number of People Home
entity_id:
# list all entities (not group) otherwise the trigger will not perform correctly
- device_tracker.iphone8_max_wifi
- device_tracker.iphone8_ing_wifi
- device_tracker.iphone8_ing_bt
- device_tracker.iphone8_max_bt
- input_boolean.guests
value_template: >
{{ (1 if states|selectattr('entity_id','in',state_attr('group.phone_max','entity_id'))
|selectattr('state','eq','home')|list|count > 0 else 0) +
(1 if states|selectattr('entity_id','in',state_attr('group.phone_ing','entity_id'))
|selectattr('state','eq','home')|list|count > 0 else 0) +
(1 if is_state('input_boolean.guests','on') else 0) }}
Fazit
Positiv:
- nun ist die Ankunftserkennung noch schneller ('home' bevor die Wohnungstür aufgeschlossen ist)
- wenn die gesamte Wohnung mit BT abgedeckt wird, kann die WLAN device_tracker entfallen
- BT bleibt an, wenn iPhone in den Schlaf fällt
Negativ:
- in meinem Fall keine ausreichende Abdeckung der Wohnung mit einem BT device -->
- WLAN noch notwendig
- kein schnelleres Ausbuchen (not_home)
- öfter Oszillieren von home <-> not_home der BT-Sensoren (möglicherweise durch die schlechte BT Abdeckung)