Problematik mit Arduino und Daten speichern

Bisher haben wir auf unserem Entwicklungsboard LinkIt One die Messdaten in einer CSV Datei abgespeichert. Die ersten Auswertungen wurden damit etwas umständlich betrieben.

  • Testgerät abstecken
  • auf Massenspeicher umschalten
  • Testgerät anstecken
  • CSV Datei holen
  • in Excel importieren
  • Testgerät ausstecken
  • auf Normalbetrieb umschalten
  • Testgerät für Aufzeichnung aktivieren

Uns waren zwei Punkte klar.

  1. umständliche Arbeitsweise und sehr ineffizient
  2. wir müssen sofort etas ändern

An diesem Punkt müssen wir jedoch festhalten. Wir haben unseren ersten Meilenstein gut in der Zeit geschafft. Wir konnten Messwerte erfolgreich aufzeichnen und erste Auswertungen sind bereits möglich.

In den bisherigen Auswertungen ist sehr gut erkennbar, wenn z.B. eine bestimmte Aktion gesetzt wird. Diese Erkenntnis beschreiben wir demnächst.

Rasberry PI als zentraler Datenspeicher

In unserem Projektplan steht als nächster Schritt die Erkennung bestimmter Aktionen an. Wir werden jedoch die Zentralisierung der Datenspeicherung etwas vorziehen, um komfortabler Auswertungen betreiben zu können. Der Raspberry PI 3 Model B wurde von für das weitere Vorgehen ausgewählt.

Besonders interessant ist die Erweiterung des Raspberry PI 3 Model B, da hier neben WLAN auch Bluetooth 4.1 und Bluetooth Low Energy (BLE) unterstützt. In weiterer Folge werden wir auch unsere Teststation um diese Funktionalität und Datenverbindung erweitern. Wir haben dazu schon spannende Pläne und Vorbereitungen getroffen. Doch dazu berichten wir erst zu einem späteren Zeitpunkt nach den ersten Tests und der dazugehörigen Umsetzung.

Installation des Raspberry PI mit Raspbian

Die Installation des Raspberry PI entspricht einer Standardinstallation unter der Verwendung des Standard Image.

Wir installieren alle Updates und führen auch ein Upgrade des Systems durch.

sudo apt-get upgrade
sudo apt-get update

Zusätzlich wollen wir, dass unser raspberry immer up-to-date bleibt damit wir daran nicht mehr aktiv selbst denken müssen. Einen bestimmten Grad der Automatisierung finden wir enorm wichtig, da uns das in der Zukunft auch Arbeit ersparen kann. Zu diesem Thema gibt es eine gute Anleitung, nach welcher wir auch unser Auto Update integriert haben.  Damit sollte der Raspberry jeden Montag um 7 Uhr sich selbständig aktualisieren. Wir werden das im Laufe unserer nächsetn Entwicklungen am Anfang kontrollieren.

Erreichbarkeit für interessierte Personen

Unser Testsystem befindet sich (noch) nicht im Büro der mea IT Services, sondern zuhause bei Michael Ulm. Damit auch interessierte Personen einen Eindruck erhalten, wie so eine Messung aussehen kann, bzw. welche Testwerte gesammelt werden, ist gerne dazu eingeladen sich selbst ein Bild davon zu machen. Unter https://mike.dynathome.net ist der Raspberry PI erreichbar. Durch ein paar „einfache“ Schritte ist es möglich per SSL und DynDNS den eigenen Rechner bzw. Raspberry PI von extern zu erreichen.

DynDNS

Wir haben mittels mit DynDNS und den nötigen Router Portweiterleitungen unseres Heimnetzwerks eine Verbindung von extern bis zu unseren internen Raspberry PI geschalten.

NGINX

Am Raspberry PI läuft aufgrund unserer Erfahrungswerte ein NGINX Webserver. Es wäre auch ein Apache Webserver möglich gewesen, doch ist für unseren Anwendungsfall der Datenübertragung NGINX unserer Meinung performanter. Zur Installation eines NGINX Webservers gibt es ebenso eine gute Anleitung.

SSL

Schlussendlich wollen wir in Zukunft eine gesicherte Verbindung anbieten wollen und haben aus diesem Grund eine Anbindung mittels https bereitgestellt. Wir verwenden dazu den SSL-Dienst Let’s Encrypt. Dabei wichtig „free“, „automatic“ und „open certificate authority“. Die Anleitung für NGINX wird ebenso bereitgestellt, dass ein Einstieg „leicht“ möglich ist. Wenn jemand mit Let’s Encrypt nicht so vertraut ist, empfehlen wir hier einfach Zeit zu reservieren. Es kann etwas dauern, doch schlussendlich zahlt sich es aus, damit eine sichere Verbindung gegeben ist.

Folgend ein Beispiel laut unserer Konfiguration in NGINX. Damit wird ein passendes Zertifikat angefordert und steht somit am Raspberry PI sofort zur Verfügung. Schneller kennen wir keinen anderen Service für SSL Zertifikate.

./certbot-auto certonly --webroot -w /var/www/mike.dynathome.net/ -d mike.dynathome.net

Sehr gut gelungen ist auch die Integration des Zertifikats in die aktuelle NGINX Konfiguration. Mittels folgenden Befehl wird die Konfiguration für die Nutzung des SSL Zertifikats erweitert.

./certbot-auto --nginx

Wir haben auch die Erneuerung des Zertifikats in unser „Auto Update“ mitintegriert und möchte auch die Aktualisierung in Zukunft so gut wie möglich automatisieren.

PHP

Die spätere Umsetzung einer Webansicht der Messwerte werden wir vermutlich auf ein PHP basierenden System implementieren. Details dazu müssen wir selbst erst erarbeiten bzw. eine Detailplanung durchführen.

Bis dahin wollen wir jedoch einzelne Themen mittels PHP Anbindung testen. Dazu gehört das Auslesen der Datenbank. Zur Installation von PHP sind wir der Anleitung zu NGINX und PHP (siehe oben) gefolgt.

MongoDB

Wir wollen für die Datenspeicherung der einzelnen Messwerte MongoDB einsetzen und zum Auslesen der Daten voraussichtlich PHP verwenden.

MongoDB bietet sich für viele Datensätze gut an. Stichwort Big Data! Es gibt zahlreiche Berichte über Vorteile und Nachteile zur beliebten Relationalen Datenbank MySQL im Vergleich zu NoSQL Datenbanken wie MongoDB. Wir werden in diesem Projekt MongoDB testen und eruieren ob es für unsere Anwendungszwecke die passende Wahl gewesen ist.

Zur dynamischen Anzeige sind weitere Webtechnologien angedacht, die wir zu einem späteren Zeitpunkt beschreiben werden. Zum Glück müssen wir auch hier das Rad nicht neu erfinden und setzen auf bewährte Anleitungen (nur eben ohne die Installation von Node.js. Im Grunde genommen führen wir folgenden Befehl aus.

sudo apt-get install mongodb-server

Um mit PHP auf MongoDB zugreifen zu können benötigen wir noch eine Erweiterung.

MongoDB + PHP + RaspberryPI = IoT AirClean Server

zum abschließenden Test starten wir direkt am Raspberry PI den Befehl

mongo

, damit wir folgende Befehle für einen ersten Testdatensatz absetzen können. Wir wählen dazu zuerst unsere Datenbank aus.

use iotairclean

Fügen einen Datensatz ein.

db.measurements.insert( { temperature: 26.4, humidity: 45.3, co2: 877, station: "michaelulm@home"} )

und geben alle Datensätze von measurements aus

db.measurements.find({})

Zum Einstieg in mongo bietet MongoDB eine gute Dokumentation der möglichen Befehle. Interessant für den ersten Kontakt mit einer NoSQL Datenbank ist die Übersicht der CRUD Operationen.

Spannung steigt und das Beste kommt zum Schluss. Der Link zu unserer „Measurements Demo„. Wir werden in der nächsten Zeit unsere Teststation / Entwicklungsstation so oft wie möglich laufen lassen. Aktuell wurden bereits über 145.000 Messungen abgespeichert.

 

One thought to “Raspberry PI als zentraler Datenspeicher”

Leave a comment

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