Aus Raspberry Pi Geek 05/2015

Eigene Wetterstation mit Online-Daten auf einem RasPi aufsetzen

© Brian Jackson, 123RF

Woher der Wind weht

Martin Mohr

Das Thema Wetter zieht manch verfahrenes Gespräch aus der Sackgasse. Dank aktueller Daten auf einem RasPi glänzen Sie nicht nur mit souveräner Gesprächsführung, sondern zusätzlich mit soliden Fakten.

Der Raspberry Pi eignet sich mit seiner GPIO-Schnittstelle hervorragend, um Sensoren aller Art auszulesen und so – unter anderem – Informationen über das Wetter zu sammeln. Ein komplett anderer Ansatz besteht darin, die Daten über das Internet zu beziehen und entsprechend aufzubereiten. Um die GPIO nicht vollkommen arbeitslos zu machen, übernimmt sie in diesem Szenario die Aufgabe, die Daten über ein LC-Display von Nokia auszugeben, das günstig zu haben ist.

Dieses Projekt basiert auf den Daten der Online-Plattform Wetter.com. Die API der Webseite liefert die Daten in einem XML-Format aus. Als Programmiersprache kommt Java zum Einsatz. Jeder, der schon einmal mit Java auf dem RasPi experimentiert hat, weiß, wie träge es auf dieser Plattform läuft. Aus diesem Grund kommt für das Projekt ein Raspberry Pi 2 zum Einsatz. Er verfügt über ausreichend CPU-Leistung, um diese Aufgabe zu stemmen.

Java installieren

Um die GPIO mit Java anzusteuern, verwenden Sie die Bibliothek des Pi4j-Projekts [1]. Damit diese fehlerfrei arbeitet, sind noch einige Vorarbeiten nötig. Dazu zählt, die Wiring-Pi-Bibliothek zu installieren. Falls Sie diese noch nicht auf dem Mini-PC eingerichtet haben, folgen Sie dazu den Anweisungen im Kasten “Wiring Pi installieren”.

Wiring Pi installieren

Die Bibliothek Wiring Pi ermöglicht den einfachen Zugriff auf die GPIO-Schnittstelle des RasPi. Gordon Henderson hat die Software entwickelt und pflegt sie derzeit weiter. Sie stellt einfache Kommandos und eine C-API bereit, um die I/O-Ports auszulesen und zu beschreiben. Daneben bringt sie unter anderem Treiber für den I2C-Bus mit. Die Installation erledigen Sie mit den Schritten aus Listing 1. Nach dem Build, der einige Zeit in Anspruch nimmt, testen Sie mit dem Befehl gpio readall, ob die Installation erfolgreich war. Listing 2 zeigt das Ergebnis auf dem Testsystem. Für weiterführende Informationen zu Wiring Pi lohnt ein Blick auf die Homepage des Projekts [2].

Listing 1

 

$ sudo apt-get update
$ sudo apt-get upgrade
$ git clone git://git.drogon.net/wiringPi
$ cd wiringPi
$ ./build

Listing 2

 

$ gpio readall
+-----+-----+---------+------+---+---Pi 2---+---+------+---------+-----+-----+
| BCM | wPi |   Name  | Mode | V | Physical | V | Mode | Name    | wPi | BCM |
+-----+-----+---------+------+---+----++----+---+------+---------+-----+-----+
|     |     |    3.3v |      |   |  1 || 2  |   |      | 5v      |     |     |
|   2 |   8 |   SDA.1 |   IN | 1 |  3 || 4  |   |      | 5V      |     |     |
|   3 |   9 |   SCL.1 |   IN | 1 |  5 || 6  |   |      | 0v      |     |     |
|   4 |   7 | GPIO. 7 |   IN | 1 |  7 || 8  | 1 | ALT0 | TxD     | 15  | 14  |
|     |     |      0v |      |   |  9 || 10 | 1 | ALT0 | RxD     | 16  | 15  |
|  17 |   0 | GPIO. 0 |   IN | 0 | 11 || 12 | 0 | IN   | GPIO. 1 | 1   | 18  |
|  27 |   2 | GPIO. 2 |   IN | 0 | 13 || 14 |   |      | 0v      |     |     |
|  22 |   3 | GPIO. 3 |   IN | 0 | 15 || 16 | 0 | IN   | GPIO. 4 | 4   | 23  |
|     |     |    3.3v |      |   | 17 || 18 | 0 | IN   | GPIO. 5 | 5   | 24  |
|  10 |  12 |    MOSI |   IN | 0 | 19 || 20 |   |      | 0v      |     |     |
|   9 |  13 |    MISO |   IN | 0 | 21 || 22 | 0 | IN   | GPIO. 6 | 6   | 25  |
|  11 |  14 |    SCLK |   IN | 0 | 23 || 24 | 1 | IN   | CE0     | 10  | 8   |
|     |     |      0v |      |   | 25 || 26 | 1 | IN   | CE1     | 11  | 7   |
|   0 |  30 |   SDA.0 |   IN | 1 | 27 || 28 | 1 | IN   | SCL.0   | 31  | 1   |
|   5 |  21 | GPIO.21 |   IN | 1 | 29 || 30 |   |      | 0v      |     |     |
|   6 |  22 | GPIO.22 |   IN | 1 | 31 || 32 | 0 | IN   | GPIO.26 | 26  | 12  |
|  13 |  23 | GPIO.23 |   IN | 0 | 33 || 34 |   |      | 0v      |     |     |
|  19 |  24 | GPIO.24 |   IN | 0 | 35 || 36 | 0 | IN   | GPIO.27 | 27  | 16  |
|  26 |  25 | GPIO.25 |   IN | 0 | 37 || 38 | 0 | IN   | GPIO.28 | 28  | 20  |
|     |     |      0v |      |   | 39 || 40 | 0 | IN   | GPIO.29 | 29  | 21  |
+-----+-----+---------+------+---+----++----+---+------+---------+-----+-----+
| BCM | wPi |   Name  | Mode | V | Physical | V | Mode | Name    | wPi | BCM |
+-----+-----+---------+------+---+---Pi 2---+---+------+---------+-----+-----+

Liegt Wiring Pi RasPi schon vor, starten Sie mit der Installation des aktuellen Java Development Kits (JDK) von Oracle [3]. Mittels SFTP oder SCP übertragen Sie die Software auf den Raspberry Pi. Falls Sie ein Windows-System verwenden, bietet es sich an, diesen Schritt mit WinSCP [4] zu erledigen.

Die folgenden Installationsschritte erledigen Sie dann auf dem Raspberry Pi (Listing 3). Als Erstes legen Sie ein neues Verzeichnis an (Zeile 1) – der Unix Filesystem Hierarchy Standard (FHS) sieht für Zusatzsoftware das Verzeichnis /opt vor. Daher speichern Sie das JDK dort ab, indem Sie es nach /opt/java entpacken (Zeile 2 und 3).

Listing 3

 

$ sudo mkdir -p -v /opt/java
$ gunzip jdk-8u33-linux-arm-vfp-hflt.tar.gz
$ sudo tar -xvf jdk-8u33-linux-arm-vfp-hflt.tar -C /opt/java/
$ sudo update-alternatives --install "/usr/bin/java" "java" "/opt/java/jdk1.8.0_33/bin/java" 1
$ sudo update-alternatives --set java /opt/java/jdk1.8.0_33/bin/java
$ echo 'export JAVA_HOME="/opt/java/jdk1.8.0_33/bin"' >> ~/.bashrc
$ source ~/.bashrc

Jetzt teilen Sie dem System noch mit, wo es die neue Java-Version findet (Zeile 4). Zu guter Letzt legen Sie fest, dass das System ab jetzt diese Java-Version als Standard verwendet (Zeile 5). Da einige Programme auf die Umgebungsvariable JAVA_HOME angewiesen sind, setzen Sie diese sicherheitshalber gleich mit (Zeile 6). Um das systemweit zu erledigen, statt nur für den aktuellen Benutzer, tragen Sie sie als root in /etc/environment ein.

Beim nächsten Login des Benutzers pi ist die Variable gesetzt. Um sie sofort zu setzen, lesen Sie die Daten der ~/.bashrc von Hand ein (Zeile 7). Anschließend testen Sie, ob die Installation geklappt hat (Listing 4).

Listing 4

 

$ java -version
java version "1.8.0_33"
Java(TM) SE Runtime Environment (build 1.8.0_33-b05)
Java HotSpot(TM) Client VM (build 25.33-b05, mixed mode)
$ javac -version
javac 1.8.0

Nun geht es an die Installation der Pi4j-Bibliotheken. Der schnellste Weg besteht darin, die Software direkt aus dem Internet zu laden (Listing 5, Zeile 1). Die Entwickler haben, um Ihnen das Leben etwas leichter zu machen, ein kleines Skript geschrieben, das den Klassenpfad richtig setzt. Das ermöglicht, schnell und einfach kleine Java-Programme zu kompilieren und zu testen. Mit dem Befehl aus Zeile 2 kompilieren Sie ein Java-Programm. Meldet das Tool keine Fehler, hat es eine gleichnamige Class-Datei im aktuellen Verzeichnis erstellt. Diese Java-Klasse führen Sie dann mit dem Befehl aus Zeile 3 aus.

Listing 5

 

$ curl -s get.pi4j.com | sudo bash
$ pi4j -c Datei.java
$ pi4j -r Datei.class
DIESEN ARTIKEL ALS PDF KAUFEN
EXPRESS-KAUF ALS PDFUmfang: 6 HeftseitenPreis €0,99
(inkl. 19% MwSt.)
RASPBERRY PI GEEK KAUFEN
EINZELNE AUSGABE Print-Ausgaben Digitale Ausgaben
ABONNEMENTS Print-Abos Digitales Abo
TABLET & SMARTPHONE APPS Raspberry Pi Geek bei Google Play Readly Logo
Nach oben