MySQL aufsetzen
MySQL zählt zu den beliebtesten und am weitesten verbreiteten Open-Source-Datenbanken und eignet sich für kleine bis mittlere Projekte. Unter Raspbian installieren Sie sie mitttels folgender Kommandos:
$ sudo apt-get install mysql-server
Bei der Installation fragt die Software nach dem Root-Passwort für die Datenbank, das Sie sich gut merken müssen. Ansonsten verläuft die Installation komplett ohne Interaktion.
Um den Erfolg der Installation zu testen, nutzen Sie die Befehle aus Listing 4. Damit verbinden Sie sich mit der Datenbank und überprüfen, ob die Installation funktionsfähig ist.
Listing 4
$ mysql -uroot -p Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 44 Server version: 5.5.40-0+wheezy1 (Debian) Copyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | mysql | | performance_schema | +--------------------+ 3 rows in set (0.01 sec)
Auf dem frisch installierten MySQL-Server legen Sie eine neue Datenbank an, in der nur eine Tabelle existiert. Deren Struktur zeigt die Tabelle “Temperatur”. Das Skript createDB.sql (Listing 5), das Sie auf der DVD finden, legt eine entsprechende Tabelle für Sie an, sobald Sie es im Terminal aufrufen:
$ mysql -u root -p < createDB.sql
Temperatur
|
Name |
Typ |
|---|---|
|
|
|
|
|
|
Listing 5
create database Temperatur; use Temperatur; create table Temperatur (ts timestamp, temp int); GRANT ALL ON Temperatur.* TO 'user'@'localhost' IDENTIFIED BY 'pass'; FLUSH PRIVILEGES;
Nachdem Sie alle nötigen Komponenten auf dem RasPi installiert haben, kopieren Sie den REST-Server (Listing 6) auf den Raspberry Pi und starten ihn. Sie brauchen dazu die kostenfreie Community-Version aus dem IntelliJ-Idea-Projekt [6]. Es handelt sich um ein Maven-Projekt (siehe Kasten “Maven”), das Sie mit den üblichen Java-Methoden bauen.
Listing 6
import com.sun.jersey.api.container.httpserver.HttpServerFactory;
import com.sun.net.httpserver.HttpServer;
import javax.ws.rs.*;
import javax.ws.rs.core.MediaType;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;
@Path( "setTemp" )
public class SetTemp {
static final String JDBC_DRIVER = "com.mysql.jdbc.Driver";
static final String DB_URL = "jdbc:mysql://localhost/Temperatur";
static final String USER = "user";
static final String PASS = "pass";
Connection conn = null;
Statement stmt = null;
@GET @Produces( MediaType.TEXT_PLAIN )
public String setTemp() {
System.out.println("normal");
return "Saved";
}
@GET @Produces( MediaType.TEXT_PLAIN )
@Path( "temp/{temp}" )
public String setTemp( @PathParam("temp") String temp) {
try {
Class.forName(JDBC_DRIVER);
conn = DriverManager.getConnection(DB_URL, USER, PASS);
stmt = conn.createStatement();
String sql;
sql = "INSERT INTO Temperatur values (now()," + temp + ")";
stmt.executeUpdate(sql);
System.out.println(temp);
stmt.close();
conn.close();
}
catch (Exception e) {
e.printStackTrace();
}
return "Saved: " + temp;
}
public static void main(String[] args) throws Exception {
HttpServer server = HttpServerFactory.create( "http://localhost:8080/rest" );
server.start();
System.out.println("Zum Beenden bitte [Eingabe] drücken");
System.in.read();
server.stop( 0 );
}
}
Maven
Das Framework Maven hilft Ihnen dabei, Java-Projekte standardisiert zu bauen. Halten Sie sich an die vorgegebenen Konventionen, so erstellen Sie damit ohne viel Aufwand Software und verwalten diese. Die Konventionen beziehen sich überwiegend auf die Struktur des Projekts, also Verzeichnisse oder Namen.
Zentraler Bestandteil von Maven ist die Datei pom.xml (“Project Object Model”). Darin legen Sie fest, welche Abhängigkeiten zu anderen Komponenten das Projekt aufweist. Diese haben wiederum Abhängigkeiten zu anderen Projekten, und so entsteht ein Baum von Projekten, die das Programm beim ersten Start alle lädt. Zum Glück speichert Maven alle diese Komponenten in einem lokalen Repository, damit der Build-Prozess nach dem ersten Mal schneller läuft.
Passenderweise bedeutet der ursprünglich aus dem Jiddischen stammende Name Maven “Sammler des Wissens”, denn genau das macht die Software: Sie sammelt alle Abhängigkeiten der Pakete ein.
Sie kopieren einfach aus dem Ordner target/ die Datei TempRest-1.0-SNAPSHOT-jar-with-dependencies.jar auf den RasPi. Dort starten Sie den Server mit dem folgenden Befehl:
$ java -jar TempRest-1.0-SNAPSHOT-jar-with-dependencies.jar
Sobald ein Request vom ESP8266 zum Server gelangt, speichert dieser die Daten in der Datenbank. Es gibt für den Google-Browser Chrome eine App, die beim Debuggen von REST-Services gute Dienste leistet, die Advanced Rest Client Application (Abbildung 5).

Abbildung 5: Die Advanced Rest Client Application für den Webbrowser Chrome hilft Ihnen dabei, die Interaktionen von REST-Services zu untersuchen.
Auswertung
Es gibt sicher viele Dinge, die sich mit den Messwerten aus einer Datenbank anstellen ließen. Alle gängigen Office-Programme verfügen über ein Datenbank-Modul. Damit ziehen Sie problemlos die Messwerte in eine Tabellenkalkulation und erstellen dort mit wenigen Mausklicks ein Diagramm.
Abbildung 6 zeigt ein Beispiel mit den Daten, die das Testsystem des Autors erfasst hat. Die Sprünge in den Werten rühren daher, dass der Sensor sich in einem Gewächshaus befand. Bei entsprechender Sonneneinstrahlung herrschen dort selbst im Winter sehr hohe Temperaturen.
Fazit
Das Projekt zeigt, wie flexibel das Einsatzgebiet des ESP8266 ist. Durch die Funktionen, die ein An- und Abschalten auf Zuruf ermöglichen, macht der Betrieb mit einer Batterie keine Probleme. Eine kleine Solarzelle käme ebenfalls als Energiequelle für den Baustein infrage. Sie müssen die Messwerte keineswegs zwingend per REST übertragen. Als Server wäre der Einsatz eines zweiten ESP8266 möglich, der über ein Display die Messwerte anzeigt. Diese liegen momentan nur in der Datenbank, und auch von dort gäbe es mehrere Möglichkeiten, sie auszuwerten und weiterzuverwenden. Sie sehen: Der Fantasie sind hier keine Grenzen gesetzt.
Der Autor
Martin Mohr erblickte im Zeitalter der Magnet-Ringkern-Speicher und Hebdrehwähler das Licht der Welt. Schon in früher Jugend entwickelte er eine Vorliebe für alles, was blinkt. Nach einem Informatikstudium entwickelte er überwiegend Java-Applikationen; der RasPi erweckte die alte Liebe zur Elektronik wieder.






