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

02/2019
Neue Energien

Diese Ausgabe als PDF kaufen

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

Stellenmarkt

Neuigkeiten

  • Scheibchenweise

    Zu den Stärken von Sonic Pi gehört es, mit wenigen Zeilen Code Samples dynamisch auszuwählen und zu zerlegen.

  • Unter Strom

    Für einen kleinen Spannungsmesser wie den INA3221 gibt es viele Einsatzmöglichkeiten. Wir zeigen, wie Sie den flexiblen Baustein richtig verdrahten.

  • Vermittlungsstelle

    Fischertechnik-Modelle bieten sich zum Fernsteuern an. Mit dem Ftduino schlagen Sie die Brücke zwischen dem RasPi und dem Technik-Spielzeug.

  • Durchgeschlängelt

    Mit den M0-Boards steigen Sie unkompliziert in die Welt der Mikrocontroller ein – ganz ohne C-Kenntnisse.

  • Gesiebt und gefiltert

    Filter und Werbeblocker einzurichten ist besonders auf Smartphones aufwendig. Den eBlocker hingegen schließen Sie einfach nur an Ihren Router an.

  • Es werde Licht

    Wollen Sie bei beginnender Dämmerung nicht ständig die Helligkeit der heimischen Beleuchtung nachregeln, überlassen Sie das einfach einem RasPi – der macht es automatisch.

  • Energiekontrolle

    Der Gesetzgeber erschwert das Direktvermarkten von Strom durch technische Hürden: So muss sich die Einspeisung etwa aus der Ferne abschalten lassen. Der RasPi löst das Problem.

  • H<->2<->-Power

    Gilt es, Energie aus einer regenerativen Quelle zu speichern, erweist sich die Kombi aus einer Brennstoffzelle und dem RasPi als ideale Lösung.

  • Kleine Wolke

    Lokale Cloud-Lösungen im Heimnetz finden immer mehr Nutzer. Mit dem RasPi und Seafile haben Sie eine Lösung zur Hand, die selbst professionellen Ansprüchen genügt.

  • Planvoll verdrahtet

    Die Leiterplattendesign-Software KiCad leistet trotz einer etwas umständlichen Bedienung auch Hobbybastlern gute Dienste.