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

Auf der Suche nach Inhalten und Programmen für den Raspberry PI bin ich auf den Message Broker auch MQTT genannt aufmerksam geworden.

Message Broker kenn ich schon im kommerziellen Umfeld bei Websphere dem IBM-Applikationserver und da wurde es interessant im Zusammenhang mit dem Raspberry PI. Wie kann man das nutzen und welche Programme gibt es hierzu?

Hierzu möchte ich etwas ins Detail gehen, das ist mir wichtig, damit meine Leser die Zusammenhänge verstehen und nicht oberflächlich das Thema angerissen wird.

Message Queue Telemetry Transport (MQTT) ist ein offenes Nachrichten-Protokoll für Machine-to-Machine-Kommunikation (M2M), das die Übertragung von Telemetrie-Daten in Form von Nachrichten zwischen Geräten ermöglicht, trotz hoher Verzögerungen oder beschränkten Netzwerken. Entsprechende Geräte sind hierbei Sensoren, Fühler, Mobiltelefone,  in Fahrzeugen oder Laptops.

MQTT Message Broker
MQTT Message Broker

 

 

 

 

 

 

 

 

 

Die Telemetriedaten sehen in der Regel so aus :

owntracks/jhummel/android {"_type": "location", "lat": "48.1383563", "lon": "11.4276576", "tst": "1421784738", "acc": "20.0", "batt": "56"}
owntracks/jhummel/android {"_type": "location", "lat": "48.1383563", "lon": "11.4276576", "tst": "1421784738", "acc": "20.0", "batt": "56"}
owntracks/jhummel/android {"_type": "location", "lat": "48.1383563", "lon": "11.4276576", "tst": "1421784738", "acc": "20.0", "batt": "56"}
owntracks/jhummel/android {"_type": "location", "lat": "48.1383563", "lon": "11.4276576", "tst": "1421784738", "acc": "20.0", "batt": "55"}
owntracks/jhummel/android {"_type": "location", "lat": "48.1383563", "lon": "11.4276576", "tst": "1421784738", "acc": "20.0", "batt": "55"}

Die Datengröße sind zirka 100 Bytes , welches sich wunderbar durch das Mobilfunknetz selbst mit EDGE übertragen lässt. Es muss nicht  3G oder 4G vorhanden sein und die Daten kommen verlässlich beim Broker an.

Durch die weitere Suche und Recherche bin ich auf owntracks.org „Your location companion“  aufmerksam geworden. Die Webseite bietet allerhand Python Scripte an. Diese sind auch voll lauffähig auf dem Raspberry PI. Darüber hinaus gibt es jeweils eine App für iOS und Android Smartphone. Da wurde es für mich sehr interessant.

Links für Smartphone:
https://itunes.apple.com/us/app/mqttitude/id692424691?mt=8  <– für iOS hier klicken https://play.google.com/store/apps/details?id=st.alr.mqttitude  <– für Android hier klicken

Diese App stellt die oben dargestellten Telemetrie Daten genau so in dieser Form zur Verfügung.

Nun stellte sich die Frage, wie kann ich meine Telemetrie Daten sichtbar machen auf eine Google Maps oder Openstreetmap?

Also wie kommen meine Telemetrie Daten erfasst mit einem Smartphone dort hin wo ich es will und zwar auf meiner Webseite, ohne Google Datenerfassung oder sonstige fremde Dienste. „Meine Daten bei mir“ oder in dem Lesers Fall „Deine Daten, bei Dir“.  Soviel sei schon verraten, es geht alles und das auf dem Einplatinencomputer „Raspberry PI“.

Also gehen wir mal auf Software Suche und beschaffen uns alles für den RASPI.

Durch ein anderes Projekt „Internet of Things“ , welches höchst spannend ist, bin ich auf diese folgende Webseite aufmerksam geworden. Hier gibt es schon das ganze vorinstalliert und schon vorkonfiguriert als fertiges Raspberry Image:  http://thethingbox.io/

Dort muss man auf Download klicken und seine Mailadresse hinterlassen und dann kann man das Image herunterladen. Wie das Image auf eine SD-Karte kommt kann man hier nachlesen:
http://developer-blog.net/administration/raspberry-pi-image-auf-sd-karte-kopieren/

 Hinweis: der MQTT Message Broker sendet jede Nachricht nur einmal und dann wird diese verworfen. Die Nachrichten werden nirgendwo gespeichert. Es gibt keine Datenbank wie MySQL etc. für den Message Broker Server Mosquitto . Jedes Tracking mit dem Smartphone via „owntracks“ wird genau einmal gesendet und dann verworfen. Deshalb müssen wir einen Weg finden, wie die Daten gespeichert werden können. Diese benötigen wir dann um ein Livetracking mit Google Maps oder Openstreetmap zu erstellen. Aber immer schön der Reihe nach.

In diesem Fall machen wir kein Tracking mit einem mobilen Raspberry PI sondern, der RAPSI bleibt Zuhause im privaten Netz und das Smartphone erstellt unsere Bewegungsdaten.

Noch ein wichtiger Hinweis: in der Beschreibung arbeite ich immer als Benutzer „root“, das soll Fehler und sonstiges vermeiden. Du kannst dann auch gerne als eigener Benutzer arbeiten oder die Sachen dann hinterher auf einen anderen Benutzer umstellen.

So gehen wir ans Werk 🙂

Wenn das Image auf der SD-Karte drauf ist und der Raspberry PI gestartet ist Anmeldung als Benutzer „pi“ und Passwort „raspberry“ dies gilt auch für das Image von thethingbox.io

apt-get install python-pip mysql-server python-mysqldb
mysql -u root -p
create database owntracks;
pip install peewee
mkdir /opt/owntracks
cd /opt/owntracks
git clone https://github.com/owntracks/backend.git owntracks
cd owntracks/m2s/
cp settings.py.sample settings.py
vi settings.py   # Datenbank Parameter anpassen, Benutzer, Kennwort
./m2s.py &
tail -f logfile

Anpassen von „/etc/mosquitto/mosquitto.conf“

 Place your local configuration in /etc/mosquitto/conf.d/
#
# A full description of the configuration file is at
# /usr/share/doc/mosquitto/examples/mosquitto.conf.example

pid_file /var/run/mosquitto.pid

persistence true
persistence_location /var/lib/mosquitto/
log_timestamp true
password_file /etc/mosquitto/passwd


autosave_interval 60
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 127.0.0.1
listener 8883


log_dest file /var/log/mosquitto/mosquitto.log

include_dir /etc/mosquitto/conf.d

Erstellen der Passwort Datei

"meinbenutzer" ist der Benutzer der später am Smartphone mit der App "owntracks" benutzt wird. Hier das Passwort erstellen welches dann auch am Smartphone benutzt wird.

mosquitto_passwd -c /etc/mosquitto/passwd meinbenutzer
/etc/init.d/mosquitto stop
/etc/init.d/mosquitto start

 

Fortsetzung im Teil 2 :
https://blog.unixweb.de/live-tracking-mit-mqtt-und-owntracks-auf-dem-raspberry-pi-teil-2/

 

 

3 Kommentare

  1. Hallo Joachim

    ich bekomme beim versuch m2s.py zu starten diese Meldung
    Can’t create Paho MQTT object: name ‚paho‘ is not defined
    paho-mqtt habe ich installiert
    system ist ubuntu 16.04

    Andre

Kommentar hinterlassen

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

*