GPS-Tracking und Distanzberechnung in Home Assistant – So geht’s!

Einleitung

GPS – für viele ist es der unsichtbare Helfer, der uns zuverlässig ans Ziel bringt, Routen berechnet und Stau umgeht. Doch in Kombination mit Home Assistant bietet GPS noch viel mehr spannende Möglichkeiten: von standortbasierten Automatisierungen bis hin zur genauen Distanzmessung. Wie funktioniert das eigentlich? Und wie lässt sich die Genauigkeit der Standortaktualisierung so verbessern, dass sie fast in Echtzeit läuft?

Bevor wir in die praktischen Anwendungen wie die Distanzmessung mit Node-RED einsteigen, möchte ich dir zuerst erklären, wie GNSS (Global Navigation Satellite Systems) – oft einfach GPS genannt – funktioniert. Ein kurzer Überblick dazu hilft, die Technik dahinter besser zu verstehen und sinnvoll für deine Projekte einzusetzen.


Was ist GPS und wie funktioniert es?

GPS (Global Positioning System) ist ein weltweit genutztes Navigationssystem, das präzise Standortdaten liefert. Es gehört zur Gruppe der GNSS-Systeme (Global Navigation Satellite Systems) und wurde ursprünglich vom US-Verteidigungsministerium für militärische Zwecke entwickelt. Heute ist GPS ein unverzichtbarer Bestandteil moderner Technologie, von Smartphones bis hin zu Fahrzeugnavigationssystemen.

Neben GPS gibt es weitere GNSS-Systeme wie GLONASS (Russland), Galileo (EU) und BeiDou (China). Zusammen ermöglichen diese Systeme eine globale Abdeckung und exakte Standortbestimmung – unabhängig davon, wo auf der Welt du dich befindest.

Bild KI-Generiert

Die GPS-Funktion basiert auf der Kommunikation zwischen deinem Gerät und Satelliten, die die Erde in festen Umlaufbahnen umkreisen. Die Standortbestimmung erfolgt in zwei Hauptschritten:

  1. Satellitenkommunikation: Dein Gerät empfängt Signale von mindestens vier Satelliten. Diese Signale enthalten wichtige Informationen, wie die Position der Satelliten und Zeitstempel. Aus diesen Daten berechnet dein Gerät die Entfernung zu jedem Satelliten.
  2. Triangulation: Mit den Entfernungsdaten der Satelliten bestimmt das GPS-Gerät mithilfe der sogenannten Triangulation deinen exakten Standort auf der Erdoberfläche.

Vorteile eines globalen GPS-Systems

  • Hohe Präzision: GPS liefert unter optimalen Bedingungen eine Genauigkeit von wenigen Metern.
  • Weltweite Verfügbarkeit: Egal, ob du in der Stadt oder in der Wildnis bist – GPS ist fast überall einsatzbereit.
  • Integration: Nahezu jedes Smartphone und viele andere Geräte unterstützen GPS.

Herausforderungen von GPS

  • Signalstörungen: Gebäude, Bäume oder schlechte Wetterbedingungen können die Signalqualität beeinflussen.
  • Abhängigkeit von Satelliten: Ohne direkten Kontakt zu Satelliten (z. B. in Tunneln) ist keine genaue Standortbestimmung möglich.
  • Energieverbrauch: Die Nutzung von GPS erhöht den Akkuverbrauch, insbesondere bei dauerhafter Standortabfrage.

GPS in Home Assistant nutzen

GPS in Home Assistant bietet dir tolle Möglichkeiten, um standortbasierte Automatisierungen zu erstellen und deine Position in Echtzeit zu tracken. Die Home Assistant Companion App greift dabei auf die Standortdienste deines Smartphones zu und aktualisiert Positionsdaten in regelmäßigen Abständen.

Wie funktioniert die Lokalisierung mit der Home Assistant App?

Die Home Assistant App nutzt die GPS-Daten deines Geräts. Diese Daten werden standardmäßig in Intervallen von etwa einer Minute abgerufen – das reicht für einfache Automatisierungen aus. Apps wie Google Maps aktivieren oft den High-Accuracy-Modus, wodurch GPS-Daten schneller und genauer bereitgestellt werden.

In der Home Assistant Companion App kannst du einstellen, wie häufig Standortdaten aktualisiert werden sollen. Besonders bei Bewegung oder schwachem Empfang kann es jedoch sinnvoll sein, genauere Updates zu erzwingen, um präzisere Daten zu erhalten.

Wie erzwingst du häufige GPS-Updates in Home Assistant?

Die Home Assistant App ermöglicht es, den High-Accuracy-Modus auf verschiedene Weise zu aktivieren:

Automatisch:
Der Modus wird aktiviert, sobald du dich einer Zone näherst.
Oder wenn dein Smartphone eine Verbindung zu einem Bluetooth-Gerät, wie z. B. deinem Autoradio, herstellt.

Manuell:
Mit einem Notify-Kommando vom Home Assistant Server kannst du den Modus direkt auf deinem Smartphone einschalten.

Anleitung für Android Nutzer

  1. App-Einstellungen öffnen:
    Gehe in der Home Assistant App zu Einstellungen (Bild 1) > Companion-App (Bild 2) > Sensoren verwalten (Bild 3), scrolle nach unten zu den „Standortsensoren“ (Bild 4). Hier findest du verschiedene relevante Sensoren.
  2. Aktualisierungsintervalle für hohe Ortungsgenauigkeit (Bild 5):
    Aktiviere den Aktualisierungsintervall für hohe Genauigkeit. Damit werden Standortdaten in kürzeren Abständen erfasst.
  3. Einzelne genaue Positionen (Bild 6):
    Schalte die Funktion Gezwungene Standortaktualisierung ein. Dies kombiniert Mindestgenauigkeit und Mindestzeit für präzise Standortdaten.
  4. Hintergrund-Standort (Bild 7):
    Diese Einstellung ist essenziell für die genaue Positionierung und Distanzmessung. Du kannst hier ein Bluetooth-Gerät auswählen (z. B. dein Autoradio), eine Zone festlegen oder beides kombinieren, um den Modus automatisch zu aktivieren.
  5. Hohe Ortungsgenauigkeit (Bild 8):
    Diese Funktion sollte ebenfalls aktiviert sein. Sie zeigt an, ob der High-Accuracy-Modus aktuell aktiv ist.
  6. Zone des Standortes (Bild 9):
    Aktiviere Geofencing, um standortbasierte Automatisierungen zu ermöglichen. Dies sorgt dafür, dass dein Smartphone erkennt, wenn es sich in einer bestimmten Zone befindet.
High-Accuracy-Modus testen

Du kannst die Konfiguration des High-Accuracy-Modus sofort ausprobieren. Wenn du gerade nicht im Auto bist, wähle ein anderes Bluetooth-Gerät aus der Liste, das bereits mit deinem Smartphone gekoppelt ist. Sobald eine Verbindung hergestellt wird, zeigt dir die Home Assistant App eine Benachrichtigung an, dass der Modus erfolgreich aktiviert wurde.

Wichtiger Hinweis:
  • Stelle sicher, dass die Berechtigungen der Home Assistant App korrekt eingerichtet sind, damit Benachrichtigungen angezeigt werden können.
  • Ohne diese Berechtigungen erhältst du keine Rückmeldung zur Aktivierung des High-Accuracy-Modus.

Nutze diese Möglichkeit, um den Modus flexibel zu testen – unabhängig von deinem Fahrzeug.

Anleitung für Apple iOS Nutzer

Die Hintergrundaktualisierung funktioniert unter iOS ähnlich wie bei Android, jedoch gibt es aktuell Einschränkungen, was die automatische Aktivierung der hohen Ortungsgenauigkeit im Hintergrund über ein Bluetooth-Gerät betrifft.

Aktueller Stand (17.11.2024):
  • Hintergrundaktualisierung: Diese Funktion scheint wie erwartet zu arbeiten und liefert Standortdaten in regelmäßigen Intervallen.
  • Hohe Ortungsgenauigkeit via Bluetooth: Ich habe bislang keine Möglichkeit gefunden, den High-Accuracy-Modus automatisch durch die Verbindung mit einem Bluetooth-Gerät (z. B. Autoradio) zu aktivieren.
Alternative Lösung: Notify-Command

Um dieses Problem zu umgehen, kannst du den High-Accuracy-Modus manuell über den Notify-Command von deinem Home Assistant Server aktivieren. Damit wird ein Befehl an dein iPhone gesendet, um die hohe Ortungsgenauigkeit einzuschalten. Dies ist jedoch noch in der Testphase und ich werde die Funktionalität weiter untersuchen und berichten, sobald ich zuverlässige Ergebnisse habe.

Anleitung: Manuelles Aktivieren für den High-Accuracy-Modus (Android & iOS)

Du kannst den High-Accuracy-Modus auch manuell aktivieren, entweder über eine Home Assistant Automation oder direkt im Entwicklerwerkzeug unter „Aktionen“. Hier eine kurze Anleitung, wie du den Modus manuell aktivierst oder deaktivierst:

  1. Aktionen im Entwicklerwerkzeug öffnen:
    Gehe in Home Assistant zu Entwicklerwerkzeuge, wähle dann den Reiter Aktionen.
    Anschließend wechselst du in den YAML-Modus
  2. Aktion konfigurieren:
    Kopieren den unten stehenden YAML-Code und füge diesen bei dir ein.
  3. Befehl ändern:
    Der Wert "force_on" aktiviert den High-Accuracy-Modus.
    Der Wert "force_off" deaktiviert den Modus.
  4. Befehl ausführen:
    Wenn alles geklappt hat, dann solte jetzt wie oben ebenfalls die Meldung „Hohe Ortungsgenauigkeit aktiv“ angezeigt werden.

Abschließend: GPS in Home Assistant – Möglichkeiten und Vorteile

Die Integration von GPS-Daten in Home Assistant bietet dir zahlreiche Möglichkeiten, standortbasierte Automatisierungen effizient und flexibel umzusetzen. Du kannst den High-Accuracy-Modus entweder automatisch über Bluetooth oder Zonen aktivieren oder manuell per Notify-Aktion steuern. Letzteres ermöglicht dir eine maximale Flexibilität, unabhängig von externen Verbindungen oder festen Zonen.

Vorteile von GPS in Home Assistant
  • Präzise Automatisierungen: Aktionen wie das Öffnen eines Garagentors oder das Einschalten von Licht können nahezu verzögerungsfrei ausgeführt werden.
  • Exakte Distanzmessungen: Ideal für Kilometerzähler oder die Verfolgung von Fahrzeugrouten.
Anwendungsfälle
Fahrzeugbezogene Automationen:
  • Automatisches Öffnen des Garagentors, wenn du nach Hause kommst.
  • Kilometerzähler für Fahrstatistiken oder Erinnerungen an Wartungen.
Alltagsautomatisierungen:
  • Licht- oder Heizungssteuerung bei Betreten oder Verlassen einer Zone.
  • Automatische Deaktivierung der Alarmanlage basierend auf deinem Standort.

Beispiel: Distanzberechnung in Node-RED und Home Assistant

In diesem Beitrag zeige ich einen Node-RED Flow, der einen Subflow namens „Distanzberechnung“ enthält. Der Subflow ist darauf ausgelegt, GPS-Daten zu verarbeiten und die zurückgelegte Strecke eines Geräts in Home Assistant zu berechnen. Das Ziel ist es, diese Funktion so allgemein wie möglich zu halten, damit sie von der Community genutzt werden kann. Aktuell befindet sich der Subflow jedoch noch in der Beta-Phase, und ich kann keine Fehler ausschließen.

Node-RED Flow

Im Folgenden findest du den aktuellen Node-RED Flow. Du kannst diesen einfach kopieren und über die Importfunktion in deinem Node-RED einfügen.
Wichtig: Bevor du den Flow deployst, überprüfe die Eingangs- und Ausgangs-Nodes und passe diese gegebenenfalls an deine Konfiguration an – dazu aber auch mehr in den nächsten Abschnitten.

Eingänge und Ausgänge des Subflows

Die Ein- und Ausgänge die am Subflow verbunden sind müssen nach dem Node-RED-Flow Import parametriert werden.
In Folge erhältst du meine Konfiguration der einzelnen Nodes.

Eingänge
  1. Event-all-Node:
    • HA Websocket:
      • Überprüft, ob eine aktuelle Verbindung zwischen Node-RED und Home Assistant besteht.
      • Liefert Event-Daten an den Subflow.
  2. Event-Nodes:
    • Hauptschalter Berechnung: input_boolean.main_switch_distance_calculation
    • Manueller Schalter: input_boolean.manual_distance_calculation_switch
    • Genauigkeitsgrenze GPS: input_number.minimum_gps_accuracy_distance_calculation
    • Android Auto: binary_sensor.pixel_9_pro_xl_android_auto (bitte die Entität deines Smartphones + Android Auto eintragen, findest du auch in der Liste deiner Entitäten im Home Assistant)
    • Reset Berechnung: input_button.reset_distance_calculation
  3. Inject-Node:
    • Ermöglicht das Löschen des Logfiles, z. B. periodisch oder manuell.
Ausgänge
  1. Sensor-Nodes:
    • Ausgabe Distanz:
      • Wird als sensor.total_distance in Home Assistant gespeichert.
    • Ausgabe Gerätegenauigkeit:
      • Zeigt die aktuelle Genauigkeit als sensor.gps_accuracy_device.
  2. Action-Nodes:
    • AN/AUS des High-Accuracy-Modus:
      • Manuelles Ein-/Ausschalten über notify.mobile_app_pixel_9_pro_xl (bitte die Entität deines Smartphones eintragen)
  3. Log-Datei (innerhalb des Subflows):
    • Speicherung von Debugging-Informationen und Messwerten.
  4. Debug-Node:
    • Ausgabe für Statusinformationen und Fehlersuche.

Parametrierung der Subflow Eigenschaften

Nicht nur die Ein- und Ausgangsnodes benötigen ihre Entitäts-Einstellungen, auch die Eigenschaften des Subflows müssen entsprechend konfiguriert werden. Um dies zu tun, klicke mit einem Doppelklick auf den Subflow. Es öffnet sich eine Einstellungsmaske, in der du alle notwendigen Parameter eintragen kannst.

Folgende Eigenschaften werden benötigt:

  • Tracking Device Entity: Die Entität des zu trackenden Gerätes, z. B. device_tracker.pixel_9_pro_xl.
  • Main Switch Entity: Die Entität des Hauptschalters, um die Berechnung ein- oder auszuschalten.
  • Manual Switch Entity: Die Entität des manuellen Schalters, für eine unabhängige Steuerung
  • Min GPS Accuracy Entity: Die Entität für die Mindest-GPS-Genauigkeit, um ungenaue Positionsdaten zu filtern
  • Android Auto Entity: Die Entität, die die Verbindung zu Android Auto überwacht.
  • Path Log File: Der Pfad und der Dateiname der Log-Datei. Wenn du Node-RED als Add-on in Home Assistant verwendest, kannst du z. B. den Standardpfad /share/LOG_Distanzberechnung.csv nutzen.
  • Time Trigger (ms): Der Aktualisierungsintervall des Subflows in Millisekunden. Ein Wert von 2000 ms hat sich in der Praxis als sinnvoll erwiesen.
  • Debug Ausgänge:
    • Reset: Debuggt alle ausgelösten Resets, z. B. bei einem Reset der Distanzberechnung.
    • Calculation: Debuggt alle Vorgänge, die mit der Distanzberechnung zusammenhängen.
    • Event: Debuggt alle eingehenden Events oder Änderungen, wie beispielsweise die Anpassung der Mindest-GPS-Genauigkeit.

Prüfe alle Einstellungen sorgfältig, um sicherzustellen, dass der Subflow korrekt funktioniert und du alle gewünschten Daten erhältst.

Schematik des Subflows (Informativ)

Hier siehst du eine schematische Darstellung der Logik des Subflows (Distanzberechnung). Ich gehe an dieser Stelle nicht tiefer ins Detail. Sollte das Interesse groß sein, werde ich den Beitrag entsprechend erweitern und genauer darauf eingehen.

Natürlich kannst du den Subflow jederzeit selbst öffnen und nach deinen Anforderungen anpassen oder verändern!

Funktionbeschreibung des Node-RED Flows

  1. Initialisierung der Umgebung:
    • Der Subflow wird mit den notwendigen Entitäten konfiguriert, die über die Eingänge definiert werden. Dazu gehören Tracking-Entitäten, Genauigkeitswerte und Schalter.
  2. Start des Trackings:
    • Das Tracking wird aktiviert, wenn der Hauptschalter (input_boolean.main_switch_distance_calculation) eingeschaltet ist.
    • Der manuelle Modus ermöglicht es dir, das Tracking zu nutzen, ohne auf eine Android Auto-Verbindung angewiesen zu sein.
  3. Aktivierung des High-Accuracy-Modus (nur im manuellen Modus):
    • Der High-Accuracy-Modus wird aktiviert, indem der notify-Service mit dem Befehl force_on aufgerufen wird.
      Diese Funktion wird nur im manuellen Modus ausgeführt.
  4. Überwachung der GPS-Genauigkeit:
    • Der Flow prüft die Genauigkeit der GPS-Daten. Nur wenn die Genauigkeit unterhalb des Wertes von input_number.minimum_gps_accuracy_distance_calculation liegt, wird die Berechnung fortgesetzt.
  5. Berechnung der Distanz:
    • Mit der Haversine-Formel wird die Distanz zwischen zwei Koordinatenpunkten berechnet.
    • Diese wird zur Gesamtdistanz (sensor.total_distance) addiert und in Home Assistant gespeichert.
  6. Reset der Distanz:
    • Ein Reset kann manuell (über einen Button) oder automatisch (z. B. bei einer neuen Android Auto-Verbindung) durchgeführt werden. Dabei wird die Gesamtdistanz zurückgesetzt und die aktuellen Koordinaten als neuer Startpunkt gespeichert.
  7. Speicherung und Debugging:
    • Messwerte werden in einer Logdatei gespeichert, die periodisch (Standard 1x pro Woche, So. 00.00 Uhr) oder manuell gelöscht werden kann.

Benötigte Entitäten

Die folgende Tabelle listet alle benötigten Entitäten auf, die du für dieses Beispiel 1:1 übernehmen kannst. Sie enthält außerdem Informationen darüber, ob die Entitäten automatisch von Home Assistant erstellt werden oder manuell unter „Helfer“ angelegt werden müssen.

EntitätTypAnlegen des Sensors:
Manuell/Automatisch
Funktion
sensor.gps_accuracy_deviceSensorAutomatisch durch Node-REDLiefert die aktuelle GPS-Genauigkeit in Metern.
sensor.total_distanceSensorAutomatisch durch Node-REDSpeichert die berechnete Gesamtdistanz in Metern.
input_boolean.main_switch_distance_calculationInput BooleanManuell (Helfer)Aktiviert oder deaktiviert die Distanzberechnung.
input_boolean.manual_distance_calculation_switchInput BooleanManuell (Helfer)Schaltet in den manuellen Modus.
input_number.minimum_gps_accuracy_distance_calculationInput NumberManuell (Helfer)Definiert die Mindestgenauigkeit für die Berechnung.
input_button.reset_distance_calculationInput ButtonManuell (Helfer)Setzt die Distanzberechnung auf null.
binary_sensor.pixel_9_pro_xl_android_autoBinary SensorAutomatischÜberwacht die Verbindung mit Android Auto.
sensor.total_distance_daySensorManuell (Helfer)Optionale Erweiterung: Zeigt die gefahrene Strecke des aktuellen Tages an.
sensor.total_distance_monthSensorManuell (Helfer)Optionale Erweiterung: Zeigt die gefahrene Strecke des aktuellen Monats an.
sensor.total_distance_yearSensorManuell (Helfer)Optionale Erweiterung: Zeigt die gefahrene Strecke des aktuellen Jahres an.
device_tracker.pixel_9_pro_xlDevice TrackerAutomatisch durch Home AssistantLiefert die Positionsdaten des Gerätes

Dashboard-Steuerung und Visualisierung

Das Home Assistant Dashboard verbindet Steuerung und Visualisierung, um die Distanzberechnung intuitiv zu gestalten.

Steuerungselemente:
  • Hauptschalter (Berechnung):
    input_boolean.main_switch_distance_calculation aktiviert oder deaktiviert die Berechnung.
  • Manueller Modus:
    input_boolean.manual_distance_calculation_switch erlaubt eine manuelle Steuerung.
  • Reset:
    Mit input_button.reset_distance_calculation wird die Strecke auf null zurückgesetzt.
  • Mindestgenauigkeit:
    input_number.minimum_gps_accuracy_distance_calculation gibt die GPS-Mindestgenauigkeit in Meter an. Alle Werte außerhalb werden in der Berechnung verworfen.
Visualisierung:
  • Streckenanzeige:
    sensor.total_distance zeigt die Gesamtdistanz in Metern an.
  • GPS-Status:
    sensor.gps_accuracy_device informiert in Echtzeit über die GPS-Genauigkeit.
  • Kartenansicht:
    Eine Karte zeigt die aktuelle Position und den Streckenverlauf.
  • Statistik:
    Zusätzliche Sensoren wie sensor.total_distance_day liefern Tages-, Monats- und Jahresdaten.

YAML-Code für Dashboard-Steuerung und Visualisierung

Hier ist der YAML-Code für dein Dashboard, mit dem du die Steuerung und Visualisierung der Distanzberechnung integrieren kannst. Bitte prüfe sorgfältig, ob die Entitäten in deinem Home Assistant vorhanden sind und gegebenenfalls angepasst werden müssen.

Fazit

Zum Abschluss möchte ich das Ergebnis meiner Distanzberechnung präsentieren. Anhand eines Kartenausschnitts wird deutlich, wie eng die aufgezeichneten Tracks beieinander liegen. Dies zeigt, wie gut der High-Accuracy-Modus funktioniert und zu präziseren Standortdaten führt.

Wichtiger Hinweis:
Diese Methode liefert keine absolut präzise Entfernungsmessung, denn eine perfekte GPS-Abdeckung ist praktisch nicht erreichbar.

Schlusswort

Ich habe dieses Projekt in meiner Freizeit entwickelt und freue mich auf euer Feedback! Fehler, Kritik oder Ideen helfen, diese Lösung weiterzuentwickeln. Nutzt die Kommentarfunktion und teilt eure Gedanken.

Wie immer führen viele Wege nach Rom. Die hier vorgestellte Methode ist nur eine Möglichkeit, Distanzberechnungen in Home Assistant zu realisieren. Alternativ könnt ihr dafür auch Python-Skripte nutzen oder sogar eine direkte Integration entwickeln.

Das Ziel war, zu zeigen, wie sich präzise Standortdaten für spannende Automatisierungen einsetzen lassen. Ob und wie dieses Projekt weiter wächst, hängt von euch ab.

Vielen Dank fürs Lesen und Ausprobieren! 😉

2 Gedanken zu „GPS-Tracking und Distanzberechnung in Home Assistant – So geht’s!“

  1. Ich habe jetzt mal den Binärsensor manuell als Template angelegt und teste ihn auf die SSID des iPhone. Ich habe mit einem Dongle im Auto Wireless Carplay nachgerüstet und da verbindet sich das Handy per WLAN mit dem Dongle. Wenn alles klappt, dann geht der Sensor auf Anwesend, sobald sich das iPhone mit dem Carplay Dongle verbindet. Wäre das soweit machbar, oder muß der Binärsensor was anderes als Anwesend/Abwesend ausgeben?

    Antworten
  2. Hallo,

    ich habe alles soweit bei mir zum laufen bekommen und auch die GUI eingerichtet. Es wird etwas angezeigt, auf der Karte auch die Orte wo ich war, aber zum einen nicht so fein wie in den Bildern und die Berechungen der Wegstrecke werden bei mir auch nicht durchgeführt. Ich denke mal es liegt daran, zum einen dass ich ein iPhone einsetze und es diese Entität nicht gibt als Pendant zum iPhone und Carplay: binary_sensor.pixel_9_pro_xl_android_auto Binary Sensor Automatisch Überwacht die Verbindung mit Android Auto.

    Dieser Datenpunkt in einer Apple Carplay Variante wurde auch jetzt nicht, nach meiner ersten Fahrt nach dem Einrichten, angelegt. Wo müßte ich den finden und wer legt diesen Datenpunkt an? Ich denke mal, dass deshalb auch das NodeRed Berechnungsskript nicht anspringt.

    Antworten

Schreibe einen Kommentar

WordPress Cookie Hinweis von Real Cookie Banner