Bei Christian Leus bin ich auf seinen Ansatz der Selbstüberwachung gestoßen – NSA und so. Christian nutze bisher das mittlerweile eingestellte Google Latitude um seinen aktuellen Aufenthaltsort zu speichern. Da dieser Dienst nun nicht mehr zur Verfügung steht nutzt er nun die Daten aus Apples „Find My iPhone“.
Apple bietet mit „Find My iPhone“ die Möglichkeit alle mobilen Geräte unter einer AppleID geographisch zu lokalisieren. Sprich den aktuellen Standort auf einer Karte zu markieren. Zusätzlich lässt sich auf dem Gerät ein Ton oder eine Nachricht anzeigen oder eine Fernlöschung auszulösen.
Ich hab diese Idee und sein Script aufgegriffen und an meine Bedürfnisse angepasst.
Mein raspberryPI ruft alle 15 Minuten ein Script auf welches überprüft ob die letzte gespeicherte Koordinate mindestens 1 Stunde alt ist. Ist sie älter wird die aktuelle Koordinate meines iPhones über die „Find My iPhone“-API abgerufen und mit der letzten gespeicherten Koordinate verglichen. Ist die Distanz größer als 1 KM wird sie gespeichert und der Ablauf beginnt von vorne. Ist die Distanz niedriger als 1 KM wird beim nächsten Durchlauf direkt die Distanz zwischen letzter gespeicherter und aktueller Koordinate überprüft und ggf. abgespeichert.
So werden nur Koordinaten gespeichert wenn ich mich bewege. Trotzdem sind mittlerweile eine Menge Koordinaten angefallen. Da bei jedem wechsel zwischen z.B. Arbeit und zu Hause Koordinaten gespeichert werden.
Primär nutze ich eine Google Map welche die gespeicherten Positionen als Heatmap darstellt. Anfangs habe ich die Koordinaten noch mittels Marker dargestellt. Ist jedoch bei vielen Markern relativ übersichtlich.
Nachmachen erwünscht. Sourcecode gibt es auf GitHub: https://github.com/sinky/php-location-tracking-icloud
Ein cooles Projekt. Nicht schlecht umgesetzt!
Danke Hendrik,
Ich liebe es einfach solche Dinge zu „basteln“. Und einmal eingerichtet ist es – bisher – wartungsfrei.
Gruß Marco
Das hört sich wirklich interessant an. Schönes Projekt.
Hallo
Sieht sehr interessant aus! Habe es soeben ausprobiert, leider bleibt meine Karte leer, zeigt keine Koordinaten an und lädt ununterbrochen weiter… Hast du mir einen Tipp, was ich falsch mache?
Gruss Sandro
Hallo Sandro,
die Karte wird aber eingezeigt? Es werden nur keine Punkte eingetragen?
Schau doch mal in die Console deines Browsers, meist F12 (http://webmasters.stackexchange.com/questions/8525/how-to-open-the-javascript-console-in-different-browsers) was dort als Meldung ausgegeben wird.
Schön das die mein Projekt gefällt.
Gruß Marco
Hallo Marco
Danke für deine Antwort. Mittlerweile habe ich den Fehler gefunden, aufgrund einiger PHP-Einstellungen meines Webservers funktionierte das abspeichern der Standortdaten nicht. Aus diesem Grund wurde auch nichts auf der Karte angezeigt.
Funktioniert nun einwandfrei!
Gruss Sandro
Oh das macht dann Sinn ;-)
Hallo Marco,
ich finde das selbsttracken sehr interessant und bin dabei es auszuprobieren.
Aber es klappt nicht. Ich sehe nur die googlemaps karte dauerladen. unten steht noch ein button heatmap/marker und lastcheck, next check…
Ich muss gestehen, dass meine Programmierkenntnisse bescheiden sind…
Sehe ich das richtig, dass du die config.php vorsiehst um dort sein iCloud user und Passwort einzusetzen. Die track.php greift dann darauf zu?
define(‚ICLOUD_USER‘, ‚CHANGE_ME‘);
define(‚ICLOUD_PASS‘, ‚CHANGE_ME‘);
define(‚DEVICES‘, ‚0,1‘);
-> was bedeutet hier device? und die zahl dahinter? was trägt man ein?
.htacess definiert dass nicht jeder zugreifen kann?
was tut .giattributes, gitignore?
was denkst du woran es liegt, dass es nicht funktioniert?
auf meinem iphone habe ich natürlich findiphone aktiviert und es funktioniert da.
gruß
Florian
Device ist die ID deines Gerätes bei iCloud. Wenn man mehrere Geräte hat.
Die .git Dateien sind für github.com.
Wenn es unendlich lädt ist wahrscheinlich was beim Laden der Daten aus der Datenbank fehlgeschlagen. Könntest in deinem Browser mit F12 die Console ansehen. Dort müsste der Fehler erscheinen.
-> Nachtrag: gibt es bei class.sosumi.php etwas anzupassen?
danke Gruß Florian
Nein das ist eine fertige Klasse die Funktionen zum Auslesen der iCloud bzw. Find my iphone bereitstellt.
nochmal nachtrag:
ich habe mal die version von tylerhall ausprobiert, die funktioniert.
Ok super. Aber wer ist tylerhall? ;-)
Ich danke dir für deine Antworten. Ich bekomme keine Fehlermeldung in der Console. Die ist leer. Vielleicht liegt es am server bei meinem hoster der irgendwas nicht zulässt…?
Who is Tyler Hall? ;-)))
Tyler Hall hat doch das Sosumi client script das bei apple die Daten ausliest geschrieben, oder?
https://github.com/tylerhall/sosumi
Hi Marko, danke für das kleine Tutorial. Klappt soweit gut. Allerdings habe ich Probleme mit den Device IDs. Ich habe mehrere Geräte am Start und es will mit den Default Einstellungen nicht funktionieren. Selbst wenn ich meine Geräte IDs nutze klappt es nicht. Scheint wohl noch ein kleiner Fehler zu sein.
Zudem erhalte ich auf meinem Terminal folgende Fehlermeldung:
PHP Fatal error: Call to undefined function curl_init() in /var/www/tracking/class.sosumi.php on line 166
Any hints?
Hallo Adrian,
mit folgendem Script kannst du dir alle Devices mit ID ausgeben lassen.
https://gist.github.com/sinky/11345544
Also der curl Fehler lässt darauf schließen dass dein Webserver kein Curl installiert hat oder es in PHP nicht aktiviert ist.
Siehe: http://stackoverflow.com/questions/6382539/call-to-undefined-function-curl-init
Gruß Marco
Hi Marco, danke für die schnelle Hilfe. Mein Curl Fehler lage an einem defekten Apache Plugin, welches ich damals mal für meinen RPI geschrieben habe. Nun geht es. Danke für dein Device Snippet. ;)
Viele Grüße
Hallo Marco,
Verwenden sie noch immer diesses project?
Ich versuche es zu benutzen, aber es functioniert bei mir nicht? Kann es sein das etwas bei Apple geandert ist?
Grüßen,
Willem
Hallo, ich nutze es nicht mehr aktiv. Aber wenn ich es im Laufe der Nächsten Tage schaffe teste ich das Script mal. Aber ich denke wegen aktiviertem „two factor Auth“ Könnte es bei mir nicht mehr gehen.
Okay, danke.
Ich frage mich, ob es immer noch funktioniert.
Grüßen,
Willem