Aus Raspberry Pi Geek 05/2013

Mit dem Raspberry Pi eine Wetterstation anzapfen

© Sergey Drozdov, Fotolia

Alle Wetter

Marcus Nasarek

Einige Wetterstationen liefern ihre Messdaten per USB an einen angeschlossenen Rechner. Mit dem Raspberry Pi lassen sich so die Daten auswerten und per Web-Anwendung ins Netz stellen.

Meiner neu angeschafften Wetterstation TFA Nexus [1] (Abbildung 1) lagen nicht nur etliche Sensoren für Wind, Regen und Außentemperatur bei, sondern auch ein USB-Kabel und eine Auswerte-Software. Letztere wanderte aber direkt wieder in den Karton: Zum einen setzte sie Windows voraus, zum anderen war es eine reine Desktop-Anwendung. Ich wollte die Messdaten aber aufzeichnen und möglichst auch mit dem Handy von unterwegs bewundern.

Abbildung 1: Die Wetterstation TFA Nexus erfasst unter anderem Wind, Regen sowie Außentemperatur und reicht die Daten via USB weiter. (Bild: TFA-Dostmann)

Abbildung 1: Die Wetterstation TFA Nexus erfasst unter anderem Wind, Regen sowie Außentemperatur und reicht die Daten via USB weiter. (Bild: TFA-Dostmann)

So fiel mein zweiter Blick dann auf meinen Raspberry Pi. Der gab bisher mit einem kleinen Lautsprecher ein Zwergen-Mediencenter ab. Stattdessen, so mein Gedanke, könnte er doch die Messdaten aus der Wetterstation auslesen. Der Strombedarf wäre gegenüber einem PC verschwindend gering, obendrein läuft der RasPi lautlos. Gretchenfrage: Wie kommt man per USB an die Daten, wenn der Wetterstation nur ein Windows-Programm beiliegt?

Ein kleines C-Programm

Sebastian John hat das kleine Programm Te923tool [2] geschrieben, das viele Wetterstationen auslesen kann, die auf Hardware des Herstellers Hideki basieren. Mit ein paar Abstrichen funktioniert es auch für meine TFA Nexus. Dafür gilt es allerdings den Quellcode des Programms auf dem Raspberry Pi zu kompilieren. Damit das klappt, müssen die Entwicklerwerkzeuge gcc, make und libusb-dev installiert sein.

Nach Auspacken des Programm-Archivs sollte der Aufruf von make dann das Programm te923con liefern. Ein Test mit dem Aufruf te923con -h liefert – neben der Erkenntnis, ob das Programm läuft – eine ausführliche Hilfe zu dem Programm. Die wiederum verrät, dass ein Aufruf ohne Parameter die Messdaten ausgibt (Listing 1).

Listing 1

 

$ sudo ./te923con
1363468817:20.40:50:i:i:i:i:i:i:i:i:-1.90:60:1008.0:i:5:0:14:0.4:0.6:-3.8:115

Das vorangestellte sudo ist nötig, da der Zugriff auf den USB-Port Root-Rechte benötigt. Was die einzelnen Werte zwischen den Doppelpunkten bedeuten, erklärt die Hilfe. Ein “i” steht demnach für Werte, die das Programm nicht zuweisen konnte. Das erste Feld jedoch erklärt die Hilfe nicht: Hier handelt es sich umt die Unix-Zeit, also die Sekunden, die seit dem 1.1.1970 vergangen sind. Eine Aufruf von date -d @1363468817 +%c im Terminal macht daraus das lesbare Datum Sam 16 Mär 2013 22:20:17 CET.

Ruby installieren

Ruby bietet eine perfekte Grundlage, um die Messdaten zu verarbeiten und einen Webserver damit zu füttern. Zu den zahlreichen Bibliotheken, die man über die Ruby-eigene Paketverwaltung RubyGem nachinstallieren kann, zählen auch die Datenbankschnittstelle ActiveRecord sowie der Webserver Sinatra. Die beiden Bibliotheken machen später den Kern der Anwendung aus. Ruby lässt sich auf dem RasPi zwar aus den Debian-Paketquellen installieren, aktueller und einfacher zu verwalten ist es jedoch mit der Ruby-Versionsverwaltung Rbenv [3].

Um Rbenv aus dem Quellcode-Verzeichnis gitHub.com zu installieren, müssen Sie zunächst das Paket git einrichten. Einige Ruby-Bibliotheken werden zudem vor der Installation auf dem Zielsystem kompiliert. Um daher später weitere Bibliotheken installieren zu können, gilt es noch die Bibliotheken zlib1g-dev, libsqlite3-dev, libssl-dev und libreadline6-dev aus den Debian-Paketquellen nachzuziehen.

Zur Installation von Rbenv folgen Sie den Anweisungen auf der Webseite des Programms. Anschließend installiert der Aufruf rbenv install 2.0.0-p0 die aktuelle Ruby-Version – auf dem RasPi dauert das einen Augenblick. Bevor Sie Ruby dann verwenden können, legen Sie per rbenv global 2.0.0-p0 erst einmal diese Version als Standard fest. Ein Test mit ruby -v zeigt, ob die Installation geklappt hat.

Webanwendung mit Sinatra

Die Ruby-Bibliotheken verwalten Sie mittels RubyGem. Um Web-Anwendungen mit Sinatra zu programmieren, richten Sie mit dem Kommando gem install sinatra das Sinatra-gem ein. Listing 2 zeigt eine vollwertige Web-Anwendung, die Sie nach dem Start mit ruby webapp.rb im Browser unter der Adresse http://localhost:4567/ aufrufen.

Listing 2

 

require 'sinatra'
puts Sinatra::VERSION
get '/' do
  'Hello world!'
end

Datenbank befüllen

Jetzt müssen Sie die Messdaten noch geeignet ablegen, wozu in der Regel eine Datenbank dient. Bei SQLite handelt es sich um eine solche, die für einfache Zwecke oft genügt und trotzdem SQL versteht. Sie richten das gute Stück aus dem Debian-Paket sqlite3 ein. Um es aus Ruby heraus zu verwenden, benötigen Sie zudem das Ruby-gem sqlite3 benötigt.

DIESEN ARTIKEL ALS PDF KAUFEN
EXPRESS-KAUF ALS PDFUmfang: 5 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