Live Tracking mit MQTT und owntracks auf dem Raspberry PI – Teil 4

Dies ist der letzte und vorerst abschließende Artikel zum Thema MQTT-Tracking mit dem Teil 4. In diesem Artikel beschreibe ich die Visualisierung der Geo-Tracking Daten, die mit der Mobile App „owntracks“ via MQTT auf einem Raspberry Pi erfasst worden sind.

Im Teil 3 hatte ich beschrieben wie die Geo-Daten in die MySQL-Datenbank mit einem Python Script übergeben werden. Nun benötigen wir die Daten aus der Datenbank in einem GPX Format. Das GPS Exchange Format (GPX) ist ein Format zur Speicherung von Geodaten , das von der Firma TopoGrafix entwickelt wurde. Es basiert auf einen XML-Standard. Dieses XML-Schema beschreibt die Elemente und den Aufbau des GPS Exchange Formats. Als Dateiendung wird  „.gpx“ verwendet.

Wir brauchen nun die Daten aus der MySQL Datenbank in einem XML-Format mit der Dateiendung „.gpx“ auf dem Raspberry Pi.

Nennen wir das Script „heute.sh“

sudo su -
# vi /root/bin/heute.sh

#!/bin/bash
cd /opt/caserio/owntrack/m2s; ./gpxexporter.py -u jhummel -d android -f `date --date="Today" +%F` -t `date --date="Tomorrow" +%F`  > /var/www/download/heute.gpx

chmod +x /root/bin/heute.sh

Folgende Parameter müssen aus der Mobilen App „owntracks“ übernommen werden:

owntracks-Step5

Username =  -d jhummel
Device ID = -f android

Wenn bei Dir ein anderer Username und eine andere Device ID drin steht, bitte diese ersetzen durch Deine Daten in der Datei „heute.sh“.

Der Pfad „/var/www/download“ kann durch einen beliebigen Pfad ersetzt werden. Ich gehe hier nicht auf die Installation und Konfiguration eines Apache oder Nginx Webserver ein. Es gibt hierzu genügend Tutorials bei Google zu finden. Hier gehe ich davon aus, dass dieser funktionsfähig läuft.

Jetzt starten wir das Script alle 5 Minuten automatisch via CronJob.

sudo su -
# crontab -e

*/5 * * * *     /root/bin/heute.sh

 

Jetzt installieren wir den GPX-Viewer im Pfad „/var/www/download“

http://www.j-berkemeier.de/GPXViewer/ zum Download 

# cd /tmp 
# wget http://www.j-berkemeier.de/GPXViewer/GPXViewer5.13.zip
# unzip GPXViewer5.13.zip
# cd /var/www/download
# cp -R /tmp/GPXViewer5.13/GM_Utils .

Für die Anzeige benötigen wir nun eine HTML-Datei mit dem Namen (der natürlich frei gewählt werden kann) Heute.html .

<!DOCTYPE html>
<html lang="de">
  <head>
    <meta charset="utf-8">
    <title>GPXViewer Heute</title>
    <script type="text/javascript" src="GM_Utils/GPX2GM.js"></script>
    <style type="text/css">
          html, body { height:100%; padding-right:0 }
            .text { display:inline-block; vertical-align: top; padding-right:1em; width:25%; margin:0 }
            .map { display:inline-block; width: 72%; width:calc(75% - 20px); height:95%; height:calc(100% - 10px); margin:0; padding:0 }
    </style>
  </head>
  <body>

    <div class="text">
     <h1>Tracking Heute</h1>
         <p>Das Beispiel zeigt den Track mit einem Smartphone aufgenommen.</p>
     <hr><p><a href="http://www.j-berkemeier.de/GPXViewer/">GPX-Viewer</a></p>
    </div><div class="map gpxview:heute.gpx:OSM"><noscript><p>Zum Anzeigen der Karte wird Javascript benötigt.</p></noscript></div>
  </body>
</html>

Wenn die Datei Heute.html im Verzeichnis „/var/www/download/“ liegt kann diese über den Browser aufgerufen werden:

Starten des GPX-Viewer erfolgt dann via http://<Raspberry-IP-Adresse>/download/Heute.html

Das Ergebnis sollte dann in etwa so aussehen 🙂

Tracking mit owntracks und MQTT auf dem Raspberry Pi
Tracking mit owntracks auf dem Raspberry Pi
Tracking mit owntracks auf dem Raspberry Pi
Tracking mit owntracks auf dem Raspberry Pi
Tracking mit owntracks auf dem Raspberry Pi
Tracking mit owntracks auf dem Raspberry Pi

Fertig ist die Anwendung, es kann nun kräftig Tracking betrieben werden. Egal wo Du bist, werden die Geo-Daten nun erfasst. Aber die Daten werden nicht bei Google oder anderen fremden Providern gespeichert, sondern alles lokal und sicher auf Deinen Raspberry Pi. Du erinnerst Dich an meinen Leitspruch „Deine Daten bei Dir“ !

Wünsche nun viel Spaß und viel Erfolg , Joachim

 

9 Kommentare

  1. Hallo,
    erstmal tolle Beschreibung !!!
    Ich hab aber noch ne Frage zu TLS. Ich habe den Mosquitto Broker auf dem Raspi hinter einer Fritzbox. Der Zugriff auf die Fritzbox soll über MyFritz erfolgen.
    Muß ich überhaupt ein lokales Zertifikat auf dem Raspi installieren? Eigentlich ist doch der Zugang über MyFritz schon https.

  2. Hallo auch ,

    in diesem Fall kannst Du nach meiner Meinung MyFritz nicht wirklich nutzen. Ich kenne es nicht wirklich da ich diesen Service nicht nutze bin mir da nicht 100% sicher. Im Regelfall brauchst einen DyNDNS-Service und dann ein Port Forwarding auf der Fritzbox. Dh. das SSL-Zertifikat brauchst Du auf dem Raspberry Pi schon. Der Port 8883 der von außen im Internet angesprochen wird, muss auf dem Raspberry PI ebenfalls Port 8883 weitergeleitet werden. Ob MyFritz das kann weiß ich nicht.
    Die Daten des MQTT-Cleint müssen direkt ohne Umwege von MyFritz an Deinen DSL-Anschluß gesendet werden. Eine andere Lösung kenne ich nicht.

    Grüße Joachim

    1. MyFritz sollte eigentlich funktionieren, da man jetzt auch MyFritz Freigaben einrichten kann ( http://avm.de/service/fritzbox/fritzbox-7490/wissensdatenbank/publication/show/1376_MyFRITZ-Freigaben-einrichten/ ). Da ich meine Fritzbox über HTTPS erreichen kann, gehe ich davon aus, dass dies dann auch für die Freigabe gilt. Für die OwnTracks App würde ich dann das Zertifikat der Frtzbox nutzen.
      Bovor ich an der Fritzbox unbewusst was auf mache, wollte ich halt vorher mal nachfragen und dann testen 😉

  3. „Mit MyFRITZ!-Freigaben können Sie jederzeit mit einem beliebigen Internetbrowser über das Internet direkt auf Serverdienste (z.B. HTTP-, FTP-Server) im Heimnetz der FRITZ!Box zugreifen.“

    Genau das Protokoll bzw. Port was Du brauchst mit Port 8883 stellt Dir MyFritz eben nicht zur Verfügung. Was Du nutzen kannst, ist diese ZufallsURL die Dir myFritz.net zur Verfügung stellt als DNS-Name. Den Rest musst Du über eine Portfreigabe der Fritzbox selbst einrichten.

  4. Unter „2 MyFRITZ!-Freigabe einrichten“ steht „Wenn Sie eine Freigabe für einen anderen Serverdienst einrichten möchten, wählen Sie den Eintrag „Andere Anwendung“ und ergänzen Sie die folgenden Angaben:“

    Ich denke ich werde es heute einfach mal austesten.
    Trotzdem vielen Dank. Der Blog war sehr hilfreich.

  5. In der neuen FritzOs wird jetzt unterschieden zwischen Portfreigaben (wie in deinem Bild) und MyFritz-Freigaben. Die Einstellungen sind dann identisch.
    Die MyFritz-Freigaben sind halt nur für den MyFritz Zugang.
    Werde heute einfach mal testen ob ich die Freigabe auf https://..:8883 einstellen kann und ob ownTracks mit dem Zertifikat der Fritzbox funktioniert.
    Danke!

  6. Es wird nicht funktionieren das kann ich Dir jetzt schon sagen.
    Das Protokoll ist falsch https://..8883 weil es kein HTTP-Protokoll ist sondern MQTT und das müsste schon mqtt://..8883 heißen und das geht definitiv nicht über myfritz.net.

    Grüße Joachim

Kommentar hinterlassen

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

*