Eigene Wetterstation mit Online-Daten auf einem RasPi aufsetzen

© Brian Jackson, 123RF

Woher der Wind weht

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

TIPP

Mit pi4j --? gibt das Programm einen Überblick über die Optionen und zeigt einige Aufrufe.

Ausflug in die IDE-Welt

Beim Entwickeln von Software führen stets mehrere Wege zum Ziel. Das fängt schon bei der Entwicklungsumgebung (Integrated Development Environment, IDE) an. Für kleinere Projekte genügen Editoren wie Vim oder Nano auf der Konsole. Fallen die Projekte umfangreicher aus, wird das Arbeiten damit jedoch schnell unübersichtlich.

Das Projekt im Beispiel reicht in den Bereich der etwas komplexeren Programme hinein. Hier ist es sinnvoll, eine echte Java-IDE wie Eclipse oder Intellij IDEA zu verwenden. Beide stehen kostenfrei zur Verfügung; von Intellij IDEA gibt es zwar auch eine kostenpflichtige Version, aber die ist für dieses Projekt nicht nötig.

Beide Programme haben allerdings einen gravierenden Nachteil: Sie arbeiten viel zu langsam, wenn Sie sie direkt auf dem RasPi starten. Ein Weg aus diesem Dilemma: Sie entwickeln auf einem leistungsfähigeren PC und übertragen die Dateien von dort aus mithilfe eines Versionskontrollsystems wie Git oder schlicht via Rsync auf den Mini-PC.

Diesen Artikel als PDF kaufen

Express-Kauf als PDF

Umfang: 6 Heftseiten

Preis € 0,99
(inkl. 19% MwSt.)

Raspberry Pi Geek kaufen

Einzelne Ausgabe
 
Abonnements
 
TABLET & SMARTPHONE APPS
Bald erhältlich
Get it on Google Play

Deutschland

Ähnliche Artikel

Aktuelle Ausgabe

10/2019
Raspberry Pi 4B

Diese Ausgabe als PDF kaufen

Preis € 9,99
(inkl. 19% MwSt.)

Stellenmarkt

Neuigkeiten

  • Sonnige Zeiten

    UV-Strahlung ist für das menschliche Auge unsichtbar, was sie umso gefährlicher macht. Die Höhe der tatsächlichen Belastung verrät Ihnen das Selbstbauprojekt UV-Sensor.

  • Gut verpackt

    Für das Ansteuern kleiner Displays gibt es keine Programme von der Stange. Mit Python und einer Pygame-Bibliothek erstellen Sie trotzdem im Handumdrehen Anwendungen.

  • Macro-Mini-Micro-Bit

    Was dem Raspberry Pi für die Computerwelt gelungen ist, versucht der BBC Micro:bit für Mikrocontroller zu wiederholen. Das für Schüler entwickelte Kit hilft beim Einstieg in die hardwarenahe Programmierung.

  • Vorhang auf

    Mit dem modernen Video-Codec HEVC (H.265) erstellte Filme spielen bisherige RasPi-Modelle oft nur ruckelnd ab. Wir testen, ob der neue Raspberry Pi 4B das besser kann.

  • Überraschung!

    Eine optimierte Architektur und mehr RAM beschleunigen den RasPi 4B deutlich. Wir prüfen, wie gut sich der Neuling als Desktop-Rechner schlägt.

  • Durchgestartet

    Ein Stresstest zeigt, wie sich der neue Raspberry Pi 4 Modell B gegenüber den älteren Modellen abhebt.

  • Vierte Generation

    Eine schnellere CPU, USB 3.0 und Gigabit-Ethernet sind nur die Highlights des Raspberry Pi 4B: Das Board bringt viele weitere Neuerungen mit.

  • Tiefenmesser

    Um die Pumpe in einem Brunnenschacht möglichst genau zu positionieren, brauchen Sie dessen Tiefe. Die ermitteln Sie mithilfe eines präzisen Messgeräts aus einem Luftdrucksensor und einem Mikrocontroller.

  • Faktencheck

    Das via DVB-T2 ausgestrahlte Digital-TV liefert Bilder in HD-Qualität. Der dabei eingesetzte H.265-Standard überfordert allerdings kleine Mini-Rechner wie den Raspberry Pi – oder geht es doch?

  • Zugriff von außen

    React Native erlaubt es, Apps mit wenigen Zeilen Code zu programmieren. Mit einem entsprechenden Server sprechen Sie so den RasPi vom Smartphone aus an.