Life360 Integration

Liest die Daten aus der Life360-App und stellt die Informationen als einzelne Datenpunkte bereit.

Aktueller Release
1.11.4
Entwickler
skvarel
Lizenz
MIT

Aktualisiert für EU-Nutzer mit moderner tokenbasierter Authentifizierung.

Haftungsausschluss: Dies ist ein inoffizieller, von der Community entwickelter Adapter. Er steht in keiner Verbindung zu Life360, Inc. und wird von diesem Unternehmen auch nicht unterstützt. Er wird kostenlos für den privaten, nicht-kommerziellen Gebrauch im Bereich Hausautomation zur Verfügung gestellt. Die Nutzung erfolgt auf eigene Gefahr. Life360 behält sich das Recht vor, die API jederzeit und ohne Vorankündigung zu deaktivieren oder zu ändern.

Datenschutz: Alle von Life360 abgerufenen Daten werden ausschließlich auf Ihrem lokalen ioBroker-System gespeichert. Dieser Adapter übermittelt keine Daten an Dritte oder externe Cloud-Dienste über die Life360-API hinaus.

Beschreibung

Dieser Adapter verbindet sich mit den Cloud-Diensten Leben360, um Personen zu verfolgen und ihre Anwesenheit an definierten Orten zu erkennen. Er ruft Daten zu Kreisen, Mitgliedern und Orten ab und speichert diese als ioBroker-Zustände, die in einem konfigurierbaren Intervall aktualisiert werden.

Dokumentation

Konfiguration

Bearer-Token (für EU-Nutzer erforderlich)

Life360 hat die passwortbasierte Anmeldung für EU-Nutzer deaktiviert. Beantragen Sie manuell ein Bearer-Token:

  1. Öffnen Sie https://life360.com/login in Ihrem Browser.
  2. Öffnen Sie die Entwicklertools Ihres Browsers (F12) und wechseln Sie zur Registerkarte Netzwerk.
  3. Geben Sie Ihre E-Mail-Adresse ein und klicken Sie auf Weiter.
  4. Geben Sie den an Ihre E-Mail-Adresse gesendeten Einmalcode ein.
  5. Suchen Sie die POST-Anfrage mit dem Namen token (OPTIONS ignorieren).
  6. Kopieren Sie in Vorschau / Antwort den Wert von access_token.
  7. Fügen Sie es in das Feld Bearer-Token in der Adapterkonfiguration ein.

Hinweis: Geben Sie das Token OHNE das Wort „Bearer“, OHNE Leerzeichen und OHNE Anführungszeichen ein!

Hinweis: Tokens sind lange gültig (in der Regel mehrere Monate). Nach Ablauf der Gültigkeitsdauer wird im Adapterprotokoll ein Verbindungsfehler angezeigt. Wiederholen Sie die oben genannten Schritte, um ein neues Token zu erhalten.

Token

Meine Orte

Fügen Sie private Orte hinzu, die für die Life360-Cloud-Dienste nicht sichtbar sind. Der Adapter prüft bei jeder Abfrage die Anwesenheit an Ihren benutzerdefinierten Orten.

  • Geben Sie dem Ort einen Namen.
  • Geografische Position (Breitengrad und Längengrad) festlegen.
  • Radius in Metern einstellen.

Integration

Wählen Sie aus, welche Life360-Daten verarbeitet werden sollen: Kreise, Orte, Personen.

Standortverfolgung

Aktivieren Sie die Standortverfolgung, um den Personendatenpunkten Geopositionierungsdetails (Breitengrad, Längengrad, locationName) hinzuzufügen.

Hinweise zur Migration / zum Upgrade

Aktualisierung von Version 1.0.x auf 1.1.0

Die interne Objekthierarchie wurde umstrukturiert, um den Objekttypregeln von ioBroker zu entsprechen.

Bitte führen Sie nach dem Update die folgenden Schritte aus:

  1. Beenden Sie die Adapterinstanz.
  2. Löschen Sie alle Objekte des Adapters (in ioBroker Admin:

Objekte → life360ng.0 → Alle löschen)

  1. Starten Sie die Adapterinstanz erneut.
  2. Alle Datenpunkte werden automatisch neu erstellt.

⚠️ Ihre bestehenden Skripte und Automatisierungen müssen nicht geändert werden - > alle Datenpunkt-IDs bleiben gleich.

Staaten

Kreise

Life360-Kreise mit ihren zugehörigen Orten und der Anwesenheit ihrer Mitglieder.

BundeslandTypBeschreibung
circles.<id>.nameTextKreisname (z. B. Family skvarel)
circles.<id>.memberCountWertAnzahl der Kreiselemente (kann null sein)
circles.<id>.createdAtDatumErstellungsdatum des Kreises
circles.<id>.timestampDatumLetzte Datenaktualisierung
circles.<id>.places.<placeId>.<memberId>.isPresentIndikatorMitglied ist an diesem Ort anwesend
circles.<id>.places.<placeId>.membersPresentWertAnzahl der Mitglieder, die sich derzeit an diesem Ort befinden
circles.<id>.places.<placeId>.membersPresentWertAnzahl der Mitglieder, die sich aktuell an diesem Ort befinden

Info

BundeslandTypBeschreibung
info.connectionboolescher Werttrue bei Verbindung mit der Life360-Cloud

Meine Orte

Benutzerdefinierte Orte, die in der Adapterkonfiguration definiert sind (werden nicht mit der Life360-Cloud synchronisiert).

Struktur: myplaces.<placeName>.<memberName>.*

BundeslandTypBeschreibung
myplaces.<place>.<member>.distanceWert.DistanzEntfernung zum Platzierungsmittelpunkt in Metern
myplaces.<place>.<member>.startTimestampDatumZeitstempel, zu dem das Mitglied den Ort betreten hat
myplaces.<place>.<member>.timestampDatumZeitstempel der letzten Prüfung
myplaces.<place>.gps-coordinatesvalue.gpsOrtszentrum als JSON {"lat":..,"lng":..}
myplaces.<place>.latitudevalue.gps.latitudeOrtszentrum-Breitengrad
myplaces.<place>.longitudevalue.gps.longitudeOrtszentrum-Längengrad
myplaces.<place>.membersListeAlle Mitglieder wurden an diesem Ort überprüft
myplaces.<place>.membersCountWertGesamtzahl der verfolgten Mitglieder
myplaces.<place>.membersPresentListeNamen der aktuell anwesenden Mitglieder
myplaces.<place>.membersPresentCountWertAnzahl der aktuell anwesenden Mitglieder
myplaces.<place>.radiusWertKonfigurierter Radius in Metern
myplaces.<place>.timestampDatumLetzte Datenaktualisierung
myplaces.<place>.urlMaptext.urlOpenStreetMap-Link zum Ort
myplaces.<place>.urlMapIframetext.urlGoogle Maps-Einbettungs-URL
myplaces.<place>.urlMapIframetext.urlGoogle Maps-Einbettungs-URL

Menschen

Jedes Mitglied des Life360-Kreises erhält seinen eigenen Kanal unter people.<id>, wobei <id> die Life360-UUID des Mitglieds ist.

BundeslandTypBeschreibung
people.<id>.avatartext.urlURL des Profilbilds
people.<id>.createdAtDatumDatum der Kontoerstellung
people.<id>.disconnectedIndikatorApp ist explizit getrennt
people.<id>.firstNameTextVorname
people.<id>.gps-coordinatesvalue.gpsGPS-Position als JSON {"lat":..,"lng":..}
people.<id>.idTextLife360-Mitglieds-UUID
people.<id>.isConnectedindicator.reachableApp ist verbunden und erreichbar
people.<id>.isSharingLocationIndikatorStandortfreigabe ist aktiv
people.<id>.lastNameTextNachname
people.<id>.lastPositionAtDatumZeitstempel der letzten Positionsaktualisierung
people.<id>.latitudevalue.gps.latitudeAktuelle geografische Breite
people.<id>.locationNameTextAktueller Ortsname (z. B. Home)
people.<id>.longitudevalue.gps.longitudeAktuelle Längengradangabe
people.<id>.statusTextVerbindungsstatus (z. B. Ok)
people.<id>.timestampDatumZeitstempel der letzten Datenaktualisierung
people.<id>.urlMaptext.urlOpenStreetMap-Link zur aktuellen Position
people.<id>.urlMapIframetext.urlGoogle Maps-Einbettungs-URL
people.<id>.urlMapOsmIframetext.urlOpenStreetMap-Einbettungs-URL (iFrame)
people.<id>.urlMapOsmIframetext.urlEinbettbare OpenStreetMap-URL (iFrame)

Hinweis: isConnected zeigt an, ob die Life360-App erreichbar ist, während disconnected einen expliziten Verbindungsabbruch signalisiert.

Beide können bei einem Verbindungsverlust gleichzeitig den Wert false annehmen.

Orte

Life360-Orte werden direkt aus der Life360-Cloud synchronisiert (definiert in der Life360-App).

Diese Orte sind schreibgeschützt und können im Adapter nicht konfiguriert werden.

BundeslandTypBeschreibung
places.<id>.nameTextOrtsname (z. B. Refugium)
places.<id>.circleIdTextUUID des Kreises, zu dem dieser Ort gehört
places.<id>.ownerIdTextUUID des Ortsbesitzers
places.<id>.gps-coordinatesvalue.gpsOrtszentrum als JSON {"lat":..,"lng":..}
places.<id>.latitudevalue.gps.latitudeOrtszentrum-Breitengrad
places.<id>.longitudevalue.gps.longitudeOrtszentrum-Längengrad
places.<id>.radiusWertRadius in Metern
places.<id>.timestampDatumLetzte Datenaktualisierung
places.<id>.urlMaptext.urlOpenStreetMap-Link zum Ort
places.<id>.urlMapIframetext.urlGoogle Maps-Einbettungs-URL
places.<id>.urlMapIframetext.urlGoogle Maps-Einbettungs-URL

Hinweis: Informationen zu benutzerdefinierten Orten mit Anwesenheitserkennung finden Sie in myplaces.

Life360-Orte nicht verfügbar? Life360 hat den API-Zugriff auf Cloud-Orte für einige Konten (insbesondere EU-Gratiskonten) eingeschränkt. Wenn im Adapterprotokoll All place sources returned 0 places angezeigt wird, liefert die Life360-API keine Ortsdaten mehr für Ihr Konto. Abhilfe: Definieren Sie Ihre Orte im Tab Meine Orte - diese funktionieren unabhängig von der Life360-Cloud und bieten dieselbe Anwesenheitserkennung.

Tracker

Der Adapter beinhaltet einen optionalen GPS-Routenlogger, der die Bewegungen jedes Life360-Mitglieds aufzeichnet und interaktive Leaflet-Karten generiert, die direkt über eine URL in jedem Browser, ioBroker Vis oder Jarvis-Dashboard zugänglich sind.

So funktioniert es

Bei jeder Aktualisierung der GPS-Position prüft der Tracker, ob die neue Position mindestens minDistance Meter vom zuletzt aufgezeichneten Punkt entfernt ist. Ist dies der Fall, wird der Punkt an einen GeoJSON-LineString für den aktuellen Tag angehängt. Der vollständige Verlauf wird in allTime.geojson gespeichert, und monatliche Backups werden in currentYear.MM.geojson geschrieben.

Nach jeder Aktualisierung wird automatisch eine HTML-Karte (neu) generiert und im ioBroker-Dateisystem gespeichert. Sie ist sofort über HTTP zugänglich.

Aktivieren des Trackers

  1. Öffnen Sie die Adapterkonfiguration.
  2. Aktivieren Sie unter Tracker / Routenlogger die Verfolgung für jede Person.
  3. Optional kann für jede Person eine Familienkarte aktiviert werden, um diese in die kombinierte Familienansicht aufzunehmen.
  4. Stellen Sie den Mindestabstand (Standard: 20 m) ein, um GPS-Rauschen herauszufiltern.
  5. Speichern und den Adapter neu starten.

Karten-URLs

Jede Person und die Familiengruppe erhält eine eigene Karten-URL, die als ioBroker-Status gespeichert wird:

BundeslandBeschreibung
tracker.<Name>.urlRelative URL der individuellen Karte der Person
tracker.circle.urlRelative URL der kombinierten Kreiskarte
tracker.circle.urlLocalVollständige URL mit ioBroker-Server-IP und Webadapter-Port
tracker.circle.urlLocalVollständige URL mit ioBroker-Server-IP und Webadapter-Port

Das URL-Format ist:

/<namespace>/tracker/<name>.html

Öffnen Sie diese URL in einem beliebigen Browser. Die Karte wird im konfigurierten Abfrageintervall automatisch aktualisiert.

Hinweis: Die Tracker-Karten werden vom Server ioBroker-Webadapter bereitgestellt. Stellen Sie sicher, dass dieser installiert ist und ausgeführt wird. Der Status urlLocal wird automatisch aus der IP-Adresse des Servers und dem Port des Webadapters (Standard: 8082) erstellt.

Die generierten HTML-, CSS- und JS-Dateien werden im ioBroker-Dateisystem gespeichert und können unter **Admin → Dateien → life360ng.<instance>/tracker/ ** eingesehen werden.

Kartenmerkmale

  • Interaktive Leaflet-Karte - Schwenken und Zoomen, basierend auf OpenStreetMap
  • Datumsauswahl - Navigation zwischen allen aufgezeichneten Tagen (vollständiger Verlauf, keine Begrenzung)
  • Farbcodierte Routen - jede Person hat ihre eigene, konfigurierbare Routenfarbe
  • Start-/Endmarkierungen - kennzeichnen deutlich die erste und letzte Position des Tages
  • Automatische Aktualisierung - Die Seite wird automatisch neu geladen (Abfrageintervall + 10 s)
  • Familienkarte - alle berechtigten Personen auf einer kombinierten Karte mit Legende
  • Flaggenmarkierungen - Life360-Orte und eigene benutzerdefinierte Orte (Meine Orte) können als Flaggenmarkierungen auf der Karte angezeigt werden, jeweils mit konfigurierbarer Farbe, Größe und Deckkraft (0,0 = unsichtbar, 1,0 = vollständig sichtbar).

Einzelne Kartenmerkmale

  • Routen-Kontrollkästchen: Jede Einzelpersonenkarte verfügt über ein „Routen“-Kontrollkästchen, mit dem die Routenanzeige für den ausgewählten Zeitraum ein- und ausgeschaltet werden kann. Der Status wird pro Person im Browser gespeichert und bleibt auch nach einem Seitenneuladen erhalten.
  • Dynamische Datumsauswahl: Die Datumsbereichsauswahl wird nur angezeigt, wenn die Route aktiviert ist. Wenn die Route deaktiviert ist, wird nur der letzte bekannte Punkt angezeigt.
  • Personalisierte Farben: Die Farbe der Checkbox entspricht der Farbe der Person.
  • Konsistente Kopfzeile: Die Höhe der Kopfzeile bleibt unabhängig vom Status der Checkboxen konstant.

Tracker-Staaten

Konfiguration (tracker.config.*)

Alle Farb- und Verhaltenseinstellungen können zur Laufzeit geändert werden - die Karten werden sofort neu gerendert, ohne dass der Adapter neu gestartet werden muss.

BundeslandTypBeschreibung

| tracker.config.enabled | Boolescher Wert | Routenprotokollierung aktivieren/deaktivieren |as ghst

Pro-Personen-Daten (tracker.<Name>.*)
BundeslandTypBeschreibung
tracker.<Name>.allTime.geojsonZeichenkette (JSON)Vollständiger GeoJSON-Verlauf (alle Tage)
tracker.<Name>.mapSizeZahl (KB)Dateigröße der generierten HTML-Karte
tracker.<Name>.urltext.urlHTTP-URL der Karte der Person
tracker.<Name>.urlLocaltext.urlHTTP-URL mit der IP-Adresse des ioBroker-Servers und dem Port des Webadapters
tracker.<Name>.urlLocaltext.urlHTTP-URL mit der IP-Adresse des ioBroker-Servers und dem Port des Webadapters
Kreisdiagramm (tracker.circle.*)
BundeslandTypBeschreibung
tracker.circle.allTime.geojsonZeichenkette (JSON)Zusammengeführtes GeoJSON aller Kreiselemente
tracker.circle.mapSizeZahl (KB)Dateigröße der generierten HTML-Karte
tracker.circle.urltext.urlHTTP-URL der kombinierten Kreiskarte
tracker.circle.urlLocaltext.urlHTTP-URL mit der IP-Adresse des ioBroker-Servers und dem Port des Webadapters
tracker.circle.urlLocaltext.urlHTTP-URL mit der IP-Adresse des ioBroker-Servers und dem Port des Webadapters

Einbetten in Vis / Jarvis

Verwenden Sie die Karten-URL in einem iFrame-Widget (Vis) oder einer URL-Kachel (Jarvis):

/life360ng.0/tracker/<name>.html

Die Karte aktualisiert sich automatisch - es ist keine zusätzliche Konfiguration erforderlich.

Hinweis: Der vollständige Routenverlauf (allTime.geojson) wächst kontinuierlich. Bei einem Abfrageintervall von 60 Sekunden und einer Mindestentfernung von 20 Metern ist mit etwa 1 MB pro Person und Jahr zu rechnen - deutlich innerhalb der Speichergrenzen von ioBroker.

Verwenden Sie die Option Aufbewahrungsdauer (Tage) in der Adapterkonfiguration, um Daten, die älter als eine bestimmte Anzahl von Tagen sind, automatisch zu entfernen (0 = unbegrenzt aufbewahren). Die Bereinigung erfolgt bei jedem Adapterstart und einmal täglich.

Um die aufgezeichneten Routendaten einer Person manuell zu löschen, aktivieren Sie das Kontrollkästchen „Aufzeichnung löschen.“ in der Personentabelle und speichern Sie die Konfiguration. Der Routenverlauf (allTime.geojson) der Person wird auf den letzten bekannten Punkt reduziert. Da die Familienkarte aus den individuellen Personendaten erstellt wird, wird sie ebenfalls automatisch aktualisiert. Die monatlichen GeoJSON-Dateien (currentYear.MM) bleiben davon unberührt.

Die Routenfarben pro Person werden in den Adaptereinstellungen (Registerkarte „Tracker“) konfiguriert.

Unterstützung

Wenn Ihnen unsere Arbeit gefällt und Sie uns unterstützen möchten, freuen wir uns über jede Spende.

(Dieser Link führt zu unserem PayPal-Konto und steht in keiner Verbindung zu ioBroker.)

Spende

Credits

Dieser Adapter basiert auf der Originalarbeit von MiGoller.
Vielen Dank für die ursprüngliche Implementierung und die Idee! Dieses Repository enthält Optimierungen und Weiterentwicklungen.
Hinweis: Die Originalarbeit Repository ist archiviert und wird nicht mehr weiterentwickelt.

Changelog

1.11.4 (2026-07-02)

  • (skvarel) Fixed issue detected by repository checker #31

1.11.3 (2026-06-10)

  • (skvarel) Added meta object types for adapter and instance namespace

1.11.2 (2026-06-05)

  • (skvarel) Updated @alcalzone/release-script to minimum required version 5.2.1
  • (skvarel) Replaced plain setTimeout/clearTimeout with adapter.setTimeout/clearTimeout in life360DbConnector

1.11.1 (2026-06-03)

  • (skvarel) Migrated project rules from GitHub Copilot to Cursor rules

1.11.0 (2026-05-28)

  • (skvarel) Added "Enable datapoint notifications" checkbox in the Notifications tab; when enabled, the general notification settings panel is shown even without Telegram or Alexa configured
  • (skvarel) Updated geolocation-utils dependency from 1.2.5 to 1.2.6

License

MIT License

Copyright (c) 2026 skvarel sk@inventwo.com

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.