Hallo zusammen,
ich habe in den letzten Wochen intensiv daran gearbeitet, meine AirTags als vollwertige Device Tracker in Home Assistant einzubinden. Hier sind meine Erfahrungen, die Stolpersteine die ich dabei hatte, und ein paar Tipps die euch Zeit sparen können.
Was ich erreichen wollte
AirTag-Standorte direkt in HA – GPS-Koordinaten, Zonen-Erkennung, Batteriestatus und Automatisierungen auf Basis der AirTag-Positionen. Kein Cloud-Dashboard, keine Drittanbieter-App, sondern native HA-Entities.
Der Stack
-
findmy.py von @malmeloo – Python-Bibliothek die das Apple FindMy Netzwerk direkt abfragt
-
hass-FindMy Custom Integration – bindet findmy.py als echte HA Config Entries ein
-
Zwei Apple Accounts für kürzere Update-Intervalle (dazu gleich mehr)
Setup
- Auf einem Mac der mit eurer Apple ID angemeldet ist, die AirTag-Keys exportieren:
bash
python3 -m venv ~/findmy-env
source ~/findmy-env/bin/activate
pip install findmy
python3 -m findmy decrypt --out-dir ~/devices/
-
In HA: hass-FindMy über HACS installieren, zuerst den Apple Account einrichten (E-Mail + Passwort, 2FA via vertrauenswürdiges Gerät oder SMS)
-
Jedes AirTag als eigenes „Rolling Device“ hinzufügen – dafür die JSON-Datei aus
~/devices/hochladen
Wichtige Dinge die ihr wissen solltet
Alignment beim ersten Start: Wenn ein Gerät zum ersten Mal hinzugefügt wird, sucht findmy.py rückwärts durch Apple’s Reports nach dem korrekten Key-Index. Bei älteren AirTags kann das mehrere Stunden dauern. Danach wird der Index im Config Entry gespeichert und der Vorgang muss nie wiederholt werden.
Update-Intervall: Standardmäßig 15 Minuten pro Account. Wer ein zweites Apple-Konto hinzufügt (z.B. Familienmitglied das ebenfalls Zugriff auf die Tags hat), halbiert das Intervall auf 7,5 Minuten. Der Coordinator rotiert automatisch zwischen den Accounts.
Batteriestatus: hass-FindMy hat keinen eigenen Batterie-Sensor, aber das status-Attribut am Device Tracker kodiert den Ladestand in Bits 6-7. Mit einem Template-Sensor lässt sich das auslesen:
yaml
template:
- sensor:
- name: "AirTag Batterie"
unit_of_measurement: "%"
device_class: battery
state: >
{% set s = state_attr('device_tracker.findmy_xxx', 'status') | int(0) %}
{% set b = (s // 64) % 4 %}
{% if b == 0 %} 100
{% elif b == 1 %} 60
{% elif b == 2 %} 20
{% else %} 5
{% endif %}
Geteilte AirTags / Familienfreigabe: decrypt exportiert nur Keys aus dem eigenen Mac-Keychain. Geräte die über Familienfreigabe geteilt wurden tauchen nicht auf. Lösung: den zweiten Apple Account direkt in hass-FindMy als weiteren Account-Eintrag hinzufügen.
iPhones / Apple Watches: Nicht unterstützt – findmy.py funktioniert nur mit AirTags und FindMy-Accessories. Für iPhone-Tracking die HA Companion App nutzen.
Dependency-Probleme nach HA-Updates
findmy.py hatte nach neueren HA Core Updates Konflikte mit cryptography und bleak (zu enge Versionsgrenzen in pyproject.toml). malmeloo behebt das erfahrungsgemäß schnell – einfach das Repo im Auge behalten und hass-FindMy via HACS aktualisieren sobald eine neue findmy.py Version erscheint.
Für die meisten ist hass-FindMy die sauberere Lösung.
Links