GPS Forwarder deutsch

English

Problem

Für das Lifetracking bei den Brevets habe ich in den letzten Jahren die Lifetracking-Funktion von Oruxmaps verwendet: Oruxmaps hat die Daten direkt an meine Homepage geschickt, wo sie von einer Zusatzsoftware (WordPress-Plugin Trackserver) empfangen und angezeigt werden. Leider hat sich das als nicht sehr zuverlässig herausgestellt, was wohl vor allem an der Handy-Seite liegt:

  • Gerade bei längeren Funklöchern kam es zu oft vor, dass das Tracking nie wieder startete.
  • Bei langen Strecken sprang die GPS-Zeit um 24 Stunden in die Vergangenheit. Ob das ein Fehler von Oruxmaps oder von Android ist, weiß ich noch nicht – es passiert jedenfalls auch, wenn ich das in einer Emulation mache. Es kann also nicht an Hardware oder Firmware liegen.
  • Nach Funklöchern schickt Oruxmaps nur etwa 50 Positionen für die gesamte noch unübertragene Strecke (die dadurch ungenau werden kann)
  • Manchmal schickt Oruxmaps die Meldungen in der falschen Reihenfolge. Es kommt z.B. oft vor, dass die letzte Positionsmeldung erst nach Beenden vom Lifetracking geschickt wird. Siehe Oruxmaps-Forum

Lösung

Darum habe ich nun selber eine Android-App geschrieben, die auf dem Handy diese Funktion übernimmt. Sie bestimmt selber keine Positionen. Wenn irgendeine andere App eine GPS-Position bestimmt, erfährt GPS Forwarder das und schickt sie weiter zum Server (zum Beispiel Trackserver).

GPS Forwarder zeigt dabei Logmeldungen, die sehr genau zeigen, woran es liegen könnte, wenn es nicht funktioniert – und dafür gibt es viele Gründe! Es wird immer schwieriger, eine Android-App so zu schreiben, dass sie auch im Hintergrund vernünftig funktioniert – Google zieht beim Stromsparen immer mehr die Daumenschrauben an.

GPS Forwarder verwendet dabei das von MapMyTracks definierte Übertragungsprotokoll.

Installation

  • Voraussetzung ist Android 6.0 „Marshmallow“ oder höher.
  • Hier kann das APK heruntergeladen werden. Ich möchte das in Zukunft gerne mit F-Droid installierbar machen.
  • Im GPS Forwarder folgende Einstellungen vornehmen:
    1. Url: Die Adresse vom Server. Wenn sie mit https:// beginnt, wird die Übertragung verschlüsselt. Wenn man einen besonderen Port verwenden will, gibt man ihn nach einem Doppelpunkt an, z.B. https:/meinehomepage.de:3456
    2. Benutzername auf dem Server
    3. das dazugehörige Passwort
    4. Alle weiteren möglichen Einstellungen können später vorgenommen werden, die vorgegebenen Werte sollten schon ganz gut passen.

Support

Wenn Sie einen Fehler finden oder einen Verbesserungswunsch haben, tragen Sie das bitte  hier ein.

Entwicklung

GPS Forwarder steht unter der Open-Source-Lizenz Apache 2.0.

Der Quelltext ist auf gitlab.

Server-Software

Normalerweise wird das z.B. der erwähnte WordPress-Plugin „Trackserver“ oder mapmytracks.com sein. Ich habe aber auch hier selber etwas programmiert: Gpxity. Das enthält auch ein Serverprogramm. Untenstehendes Beispiel empfängt die Daten und leitet sie an zwei Ziele weiter: Ein lokales Verzeichnis /var/lib/gpxity_server und die Datenbank vom WordPress-Plugin „Trackserver“. In einer separaten Datei stehen die Zugangsdaten und anzuwendende Fences (Positionen in definierten Bereichen werden nicht an das jeweilige Ziel weitergegeben). Es können beliebig viele verschiedene Ziele definiert werden, z.B. auch Mailen des gesamten Tracks alle X Minuten.

Damit muss das Handy die Daten nur einmal versenden, auch wenn man sie automatisch an mehrere Ziele schicken muss – die Weiterverteilung macht Gpxity.

gpxity_server --certfile=/var/lib/gpxity_server/cert.pem --keyfile=/var/lib/gpxity_server/key.pem --timeout=5 --servername rohdewald.de --loglevel debug /var/lib/gpxity_server wptrackserver:wolfgang