ownTracks & Mosquitto – Google Latitude-Clon im Eigenbau

Ich konnte früher eigentlich nie etwas mit Google Latitude, welches mittlerweile eingestellt ist anfangen. Tja, bis ich zur Fotografie gekommen bin. Es ist schon durchaus hilfreich, wenn man auf einer Fototour ist und im Nachhinein nachvollziehen kann, welche Wege man genau gegangen ist. Man kann das Ganze natürlich auch noch weiter spinnen und die gemachten Fotos anschließend mit den Geotags versehen. Viele Kameras bringen dazu bereits ein eingebautes GPS-Modul mit, für alle anderen gibt es optionale Module, die auf den Blitzschuh gesteckt werden können. Aber warum die Kohle zum Fenster rauswerfen, wenn doch mittlerweile jeder einen GPS-Tracker in Form des Smartphones mit sich rumträgt?

Im folgenden möchte ich euch ausführlich zeigen, wie ihr euren eigenen Google Latitude-Clone auf eurem eigenen Server einrichtet. Alle Anleitungen bzw. weiterführenden Hinweise, die zum Erstellen dieses Beitrages geführt haben, habe ich am Ende auch noch einmal aufgeführt.

Was wollen wir am Ende dieses Beitrages erreicht haben?

Mittels App wird unser Standort an unseren Server gesendet. Der dort installierte MQTT-Broker verarbeitet die Standortdaten und speichert sie in einer MySQL-Datenbank ab. Mittels Script und Cronjob soll am Ende eine einfache Karte im Browser dargestellt werden, die sämtliche Standpunkte vom Vortag anzeigt.
Natürlich lässt sich das Ganze noch für viele weitere Zwecke benutzen. Ich halte zur Zeit noch Ausschau nach einer geeigneten Lösung um Fotos nach einer Fototour anschließend automatisch per Geo-Tag zu versehen.

Was benötigen wir?

Eigentlich nicht viel. Als Basis natürlich ein Smartphone mit Android oder iOS auf dem die kostenlose App OwnTracks installiert ist.

Die App selbst wird später die Positionen an den Server schicken, nutzen auch noch weitere Freunde von euch, eure Installation könnt ihr auch diese später dort sehen.
Neben der App selbst benötigen wir einen im Netz öffentlich erreichbaren Server, auch ein Raspberry Pi, auf dem ich die Ganze Geschichte vorab ausprobiert habe kann problemlos verwendet werden. Als Distribution verwende ich Debian 7 (Wheezy), des Weiteren sollte bereits PHP und MySQL installiert sein.

Los geht es – Einrichtung des Servers

Legen wir los mit der Installation auf der Servierseite. Als MQTT-Broker setzen wir auf den bekannten Mosquitto, welcher für eine Vielzahl an Linux-Distributionen, aber auch Windows und OS X erhältlich ist. Für Debian gibt es freundlicherweise ein Repository, um die Pakete immer auf dem neusten Stand zu halten. Installiert wird dieses mittels folgender Eingaben:

wget http://repo.mosquitto.org/debian/mosquitto-repo.gpg.key
apt-key add mosquitto-repo.gpg.key
cd /etc/apt/sources.list.d/
wget http://repo.mosquitto.org/debian/mosquitto-stable.list
apt-get update && apt-get install mosquitto mosquitto-clients python-mosquitto

Für die verschlüsselte Verbindung greife ich auf ein vorhandenes Zertifikat von StartSSL zurück. Wie ihr dieses generiert habe ich schon einmal hier erläutert, daher erspare ich die einzelnen Schritte an dieser Stelle, um diesen Beitrag nicht unnötig in die Länge zu ziehen.
Wichtig ist, dass eure .key und .crt-Datei im Ordner /etc/mosquitto/certs/ liegen, die .ca.pem sowie sub.class1.server.ca.pem, die ihr ebenfalls von StartSSL erhaltet, gehören in den Ordner /etc/mosquitto/ca_certificates/. Anschließend geht es die Konfiguration von Mosquitto. Öffnet dazu die Datei /etc/mosquitto/mosquitto.conf. Ergänzt in dieser folgenden Inhalt:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
autosave_interval 1800
connection_messages true
log_dest stderr
log_dest topic
log_type error
log_type warning
log_type notice
log_type information
log_type all
log_type debug
log_timestamp true
listener 1883 localhost
listener 8883
capath /etc/mosquitto/ca_certificates
certfile /etc/mosquitto/certs/Euer.crt
keyfile /etc/mosquitto/certs/Euer.key
tls_version tlsv1
require_certificate false
allow_anonymous false
password_file /etc/mosquitto/passwd

Wichtig ist hier eigentlich nur, dass ihr den Pfad zu eurem Key und SSL-Zertifikat anpasst. Als nächstes legen wir einen Nutzer an, der später mit dem MQTT-Broker kommunizieren darf. Dafür benötigen wir das Kommando mosquitto_passwd. Mittels Befehl mosquitto_passwd -c /etc/mosquitto/paswd tim wird initial sofern nicht vorhanden die Passwortdatei angelegt und der Benutzer tim nach Eingabe des Passwortes hinzugefügt. Weitere Nutzer können anschließend mittels mosquitto_passwd -U /etc/mosquitto/passwd clientname1 hinzugefügt werden.
Die Konfiguration von mosquitto ist somit abgeschlossen. Führt ein abschließendes /etc/init.d/mosquitto restart durch, damit die neue Konfiguration wirksam wird.

Einrichtung des Clients & ein erster Test

Es wird Zeit, die Installation zu testen und den Client auf eurem Smartphone oder Tablet einzurichten. In diesem Beispiel sei hier kurz die Einrichtung unter iOS auf dem iPad gezeigt.

Passt in den Einstellungen der App den Host, ggf. den Port – sofern ihr diesen geändert habt – und die UserID sowie das Passwort an. Unter Reporting solltet ihr eine eindeutige DeviceID hinterlegen. In meinem Fall verwende ich einfach den Gerätetypen, in diesem Fall also ipad. Sofern die Konfiguration von mosquitto erfolgreich war, sollte nach tippen auf Check der Status auf connected springen.

Sofern die Verbindung erfolgreich hergestellt werden konnte, möchten wir die Daten natürlich auch verwenden. Dazu sollen diese ersteinmal in eine MySQL-Datenbank geschrieben werden. Bevor wir uns aber an die Anbindung an die Datenbank machen, checken wir erst einmal, ob die Standortdaten auch korrekt beim MQTT-Broker ankommen.

Mittels des Befehl mosquitto_sub -h localhost -p 1883 -u tim -P euerPasswort -v -t ‘owntracks/#’ solltet ihr nun eine ähnliche Ausgabe, wie ich auf dem Screenshot erhalten. Ist dies der Fall funktioniert die Verbindung zwischen eurem MQTT-Broker und OwnTrack problemlos.

Die Verbindung steht – Jetzt sollen die Daten gespeichert werden

Somit kann es weiter gehen an die Anbindung der Datenbank. Dazu greifen wir auf m2s zurück, einem Script der OwnTrack-Entwickler. Die Einrichtung verlief bei mir unter Debian etwas komplizierter, teilweise fehlten in meinem Falle diverse Pakete. Ich hoffe dennoch folgend nichts vergessen zu haben.

Installiert, sofern nicht auf eurem System vorhanden noch zwei Python-Komponenten mittels apt-get install python-mysqldb python-pip. Als nächstes richtet ihr eine Datenbank mitsamt Benutzter ein, die Zugriff auf diese hat.
Wechselt anschließend in das Wunschverzeichnis, in welches das Script installiert werden soll. Meine Installation habe ich unter /opt angelegt. Anschließend ziehen wir uns mittels git clone https://github.com/owntracks/backend eine Kopie der aktuellen Version.

Wechselt in den Unterordner /opt/owntrack/m2s/. Führt folgende Befehle durch:

1
2
rm peewee.py
pip install peewee MySQL-python

Öffnet nun mit eurem favorisierten Texteditor die Datei settings.py. Hinterlegt dort im Storage-Block die Zugangsdaten zu der vorherigen angelegten Datenbank. Bei mir war es des Weiteren noch erforderlich unter Broker, meinen mqttt_username und mqtt_password zu hinterlegen. Nachdem ihre Daten hinterlegt habt, solltet ihr mittels python dbschema.py das initiale Datenbankschema in der Datenbank einrichten. Ein abschließendes python m2s.py & startet schlußendlich das Script und lässt es im Hintergrund laufen. Für weitere Spielereien existiert dort auch ein Shell-Script. Ab sofort sollten eure Standortangaben auch in der Datenbank gesammelt werden.

Die Daten werden gesammmelt – Was nun?

Sofern alles klappt und eure Daten in der Datenbank gespeichert werden, können nun viele Spielereien damit angestellt werden. Das m2s-Script bringt beispielsweise ein weiteres Script zum exportieren für .gpx-Dateien mit. Diese können beispielsweise von Google Earth gelesen und dargestellt werden.
Wechselt, sofern ihr euch nicht im m2s-Ordner befindet in diesen. Dort findet ihr die für uns interessante Datei gpxexporter.py. Ein Beispielaufruf dieser könnte zum Beispiel so aussehen:

./gpxexporter.py -u client1 -d euerDeviceName -f "2015-01-04 00:00:01" -t "2015-01-04 23:59:59" -T ".gpx-Test" | cat > /pfad/zur/dailytracks.gpx

Am Ende spuckt das Script schlußendlich eine .gpx-Datei mit allen Daten des ausgewählten Zeitraumes aus. Der Kreativität sind hier keinerlei Grenzen gesetzt. Als Beispiel habe ich meine Datei mal bei gpsvisualizer.com hochgeladen.

Teilen:

Schreibe einen Kommentar