Google -> Aktuelle Standortabfrage

Begonnen von stera, 09 Januar 2019, 03:04:46

Vorheriges Thema - Nächstes Thema

stera

Hallo zusammen,

irgendwann wurde das Thema auch schon mal angesprochen, aber wollte das gerne nochmal zum Thema machen.
Mich würde es immer noch freuen, wenn es irgendwann mal möglich ist, von Google seine aktuelle Position vom Handy abzufragen.
Mit der Geolocation API fragt man ja generell immer nur den Standort des aktuellen Gerätes ab und das hilft in diesem Fall leider nicht weiter.

Vor ein paar Tagen bin ich bei Google auf einen issue-Tracker gestoßen, wo jemand eine Möglichkeit gefunden hat, die freigegebenen Standortfreigaben in einer Textdatei herunter zu laden.
Eine API steht dafür wohl noch nicht zur Verfügung.

Die Datei zu verarbeiten ist generell ja nicht so schwer, nur die Datei vom "eingeloggten" GoogleKonto auf dem Raspberry zu bekommen. Es kann ja auch ein FakeGoogleKonto sein wo eine Standortfreigabe von den anderen Personen/Konten eingerichtet werden muss.

Ich würde mich freuen, wenn einer von Euch sich angesprochen fühlt und vll. Wege zur Integration in Fhem mit findet.

Hier ein paar Links:

https://www.google.com/maps/preview/locationsharing/read?authuser=0&hl=fr&gl=fr&pb=

https://issuetracker.google.com/issues/62938530

https://www.dkomputer.com/googleHome.html

https://github.com/costastf/locationsharinglib

Schöne Grüße,
SteRa


#!/bin/bash
cookies=("cookie1" "cookie2")
tmp1=`mktemp /tmp/gsl.XXXX`
tmp2=`mktemp /tmp/gsl.XXXX`
echo "user id;profile image;user;latitude;longitude;time;address;country code;battery level"
for i in "${cookies[@]}"; do
        cookie="$i"
        curl -s "https://www.google.com/maps/preview/locationsharing/read?authuser=0&hl=en&gl=en&pb=" --compressed -H "$cookie" > $tmp1
        tail -n +2 $tmp1|python -mjson.tool|sed '/^    ],/,+100 d'|tail -n +3 > $tmp2
        size=`wc -l $tmp2|cut -d" " -f1`
        iteration=`expr $size / 46`
        z=0
        while ! [ $z == $iteration ]; do
                m=`expr $z \* 46`
                userid=$(awk "FNR==$(expr $m + 3)" $tmp2|sed 's|,$||g'|sed -e 's/^ *//')
                profile_image=$(awk "FNR==$(expr $m + 4)" $tmp2|sed 's|,$||g'|sed -e 's/^ *//')
                user=$(awk "FNR==$(expr $m + 6)" $tmp2|sed 's|,$||g'|sed -e 's/^ *//')
                long=$(awk "FNR==$(expr $m + 16)" $tmp2|sed 's|,$||g'|sed -e 's/^ *//')
                lat=$(awk "FNR==$(expr $m + 17)" $tmp2|sed 's|,$||g'|sed -e 's/^ *//')
                ts=$(awk "FNR==$(expr $m + 19)" $tmp2|sed 's|,$||g'|sed -e 's/^ *//'|sed 's|...$||g')
                time=`date -d @$ts`
                address=$(awk "FNR==$(expr $m + 21)" $tmp2|sed 's|,$||g'|sed -e 's/^ *//')
                cc=$(awk "FNR==$(expr $m + 23)" $tmp2|sed 's|,$||g'|sed -e 's/^ *//')
                bat=$(awk "FNR==$(expr $m + 44)" $tmp2|sed 's|,$||g'|sed -e 's/^ *//')
                echo "$userid;$profile_image;$user;$lat;$long;$time;`echo -e $address`;$cc;$bat"
                ((z++))
        done
done
rm -f $tmp1
rm -f $tmp2





andi11

hast du schon was neues rausgefunden? Wüsste nicht so wirklich wie ich mich mit FHEM zuerst im Google Konto einloggen könnte.
Generell wäre das schon schick im Vergleich zum Geofencing. Man muss nur aufpassen, dass es zur Standortbewertung auch sein kann das der letzte Standort vor xxx Minuten übertragen wurde.

Ich verwende mittlerweile eine selbstgebastelte Lösung mit Automagic Premium, da die Geofence App ja leider nicht weiterentwickelt wird, und nicht mehr so recht mag. Was bei meiner Lösung schlecht ist, jedesmal nach Neustart muss man dran denken den Dienst wieder zu starten...

Jamo

Wenn ich euch richtig verstehe:
- Geolocation liefert immer nur, ob ich innerhalb des Geofences bin, aber nicht die genauen lat/lon koordinaten
- Was Ihr haben wollt, ist die genaue aktuelle position des Handys in lat/lon, unabhängig vom Fence.

Owntracks macht das unter IOS und Android, dazu braucht man das MQQT modul um owntracks mit FHEM zu verbinden.

Lösung ist hier im Forum beschrieben: https://forum.fhem.de/index.php/topic,37412.0.html
Über eine reverse Adresssuche bekommt man dann sogar die aktuelle Adresse.

Ausserdem kann man auch über Telegram den aktuellen lat/lon Standort (dann aber manuell) an FHEM schicken.

Bullseye auf iNUC, Homematic + HMIP(UART/HMUSB), Debmatic, HUEBridge, Zigbee/ConbeeII, FB, Alexa (fhem-lazy), Livetracking, LaCrosse JeeLink, LoRaWan / TTN / Chirpstack

andi11

Ich fand es einfach interessant direkt mit den Google Daten was zu machen. Wenn man sich die Textfile aus dem ersten Beiträg runterlädt, enthält die schonmal die genaue Position als GPS und als Adresse.

andi11

das ist glaub ich das passende Puzzlestück für den Login.
https://github.com/costastf/mapscookiegettercli
Wenn ich es recht sehe, macht es den Browser auf, man kann sich einloggen und dann speichert es alle Cookies in eine Datei.

andi11

habe für Chrome rausgefunden wie man an das Cookie kommt. Für andere Browser sollte es sehr ähnlich funktionieren.
Man muss schon bei google eingeloggt sein!
Entwicklertools öffen (F12)
Network -> Protokollierung aktivieren
auf die Seite https://myaccount.google.com/
Eintrag für myaccount.google.com suchen.
Unter Request Header den Eintrag cookie: ... komplett in die Zwischenablage
Kann bei HTTPMOD unter requestHeader.* so direkt wieder eingefügt werden.

Jetzt scheiter ich aber völlig an den regexps oder sonstwas zum auswerten....


andi11

Es gibt neues => Hab alle Regex zusammen, mal probieren wies sich so im täglichen Betrieb schlägt...
Regex GPSKoords bestimmter User: Vorname Name.*\n.*[null],(\d*[.]\d*,\d*[.]\d*)
Regex aktuelle Adresse bestimmter User: Vorname Name.*\n.*\n.*,"(.*)",null
Regex  letzte Aktualisierung bestimmter User: Vorname Name.*\n.*\n,(\d*)

Accountinhaber GPSKoords: .null,.null,.null,(\d*[.]\d*,\d*[.]\d*)
Accountinhaber aktuelle Adresse: .null,.null,.null,.*\n.*,"(.*)",null
Accountinhaber letzte Aktualisierung: .null,.null,.null.*\n,(\d*)



andi11

hat bis vor 2 Tagen tadellos funktioniert. Jetzt ist aber wohl das Cookie abgelaufen. Manuelles ersertzen von selbigem, und es geht wieder. So is das aber ehr "suboptimal"

stera

Hallo Andi,

ich nutze es aktuell noch über den HomeAssistant und gebe die Daten weiter an FHEM über MQTT.
Das Cookie muss ich leider auch öfter erneuern. Manchmal geht es länger 2-3Monate und manchmal halt nur paar Tage.
Bin nun auch nicht Experte in der Programmierung, aber es ist bestimmt möglich das über ein NPM Login zu realisieren, wie auch bei Amazon Alexa..
Vllt. hat ja irgendjemand Lust dazu. Die Geolocation funktioniert damit sehr zuverlässig.

Gruß,
SteRa

andi11

Aktuell geht es bei mir nicht mehr.
Der Link hat sich geändert oder?
https://www.google.com/maps/preview/locationsharing/read?authuser=0&hl=fr&gl=fr&pb= 300

Programmieren kann ich schon bissl, aber wie man mit NPM Login starten kann, keine Ahnung.