Um Daten vom ESP in einer
MySQL-Datenbank zu speichern, wird ein Webserver und ein MySQL Sever
benötigt. Anschließend muss noch ein php Skript geschrieben werden,
um die gesendeten Daten zu verarbeiten und an die MySQL-Datenbank zu
senden. Alle verwendeten Programme sind Open Source Programme, so
entstehen keine zusätzlichen Kosten.
Im ersten Schritt wird ein
Webserver installiert, dazu wird die XAMPP Apache Distribution
verwendet. Diese ermöglicht es unter anderem, einen MySQL-Server zu
starten. Da hierbei aber die Eingabeaufforderung als grafische
Benutzeroberfläche verwendet wird, wurde ein separates Programm für
den MySQL-Server installiert.
Die aktuelle Version des MySQL
Community Webserver kann auf
mysql.com
heruntergeladen werden. Die XAMPP Apache Distribution kann auf
apachefriends.org heruntergeladen werden. Für die Installation
des MySQL Community Webserver kann die Anleitung von „Programmieren
Starten“ verwendet werden.
Der
Webserver kann nach erfolgreicher Installation über das XAMPP
Control Pannel gestartet werden. Dazu muss lediglich der START Knopf
in der Zeile Apache betätigt werden. Wenn alles funktioniert hat,
ist der Name Apache grün hinterlegt und symbolisiert somit, dass der
Server online ist.
Anschließen kann innerhalb der
MySQL Workbench eine Datenbank erstellt werden, in der die erfassten
Sensordaten gespeichert werden können. Es wird empfohlen, der
Datenbank sowie den Tabellen die gleichen Namen wie innerhalb dieser
Dokumentation zu geben. Es können auch andere Namen verwendet werden
jedoch ist zu beachten, dass diese auch in allen Programmen
abgeändert werden müssen.
Auf
der folgenden Abbildung ist gezeigt, wie eine Datenbank erstellt
werden kann. Des Weiteren ist beispielhaft für einen Sensor die
Erstellung einer Tabelle gezeigt. Für jeden weiteren Sensor wird
ebenfalls eine Tabelle erstellt. Die finale Struktur ist der unten
stehenden Abbildung zu entnehmen.
Als letztes muss noch das php
Skript geschrieben werden, das die Anfragen des Webservers
bearbeitet
und an den MySQL-Server übergibt. Das Skript kann in einem
beliebigen Editor erstellt werden. Im Folgenden wir das php Skript
beispielhaft am Sensor SFM3019 gezeigt. Alle weiteren Programme
können im Kapitel Quellcode
eingesehen werden.
ESP32 Programm
Innerhalb dieser Dokumentation wird nur auf die für die Gruppe
„Ventilator Sensorik“ relevanten Teile des ESP32 Programmes
eingegangen. Für den „Remote Control“ Teil des Programmes kann die
Dokumentation der Gruppe „Entwicklung
und Updates“ zu Hilfe genommen werden.
Zu Beginn werden alle benötigten Bibliotheken eingebunden.
Anschließend werden die Sensoren initialisiert und erhalten
Variablen, in denen die ausgelesenen Sensorwerte gespeichert werden
können.
Anschließend werden die Strings für die Serveranfrage erstellt.
Diese sind nach dem Schema
<http://lokale_ipadresse:port/name_php_skript> aufgebaut.
Danach wird für jede Serveranfrage ein Client erstellt und die
Strings für die Serveranfrage werden mit den erfassten Werten der
Sensoren befüllt. Wichtig ist hierbei, dass der Name der GET Anfrage
mit dem Namen in dem php Skript übereinstimmt. So lautet die GET
Anfrage für den SFM3019 Sensor: "?flow=" + String (Sensorwert).
Nachdem die Strings für die
Serveranfrage mit den aktuellen Sensorwerten befüllt wurden, werden
die Clients gestartet und die einzelnen GET Anfragen werden
gesendet. Nach dem erfolgreichem Senden werden alle Clients beendet.
In der Setup Void wird die Verbindung zu den Sensoren hergestellt
und der I2C Bus wird initialisiert.
Innerhalb der ausgelagerten Funktion „Sensoren_lesen“ werden alle
Sensoren ausgelesen und deren Werte in den entsprechenden Variablen
gespeichert
In der Main wird die Funktion
„Sensoren_lesen“ aufgerufen. Anschließend wird über die Funktion
„serielle_ausgabe“ eine Ausgabe aller erfassten Sensorwerte auf dem
seriellen Monitor in der Arduino IDE erzeugt. Über den Onboard
„BOOT“ Knopf des ESP32 können nun die Sensordaten über den Webserver
an die MySQL-Datenbank weitergegeben werden. Anstelle des Boot
Knopfes können im späteren Verlauf auch andere Trigger Methoden
verwendet werden. So könnte zum Beispiel alle 5 min ein Wert
aufgenommen werden.
MySQL und Exel
Ein Vorteil einer
MySQL-Datenbank ist unter anderem, dass die erfassten Daten schnell
in einer Exceltabelle aufbereitet werden können. Dies wurde für
dieses Projekt beispielhaft durchgeführt. Zu demonstrativen Zwecken
wurde die erstellte Datenbank mit Dummy Werten versehen, da zum
Zeitpunkt der Erstellung keine realen Sensordaten vorlagen.