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

12/2018
Coole Projekte

Diese Ausgabe als PDF kaufen

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

Stellenmarkt

Neuigkeiten

  • Bytes und Beats

    In Sonic Pi können Sie mit wenigen Codezeilen Klänge manipulieren, Beats zusammenstellen und ganze Songs komponieren.

  • Klein, aber fein

  • Trick or treat

    Das traditionelle RPG-Gruselkabinett glänzt dieses Jahr mit einer innovativen Umsetzung mittels Pneumatik und Elektropneumatik sowie ST-Programmierung.

  • Unter Kontrolle

    Traditionell stellen wir alljährlich ein selbst gebautes Halloween-Gespenst vor. Die pneumatischen und elektronischen Grundlagen erklärt dieser Artikel.

  • Go Pi Go!

    Der Bausatz GoPiGo3 liefert Bauteile und Software für ein kleines Roboterauto. Zusammen mit einem RasPi als Gehirn programmieren Sie den Roboter per Mausklick.

  • Handlicher Helfer

    Während die Folien der Präsentation durchlaufen, liefert ein kleiner Dokumentenserver auf Basis des GL-AR300M-ext zusätzliche Informationen aus.

  • Wiederverwertet

    Mithilfe eines einfachen Python-Programms recyceln Sie ein ausgedientes Smartphone als drahtlos angebundenes RasPi-Display.

  • Herzenssache

    Steigt beim Krimi der Herzschlag bedrohlich an? Mit einem Pulsmesser in Eigenbau ermitteln Sie einfach und kostengünstig, ob der Herzschlag noch in verträglichen Bereichen liegt.

  • Fernbedient

    Mit der Fernbedienung den RasPi steuern. In der Theorie möglich, in der Praxis oft beschwerlich. Die Libcec liefert praktische Tools zur Fehlersuche.

  • Musikwürfel

    Mit Musikcube machen Sie Ihre eigene Sammlung fit fürs Streamen. Der terminalbasierte Audioplayer lässt sich Fernsteuern und bietet eine App für Android-Smartphones.