Idee und Geschichte

Eigentlich interessiere ich mich gar nicht so sehr fürs Wetter aber ich fand es schon immer spannend, den Weg der Informationen von Analog zu Digital und dann weiter ins große weite Netz zu verfolgen.
Die Grundlagen dazu bekam ich im Informationstechnik Studium, wo ich den Umgang mit Hard- und Software vertiefte. So entstand auch schnell die erste Mikrocontroller Schaltung, die Temperaturen auslesen und auf einem Display anzeigen konnte. Das war für den Anfang nicht schlecht aber natürlich noch nicht so ganz was ich wollte. Meine erfassten Daten sollten irgendwann mal ins Internet gelangen und dort auch noch möglichst anschaulich dargestellt werden.
Deswegen ging es schon bald auf die Suche nach einer besseren Lösung für meine Idee. Ich stieß dabei im Internet auf ein sogenanntes NetIO Board, eine kleine Platine mit digitalen und analogen Anschlüssen, die per Netzwerkschnittstelle ausgelesen werden konnten. Somit hatte ich die Daten schon mal in meinem lokalen Netzwerk. Jetzt mussten sie nur noch ausgelesen werden und ab ins Internet.

cimg0482-geaendertUm möglichst unabhängig zu sein, wollte ich die ganz Station später mit ein paar Solarmodulen betreiben können. Dazu fehlte mir jetzt noch ein stromsparender PC, der meine Messwerte abfragen und ins Internet senden konnte.
Hier versuchte ich es zuerst mit einem kleinen PC mit einem Intel Atom Prozessor der sehr wenig Energie benötigt. Leider war das immer noch für meine acht 30x60cm großen Solarmodule zu viel Energie und ich musste nach einer Alternative suchen. Der SheevaPlug, einer der ersten mini Computer die zur Marktreife geführt wurden war genau das was ich suchte.

cimg0364Jetzt konnte ich endlich anfangen Software zu schreiben. Ich entschied mich dabei für ein Client – Server Konzept. Der Client sollte dabei auf dem SheevaPlug laufen, die Daten vom Sensorboard abholen und ins Internet an den Server senden. Dieser wiederum sollte die erfassten Daten entgegennehmen, abspeichern und bei Bedarf auch wieder ausgeben.
Widget AdminWidgetDa ich in der Programmiersprache JAVA sehr bewandert bin und es auch eine Schnittstelle zu dem NetIO Board gab, fing ich an die beiden Anwendungen aufzubauen. Mit der Zeit wuchsen beide Programme und die Daten flossen munter in eine Datenbank. Jetzt mussten die Daten natürlich noch angezeigt werden. Dazu schrieb ich ein kleines Plugin für meine schon bestehende Webseite, das immer die aktuellen Daten ausgeben sollte.
Schon bald kamen mehrere Sensoren hinzu was mich aber recht schnell vor 2 Probleme stellte. Das erste war, dass ich nur 4 analoge Eingänge hatte. Außerdem gab es Sensoren die man nicht einfach abfragen konnte. Diese Sensoren wurden nur dann aktiv wenn auch wirklich etwas passiert ist z.B. ein Regenmesser erfasst Regen und gibt einen Impuls.
img_0202Ein Regenmesser besteht aus einem Trichter in einer bestimmten Größe und einer Wippe an der auf jeder Seite gleichgroße Schalen befestigt sind. Fängt es jetzt an zu regnen, so wird das Wasser vom Trichter aufgefangen und in eine der beiden Schalen geleitet. Eine bestimmte Menge Wasser lässt jetzt die Wippe umschlagen. Dieses Umschlagen wird von einem Sensor erfasst und mittels eines elektrischen Impulses weiter gegeben.

Um diesen Impuls jetzt mit meiner Software erfassen zu können, musste ich in sehr kurzen Zeitabständen immer wieder diesen digitalen Anschluss abfragen, an dem der Regensensor angeschlossen war.
Dies war natürlich nicht praktikabel, schon gar nicht wenn noch weitere Sensoren dazu kommen sollten. Irgendwann gingen mir dann auch die analogen Anschlüsse aus und ich behalf mir mit selbstgebauten Umschaltern, die immer 2 Sensoren auf einen Anschluss schalten konnten. Dies ging natürlich auf die Genauigkeit der Daten.
Kurzum diese Lösung war nicht geeignet um weitere Stationen damit aufbauen zu können.

Wetterstation 2.0

Also suchte ich wieder nach einer Alternative zu meinem lieb gewonnenen NetIO. Bei der Suche viel meine Wahl auf Tinkerforge. Eine kleine Firma, die Hardwaremodule (Bricks und Bricklets) herstellt, die man per USB an den PC anschließen kann. Hierbei gefiel mir besonders, dass es schon viele Sensoren(Bricklets) gab, die ich ohne weitere Anpassungen übernehmen konnte. Hierzu gehörten Temperatur und Luftfeuchtigkeit Briklets. Später kam auch ein Luftdruck Bricklet und ein genauerer Temperatur Sensor hinzu. Außerdem konnten die Bricklets sich selbstständig melden wenn sich ein Wert geändert hatte. Das ließ die Datenflut ein bisschen schrumpfen, da wirklich nur noch dann Werte übertragen werden mussten wenn sich etwas geändert hatte. Natürlich half das auch bei der Realisierung des Regenmessers und später des Windgeschwidigkeitsanzeigers. Wird jetzt ein Impuls vom Regenmesser ausgegeben, so kann sich das Bricklet selbstständig bei der Software melden, die dieses Event dann weiter an den Server gibt.
Später kamen auch noch Erweiterungen (Master Extensions) von Tinkerforge dazu, die es ermöglichten direkt über das Netzwerk oder über WLAN mit den Sensoren zu komunizieren.
Da es hier auch eine Schnittstelle zu JAVA gab konnte ich meine Software recht schnell umbauen. Es waren auf der Serverseite einige größere Anpassungen im Bereich der Datenbank erforderlich, da jedes Bricklet eine eindeutige ID eingebrannt hat, die ich irgendwo ablegen musste.
Bildschirmfoto vom 2013-01-27 13:32:26Mit der Zeit wuchs die Software weiter und ich implementierte eine Schnittstelle zum Auslesen der Daten über die z.B. Diagramme mit Werten gefüllt werden können. Außerdem erstellte ich einen ServerManager. Eine kleine Webseite über die der Server gesteuert werden kann. Hierzu gehört hauptsächlich das anlegen und verwalten von Sensoren und Stationen. Außerdem kam noch eine Webseite hinzu. Das sogenannte WetterCenter auf der ich aktuelle Werte sowie historische Werte auswerte und in Diagrammen anzeige.

Das Wiki

Da man sich irgendwann einfach nicht mehr alle Feinheiten der Software merken kann habe ich auch ein Wiki geschrieben, welches ich ständig erweitere sobald ich etwas Neues erstelle. img_0436Nachdem die erste Station gut lief kam auch schnell eine zweite hinzu, die ich bei Bekannten in den Garten stellen konnte. Anders wie meine heimische Station ist dies eine kompakte Station. Alles ist auf einem U-Profil Rahmen montiert und kann über Stecker schnell angeschlossen oder abgebaut werden. Auch ist das Ganze recht einfach zu transportieren sollte sich der Standort mal ändern müssen. Diese Station hat außerdem die Besonderheit, dass sie Ihre Daten per UMTS an den Server sendet. Dies klappt erstaunlich gut auch mit langsamen Verbindungen. Wird die Verbindung einmal unterbrochen, so werden die Werte automatisch von der Client Software gespeichert und einfach später zum Server gesendet. So geht nichts verloren und man hat keine Datenlücken. Als ich diese Station aufgebaut habe, kam mir gerade recht, dass der RaspberryPi, ein weiterer günstiger Mini Computer, auf dem Markt kam und in ordentlichen Stückzahlen zu haben war. Hiermit konnte ich Kosten und auch noch ein bisschen Platz sparen. Mittlerweile laufen beide Stationen auf einem RaspberryPi.

Natürlich ist Station 3 und 4 schon in Planung

So eine Wetterstationssoftware ist ein Projekt was wohl nie endet. Es gibt immer wieder neue Sensoren oder Funktionen, die man einbauen oder anbinden möchte. Meine nächste Erweiterung ist sicherlich eine Art Update Mechanismus. Gibt es ein neues Softwarepaket für den Client muss ich im Moment immer zu den Stationen fahren und diese betanken. Um hier Abhilfe zu schaffen würde ich gerne ein automatisches Update einführen. Gibt es ein neues Paket, so soll der Client sich dieses selbstständig herunterladen und installieren. Hier ist natürlich besonders darauf zu achten, dass die Pakete auch ordnungsgemäß übertragen werden. Andernfalls ist hier nach einem Neustart der Software ein manuelles eingreifen erforderlich.

Außerdem würde ich gerne eine Server zu Server Schnittstelle einarbeiten, so dass unterschiedliche Server untereinander Daten austauschen können oder als Backup dienen können.
Es gibt also immer genug zu tun. Wer Interesse hat die Software zu testen oder Fragen hat kann sich gerne bei mir melden.

Links

Wiki: http://wiki.sven-lindeboom.net/doku.php?id=wetterstation

Wettercenter: http://wettercenter.sven-lindeboom.net/