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

Nun kommt wie versprochen der Teil 3 mit den Python Scripts für das einlesen der Daten in die Datenbank. Dies wird benötigt da MQTT die Daten nur einmal sendet und diese nirgends gespeichert werden. Hierzu benötigen wir ein Python Script, dass die MQTT-Tracking Daten aufnimmt und diese dauerhaft in eine MySQL Datenbank speichert. Diese Daten können wir dann zur Auswertung und grafischen Darstellung  weiter nutzen wie zB. für den GPX-Viewer.

Der GPX-Viewer kann die Tracking Daten visualisieren wie man sie von Google Maps kennt. Das Kartenmaterial kann dann von Google Maps oder Openstreet-Map genutzt werden. Zu diesen sehr interessanten Teil kommen wir auch noch.

MQTT Tracking mit Raspberry Pi mit GPX-Viewer
MQTT Tracking mit Raspberry Pi mit GPX-Viewer
Nun installieren wir die Python Scripts aus dem Github:

# apt-get install mysql-server mysql-client php5-mysql
# apt-get install nginx
# apt-get install python-pip python-mysqldb
# pip install paho-mqtt
# pip install peewee
# cd /opt
# git clone https://github.com/owntracks/backend.git owntracks
# cd owntracks/m2s/
# cp settings.py.sample settings.py

In der settings.py die Parameter eintragen für die MySQL-Datenbank sonst kann keine Verbindung hergestellt werden.

# mysql -u root -p
Enter password:
 
mysql> create database owntracks;
Query OK, 1 row affected (0.00 sec)
 
mysql> create user 'owntracks'@'localhost' identified by '$YOUR_PASSWORD';
Query OK, 0 rows affected (0.03 sec)
 
mysql> grant all privileges on owntracks.* to 'owntracks'@'localhost';
Query OK, 0 rows affected (0.00 sec)
 
mysql> flush privileges;
Query OK, 0 rows affected (0.87 sec)

Nun kommt die Installation der Datenbank Tabellen , auch Schema genannt:

# cd /opt/owntracks/m2s/
# python dbschema.py

Kommt es hier zu Fehlern mit dem Verbindungsaufbau der Datenbank, einfach die „settings.py“ nochmal prüfen. In der Basisinstallation von MySQL-Server hat „root“ kein Passwort. Jetzt können wir das Python Script starten, welches die MQTT-Daten direkt in die Datenbank MySQL speichert.

# cd /opt/owntracks/m2s/
# ./m2s.py &

Nun ist es umständlich, dieses Kommando jedes Mal bei starten des Raspberry Pi manuell zu starten. Wir automatisieren das nun. Zuerst schreiben wir hier uns ein kleines Shellscript, weil wir sonst das Programm nicht fehlerfrei aufrufen können.

# sudo su -
# mkdir /root/bin

#  vi /root/bin/exporter.sh

#!/bin/bash
cd /opt/caserio/owntrack/m2s; nohup /opt/caserio/owntrack/m2s/m2s.py &

# chmod +x /root/bin/exporter.sh

Dann tragen wir dieses Script in die Datei „/etc/rc.local“ ein

#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.

sudo /root/bin/exporter.sh

exit 0

Ab jetzt ist der Raspberry PI bereit alle MQTT-Tracking Daten, auch nach einem Restart, automatisiert aufzunehmen und dauerhaft zu speichern.

Weiter geht es im Teil 4 mit dem GPX-Viewer, wo wir die gespeicherten Daten über den lokal installieren Webserver visualisieren.

Bei Fragen einfach hier die Kommentar Funktion nutzen.

 

Hier geht es zum letzten und 4-ten Teil der Anleitung

 

Viel Spaß und Erfolg wünscht , Joachim

 


2 Kommentare

  1. Vielen Dank für Teil 3 & 4!

    Leider hat bei mir das Python Script, welches die Daten in die DB schreiben soll einen Fehler beim Ausführen. Eine Lösung habe ich bisher leider nicht finden können. Es scheint mir aber, dass das Script die „settings.py“ nicht findet. Ist aber genau dort wo sie sein soll. Extra einmal alles nach Anleitung gemacht, bevor ich es selbst anpasse. Hier die Error Meldung:

    root@thethingbox /home/pi # /opt/owntracks/owntracks/m2s/m2s.py
    Traceback (most recent call last):
    File „/opt/owntracks/owntracks/m2s/m2s.py“, line 33, in
    cf = Config()
    File „/opt/owntracks/owntracks/m2s/config.py“, line 9, in __init__
    execfile(filename, self.config)
    IOError: [Errno 2] No such file or directory: ’settings.py‘

    Zufällig spontan eine Idee?

  2. Hallo Pascal

    Du musst zum Aufruf „IMMER“ erst in das Verzeichnis wechseln.

    Wie im Beispielscript auch gezeigt :
    cd /opt/caserio/owntrack/m2s; nohup /opt/caserio/owntrack/m2s/m2s.py&

    Dann sollte es funktionieren, wenn nicht melde Dich hier einfach nochmal.

    Beste Grüße , Joachim

Kommentar hinterlassen

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

*