Meilenstein 3 – Sensordaten in einer Datenbank (MySQL) speichern
US 3.1 – Erstellen der Datenbanktabelle
Aufgabe: Für die spätere Ablage der Daten wird eine Tabelle benötigt welche folgende Spalten besitzt.
- ID – fortlaufende Nummerierung der Datensätze
- VALUE – Wert der Sensordaten als Gleitkommazahl
- DESCRIPTION – Beschreibung des Sensors als Zeichenkette
- TIMESTAMP – Zeitpunkt der Aufnahme der Daten als UNIX Timestamp
Lösung: Es wird eine MySQL Datenbank angelegt und die Tabelle “SensorDaten” erzeugt.
Die Tabelle erhält folgenden Aufbau:
Name | Format | Extras |
---|---|---|
id | ganze Zahl | Auto Increment wenn ein Insert Statement mit NULL ausgeführt wird. |
timestamp | UNIX Timestamp | |
value | Gleitkommazahl | Format 5 Stellen vor dem Komma, 2 Stellen nach dem Komma. |
description | VARCHAR | maximal 255 Zeichen zulässig |
US 3.1.1 SQL Statement zum erzeugen der Tabelle
CREATE TABLE `SensorDaten` ( `id` int(11) NOT NULL, `timestamp` int(10) NOT NULL, `value` decimal(5,2) NOT NULL, `description` varchar(255) NOT NULL ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
US 3.2 – Schnittstelle für die Annahme der Daten über HTTP GET
Aufgabe: Es soll eine Schnittstelle geschaffen werden, welche beliebig viele Daten über HTTP GET empfangen kann.
Die möglichen Parameter sollen sein:
- sensor_value – der Wert des Sensors als Gleitkommazahl (zbsp. 3.5)
- sensor_desc – die Beschreibung des Sensors als Zeichenkette (zbsp. Temperatur)
- sensor_timestamp – der Zeitpunkt der aufnahme der Sensordaten (zbsp. 1492453070)
Der Zeitstempel (sensor_timestamp) wird pro Anfrage nur einmal mitgesendet. Die restlichen Parameter werden mit einer fortlaufenden Zahl (beginnend bei 0) benannt.
Die Daten werden über die URL wie folgt übergeben:
http://sensor.draeger-it.blog/sensor.php?sensor_desc0=Temperatur&sensor_value0=25.5&sensor_timestamp=1492453070
Lösung:
Es wird die Datei “sensor.php” erstellt und per FTP auf dem Server abgelegt. Folgender Code wird implementiert.
$data = array(); $counter = 0; while (isset($_GET["sensor_desc".$counter]) && isset($_GET["sensor_value".$counter])): $descLbl = "sensor_desc"; $valueLbl = "sensor_value"; $timestampLbl = "sensor_timestamp"; $sensorDesc = $_GET["sensor_desc".$counter]; $sensorValue = $_GET["sensor_value".$counter]; $timestamp = $_GET["sensor_timestamp"]; array_push($data,array($descLbl => $sensorDesc , $valueLbl => $sensorValue, $timestampLbl => $timestamp)); $counter++; endwhile;
In diesem CodeSschnipsel ist die Schleife zu erkennen, wo die Parameter welche per HTTP GET übergeben wurde ausgewertet werden. Es wird dazu ein Zähler am Ende um eins erhöht und dann die Schleife erneut gestartet. Wenn der Parameter “sensor_desc”+Zähler UND “sensor_value”+ Zähler existiert, dann werden diese in ein Array gespeichert, andernfalls wird die Schleife abgebrochen und mit dem nächsten Code weiterverfahren.