Artikel-Schlagworte: „Wetterstation“

Wetterstation, Teil 3

Ein weiterer Schritt zur Ablösung der alten Wetterstation ist geschafft. Die Daten der neuen Station landen in einer neuen Datenbank. Es bedurfte allerdings vorher erstmal einer kleinen Auffrischung der PHP-Kenntnisse. Es ist immer wieder erstaunlich, wie schnell man Sachen vergisst, die man nicht ständig nutzt.
Kleines Problem: die Wetterstation sendete ungefähr alle zwölf Sekunden einen Messwert in meine neue Datenbanktabelle. Für meine Zwecke ist das viel zu oft. Also hieß es, die zu viel gesendeten Datensätze zu recyclen ;-):
Auch das stellte mich am Anfang vor eine kleine Herausforderung, die mit einem kurzen Eintrag in der Datenbank meines Webservers gelöst wurde. Erst fragte ich dazu einfach den Timestamp des letzten Eintrags in meiner Wetterdatenbank ab und schaute, ob die Mindestzeit bis zum nächsten Eintrag schon verstrichen ist.
Das funktionierte, reduzierte aber nicht den Traffic auf dem Rechner im heimischen Netzwerk – und den wollte ich ja eigentlich reduzieren. Also verlagerte ich die Abfrage auf den Webserver und siehe da – schon lief der Rechner zu Hause um einiges flüssiger ;-).
Im nächsten Schritt müssen nun noch die Skripte angepasst werden, die die hübschen Wettergrafiken 😉 hier im Blog erstellen. Weil es aber gerade wieder nicht nach Regen aussieht und ich die Zeit dann lieber im Garten verbringe, muss das noch etwas warten. 🙂

Wetterstation, Teil 2

Nachdem das schöne Sommerwetter erstmal Platz für den Herbst gemacht hat, habe ich endlich wieder Zeit gefunden, mich mit der neuen Wetterstation, bzw. der Auswertung der von ihr gelieferten Daten zu beschäftigen.

Am Anfang schien die Sache ziemlich einfach, aber wie immer steckt der (Fehler-)Teufel im Detail. Jedenfalls dauerte es eine ganze Weile, bis die erste korrekte Datenübermittlung beim Server ankam. Inzwischen klappt das und ich kann mit der Auswertung beginnen. Als Laie in Sachen Wetterstation musste ich nun erstmal herausfinden, was sich z.B. hinter dem übermittelten Wert „baromin“ verbirgt.

Bei allen anderen Werten war das nicht schwer, offenbar werden diese Stationen hauptsächlich für den amerikanischen Markt gebaut – das liegt nahe, wenn da Werte wie „windspeedmph“ oder „indoortempf“ übermittelt werden. Entsprechend schnell sind die empfangenen Werte dann auch in „vernünftige Daten“ 😉 umgerechnet. Nur bei „baromin“ stand ich kurzzeitig auf dem Schlauch. Das es irgendwas mit Luftdruck zu tun hat, war klar. Nur passte der Wert von 29.93 nicht so richtig zu gängigen Werten in milliBar.

Nach etwas Webrecherche fiel dann der Groschen. Die Angabe bedeutet in/Hg, also dem amerikanischen Pendant zu mm/Hg. Also fix eine passende Formel zur Umrechnung gesucht und schon passte der ermittelte Wert zur Anzeige auf der Station :).

Nur einen kleinen Schönheitsfehler hat die Sache. Die Daten des extra passend zur Station besorgten zusätzlichen Sensors für Bodentemperatur und -feuchte werden nicht mit übertragen. 😳

Also muss ich dafür doch einen Eigenbau-Sensor einsetzen. Funktionieren tut der schon, es fehlt nur noch ein Gehäuse. Und wo ich gerade dabei bin: meine Eigenbausensoren messen eigentlich genau so gut, wie die der Station. Die Unterschiede sind mit minimal. Da freut sich das Bastlerherz.😁

Als nächstes wird am Auswertescript weiter gebastelt. Daten auf Plausibilität prüfen, Eintrag in die Datenbank, usw.. Da kann es ruhig noch ein paar Tage weiter regnen 😉.

Einmal Hacker sein… ;-)

Seit vielen Jahren nutze ich eine Wetterstation im Garten. Sinnvollerweise hatte ich immer eine Station, bei der ich die Messwerte einfach zur eigenen Nutzung und Weiterverarbeitung selbst aus der Station ziehen kann. Im Lauf der Jahre passiert aber, was zwangsläufig mit jeder Technik irgendwann passiert: sie geht kaputt. In meinem Fall verabschiedeten sich von der ersten Station Schritt für Schritt die Sensoren. Bei der zweiten Station kommt eigenes Unvermögen dazu. 🙁
Wenn man schon zur Bespaßung der Hunde Bälle durch den Garten wirft, sollte man so werfen, dass die Außensensoren nicht im Weg sind…
Also reifte der Entschluss, bei nächster Gelegenheit etwas neues zu beschaffen. Nun kam es so, dass ein Angebot eines Discounters und der nahende Geburtstag Anlass zur Neubeschaffung einer neuen Station boten.
Im Vergleich zu anderen Angeboten war das Angebot des Discounters fast 150€ preiswerter. Schnäppchen also!
Aber wie das immer so ist: Kein Vorteil ohne nicht mindestens zwei Nachteile! Bei dieser Station (Bresser 7 in 1) gibt es keine (offizielle) Möglichkeit, auf direktem Weg an die Wetterdaten zu kommen. Zwar besteht die Möglichkeit des Anschlusses an das heimische WLAN, aber man kann die Daten dann nur über den Umweg wunderground.com (funktioniert bei mir nicht) oder weathercloud.net(funktioniert) bekommen. Da ich die Daten, speziell die Niederschlagsmenge, zur Steuerung meiner Gartenberegnung (Eigenbau, später vielleicht dazu mehr…) nutzen möchte, ist so ein Umweg natürlich suboptimal und fehleranfällig. Also begann ich über alternative Lösungen nachzudenken und entwickelte mich zum „Hacker“ ;-).
Alles, was per Netzwerk irgendwohin übertragen wird, kann man mit den passenden Werkzeugen ausschnüffeln. In meinem Fall war das mein Linux-Desktop und Wireshark. Zunächst ermittelte ich die IP-Adresse der Wetterstation im WLAN. Das war nicht schwer, weil mein Router mir jedes neue Gerät im Netzwerk per Mail petzt.
Als nächstes nutzte ich eine versteckte Funktion im Router dazu, den Netzwerkverkehr „nach draußen“ aufzuzeichnen. Diese Datei öffnete ich in Wireshark, setzte einen Filter mit der IP der Wetterstation und siehe da… die ist so „gesprächig“, dass sie die Daten im Klartext mittels eines einfachen Aufrufs einer URL überträgt. In diesem Fall ging der Aufruf der URL an wunderground.com. Allerdings endete dieser Aufruf permanent mit einer Fehlermeldung der Webseite (unauthorized – warum auch immer…).
Jetzt gäbe es die Möglichkeit, im lokalen Netz einen eigenen DNS-Server zu betreiben und den Aufruf an einen eigenen Server umzuleiten. Das war mir aber zu aufwändig. Es gibt da nämlich im Setup der Wetterstation noch die Möglichkeit, einen anderen „Wetterserver“ einzutragen. Nach etwas Frickelei und dem nochmaligen Einsatz von Wireshark war es dann geschafft – die Station „telefoniert“ jetzt mit meinem eigenen Server. Die Verbindung mit dem „Wetterserver“ funktioniert nämlich haargenau so, wie die mit wunderground.com. :).
Jetzt muss ich mir nur noch ein kleines php-Script schreiben, dass die Daten entgegen nimmt und in meine eigene Datenbank schreibt.

Wetternews

Bei der momentanen Kälte sitze ich lieber in der warmen Stube und bastle an meinen Wetterscripten weiter.
Inzwischen ist ein erstes Wetterdiagramm online (siehe Seite ‚Wetter‘). Dort wird ein stündlich aktualisiertes Diagramm des Verlaufs von Temperatur und relativer Luftfeuchtigkeit angezeigt.
Dazu wird per Cronjob ein kleines Shellscript gestartet, welches wieder um verschiedene Scripte und Programme aufruft, die dann im Endeffekt das kleine Diagramm erstellen.
Beteiligt sind daran Perl, MySQL, Gnuplot und Imagemagick. Das Perlscript fragt die betreffenden Daten aus der MySQL-Datenbank ab, schreibt sie in eine Textdatei und erzeugt eine Steuerdatei für Gnuplot. Gnuplot lädt die Steuerdatei und erzeugt aus den Daten in der Textdatei eine transparente .png-Bilddatei. Imagemagick kopiert das transparente Diagramm anschließend auf den Wolkenhintergrund und gibt die fertige Grafik aus. Zum Schluß verschiebt das Shellscript die Grafik in den Webspace.

Nebenbei habe ich auch noch einen kleinen Fehler bei der Auswertung der Maximal- / Minimaltemperaturen „entschärft“. Leider kommt es immer mal vor, dass der Wetterdatenempfänger Daten einzelner Sensoren nicht erfasst. Dann stehen für die betreffenden Sensoren falsche Werte (in diesem Fall eine Null) in der Datenbank. Nun kann man z.B. für die Temperatur keine Unterscheidung treffen, ob die Temperatur wirklich 0°C beträgt oder der Wetterdatenempfänger keine Werte erfasst hat. Im Zusammenhang mit der gleichzeitig gesendeten relativen Luftfeuchtigkeit ist es dann aber doch möglich. Denn falls der Wert für die Luftfeuchtigkeit auch Null ist, was in unseren Breiten wohl nie vorkommt, kann man die Daten für den betreffenden Sensor verwerfen.
Nun kann es nicht mehr passieren, dass bei der Minimaltemperatur Mitte Juli 0°C angezeigt werden ;-).

Nachtrag:
Kleine Änderung beim Dateiformat des Diagramms. Die erzeugte .png-Grafik war mit einer Dateigröße von etwa 2MB eindeutig zu groß. Deshalb gibt’s die jetzt im .jpg-Format. Das schont unterwegs die auf 1GB limitierte Datenflatrate fürs Handy ;-).

Es wettert wieder :-)

Manch einer hat sich sicher schon gewundert, dass es hier in letzter Zeit gar kein aktuelles Wetter mehr gab. Mir ist es auch ziemlich peinlich zugeben zu müssen, dass es nach der Ankündigung hier im Blog auf einmal nicht mehr funktionierte.
Inzwischen hatte ich etwas Muße, habe mal nach dem Fehler gesucht und das Script „entlaust“. Wobei im Script nicht mal ein Bug war, eher im Gegenteil. Das Problem lag einfach daran, dass die serielle Schnittstelle nach einem Reboot die Einstellungen „vergessen“ hatte und mein Script so ewig auf die Wetterdaten gewartet hätte…

Jetzt habe ich das Script etwas erweitert und die Schnittstelle wird bei jedem Aufruf neu initialisiert. Sicher ist sicher :D.
Allerdings passen durch die lange „Auszeit“ des Scriptes die Niederschlagsmengen nicht mehr so richtig, an dieser Stelle muß ich mir noch etwas einfallen lassen.
Hauptsache es läuft erstmal wieder :-).

Ach so, noch was. Der eine Außensensor liegt zu Testzwecken in meiner Bastelbutze auf dem Schreibtisch. Mir wäre die angezeigte Temperatur als Außentemperatur allerdings lieber…

Das Wetter… wieder mal ;-)

Das Wetter ist ja derzeit in aller Munde. Beim derzeitigen Wetter ist das allerdings auch kein Wunder. Regen ohne Ende und Temperaturen, die tagsüber gerade mal an der 15°C-Marke kratzen. Und das Ende Mai.
Um mal auf den Punkt zu kommen: Ich wollte eigentlich schon immer genauer wissen, wieviel es geregnet hat, welcher Tag der wärmste und welcher der kälteste war. Und es hat mich schon immer fasziniert, wenn ich auf irgendwelchen Webseiten die aktuellen Wetterdaten in quasi Echtzeit sehen konnte. Da war immer ein Gedanke präsent: Auch haben will ;-).
Diesen Beitrag weiterlesen »