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

04/2019
TV & Multimedia

Diese Ausgabe als PDF kaufen

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

Stellenmarkt

Neuigkeiten

  • Finger weg

    Ein Temperatursensor verrät, ob Sie einen Gegenstand gefahrlos berühren dürfen. Beim Messen brauchen Sie dabei noch nicht einmal Kontakt zum Objekt.

  • Aus einer Hand

    Um einen Mikrocontroller zu programmieren, genügt ein Raspberry Pi. Wir zeigen, was Sie dazu noch benötigen.

  • Im Gleichtakt

    Synchronisierte Live-Loops und selbst erstellte Funktionen helfen dabei, Sonic Pi wie ein Live-Instrument zu spielen.

  • Mach mal

    Das Ftduino-Modul schlägt die Brücke zu Fischertechnik und ermöglicht es unter anderem, einen Drei-Achsen-Roboter anzusteuern.

  • Eleganter Diener

    Jeden Morgen dieselben Handgriffe, um zu sehen, ob die S-Bahn fährt und wie das Wetter wird? Ein cleverer Infoscreen auf RasPi-Basis automatisiert den Vorgang.

  • Bienenflüsterer

    Bienenzüchter, die ihre Völker besser kennenlernen möchten, müssen die fleißigen Insekten nicht pausenlos stören. Mit einem Raspberry Pi und verschiedenen Sensoren überwachen sie Temperatur, Luftfeuchtigkeit und bald auch das Gewicht des Bienenstocks.

  • Beerige Musik

    Für echten Hi-Fi-Sound braucht es mehr als einen kleinen Bluetooth-Brüllwürfel. Mit Volumio und einem Raspberry Pi rüsten Sie Ihre klassische Hi-Fi-Anlage mit smarten Funktionen auf.

  • Ton ab!

    Auf den ersten Blick erscheint der RasPi zu schwachbrüstig für den Betrieb leistungshungriger DAW-Software. Doch der Schein trügt.

  • Himbeer-TV

    Der DVB TV µHAT rüstet den Raspberry Pi mit einem DVB-T/T2-Tuner auf. Die deutsche TV-Landschaft schränkt dessen Möglichkeiten allerdings ein.

  • Git à la RasPi

    Mit wenigen Handgriffen zum Git-Hoster: Die dezentrale Arbeitsweise von Git erleichtert in Kombination mit der Netzwerkfähigkeit des RasPi das Verwalten von Quellcode.