ioBroker Jarvis – Teil 10.1 – life360 GPS-Position formatieren

In diesem Artikel zeige ich Dir, wie ich das life360 GPS-Format für jarvis konvertiert habe.

In der aktuellen Version von jarvis wird das GPS-Positionsformat im folgenden Format benötigt:

(lat),(lng)

Da der life360-Adapter die Positionsdaten aber nur als JSON-String oder als getrennte Latitude und Longitude Datenpunkte zur Verfügung stellt, müssen wir hier mit einem kleinen Script die Positionsdaten in das verwendete Format umwandeln. Da zu diesem Thema einige Rückfragen kamen, möchte ich das hier natürlich auch kurz erklären.

Im ersten Schritt habe ich mir einen eigenen Datenpunkt im Bereich userData angelegt, in dem dann die formatierte Position für jarvis für die einzelnen Personen abgelegt wird. Als Format habe ich hier eine Zeichenkette gewählt.

Im nächsten Schritt erstellen wir uns nun ein JavaScript, welches die Positionswerte in das gewünschte Format konvertiert.

Im Script-Editor fügen wir nun den folgenden Script-Code ein, und passen die Object-ID des mit X überschriebenen Datenpunkt GPS-Coordinates entsprechend an Deinen eigenen Benutzer an.

function saveGPSposition(personObjectId, gpsJsonString) {
  var jsonData = JSON.parse(gpsJsonString);
  var gpsString = jsonData.lat + "," + jsonData.lng;

  setState(personObjectId,gpsString);
}

on({id: 'life360.0.people.XXXXXXXXXXX.gps-coordinates', change: "ne"}, function (obj) {
  var value = obj.state.val;
  saveGPSposition("0_userdata.0.Visualisierung.jarvis.Position.Matthias",value);
});

Im Script definieren wir zunächst die Funktion saveGPSposition. Dieser Funktion wird die Object-ID der Person im Bereich userData sowie der die GPS-Position als JSON-String übergeben. Die Funktion parst dann den JSON-String mittels der JSON.parse() Funktion und extrahiert damit die Latitude- und Longitudewerte aus der JSON-Zeichenfolge. Anschließend wird die neue Zeichenkette per setState() in den übergebenen Datenpunkt geschrieben.

Im On() Trigger der jeweiligen Person übergebe ich dann den Datenpunkt der Person sowie die neue GPS-Zeichenkette an die Funktion saveGPSposition.

Um die GPS-Position für weitere Personen zu speichern muss dann nur ein separater Datenpunkt im Bereich userData sowie ein weiterer Trigger auf den jeweiligen gps-coordinates Datenpunkt angelegt werden.

Mit dieser Vorgehensweise kann ich jetzt relativ einfach das Format anpassen. Über die Verwendung der JavaScript Funktion wird die Formatierung gekapselt und kann einfach für weitere Personen eingesetzt werden.

Ich hoffe Dir gefällt der Artikel. Über Kommentare, Anregungen oder Ideen freue ich mich wie immer 🙂

Matthias Korte

Hauptberuflich Software-Entwickler und seit einigen Jahren Smart-Home Fan. Angefangen hat alles mit einem RaspberryMatic und einer schaltbaren Steckdose. Mittlerweile habe ich einige Steckdosen, Sensoren, und Thermostate sowie ioBroker zur Visualisierung im Einsatz.

4 Gedanken zu „ioBroker Jarvis – Teil 10.1 – life360 GPS-Position formatieren

  • 6. Oktober 2020 um 8:38
    Permalink

    “der life360-Adapter die Positionsdaten aber nur als JSON-String“: ich kann die Konvertierung auch in jarvis einbauen. Könntest du mir ein Beispiel des JSON Srrings schicken?

    Antwort
    • 6. Oktober 2020 um 8:44
      Permalink

      Gerade in dem anderen Artikel entdeckt 🙂

      Antwort
  • 15. Oktober 2020 um 13:32
    Permalink

    Hallo. Funktioniert es bei euch noch richtig ? Bei mir zoomt er neuerdings bis ins unendliche wenn ich die Karte öffne… Habe schon die neuste beta drauf. Erst wenn ich oben links auf das minus klicke zoomt er auf die richtige und erkennbare Position. War am Anfang nicht so…

    Antwort

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.