Arduino: Sensordaten Twittern

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:

NameFormatExtras
 id ganze Zahl Auto Increment wenn ein Insert Statement mit NULL ausgeführt wird.
timestampUNIX Timestamp 
valueGleitkommazahlFormat 5 Stellen vor dem Komma, 2 Stellen nach dem Komma.
descriptionVARCHARmaximal 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.

Kommentar hinterlassen

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