Technikseite

An dieser Stelle möchte ich technische Details der Wetterstation aufzeigen.
Das sind einerseits Informationen zu Hard- und Software, andererseits aber auch Erfahrungen und Modifikationen der Anlage.


erste Modifikation

In der kalten Jahreszeit besteht die Gefahr, dass der Niederschlagssensor einfriert oder durch den Schnee völlig überfüllt wird und damit keine Messwerte mehr liefert.

Abhilfe soll hier eine Niedervolt-Heizfolie (12V) schaffen. Bezugsquelle: Amazon, Kosten: 7,35€/Stück

Damit der ganze Trichter beheizt werden kann, sind 2 Heizfolien erforderlich. Die Folien sind selbstklebend und werden wie gezeigt auf der Unterseite des Trichters aufgeklebt. Anschließend werden die Drähte verlötet und mit Schrumpfschlauch (mit Innenkleber) geschützt.
Ein Heizelement gibt ca. 13Watt an Heizleistung ab. Dies ist jedoch deutlich mehr als erforderlich und daher werden die Elemente in Reihe geschaltet. Daraus folgt: Halbe Betriebsspannung je Element -> also 25% der Leistung. In Zahlen ausgedrückt etwa 3Watt pro Element. Dies reicht aus um den Trichter vor Vereisung zu schützen. Lose Drähte werden mittels Heißkleber so fixiert, dass sie keinesfalls die Regenwippe berühren bzw. blockieren können.

Ein Thermostat im benachbarten Anschlußkasten schaltet die Versorgungsspannung ein, sobald die Außentemperatur unter +3°C fällt.


Messwerte erfassen und archivieren

Mittlerweile ist es gängige Praxis, dass Hersteller neben dem Verkauf ihrer Geräte auch Portale für deren Nutzung anbieten. Ziel ist es dem Kunden ein kostenpflichtiges Abo zu verkaufen, sodass dauerhafte Umsätze generiert werden.:-( So ist es auch beim Hersteller "Davis". Die Messwerte der Wetterstation können zwar live auf dem PC/Smartphone mitverfolgt werden, eine Speicherung der Daten ist jedoch nicht ohne Weiteres möglich. Bei der angebotenen kostenlosen Plattform über weatherlink.com sind die Auswertemöglichkeiten eher bescheiden. Die Darstellung der Messwerte wird vom Hersteller größtenteils fest vorgegeben und die deutsche Übersetzung ist mangelhaft. Die komfortable Darstellung der Messwerte ist kostenpflichtig. Was liegt nun näher, als die eigenständige Verarbeitung und Speicherung der vorliegenden Messdaten?
Was ist zu tun???

- Daten aus der Wetterstation auslesen
- Messwerte prüfen und auf europ. Einheiten umrechnen
- Daten in einer Datenbank ablegen
- Datenbestand auswerten und grafisch darstellen

Die Inneneinheit bildet die Schnittstelle zum heimischen Netzwerk (LAN/WLAN). Über eine eindeutige IP-Adresse ist das Gerät im Netzwerk erreichbar. Diese Adressen werden in der Regel vom Internetrouter (z.B. Fritzbox) dynamisch vergeben. Auf der Konfigurationsseite der Fritzbox / Heimnetz ist ersichtlich, welches interne Gerät welche IP-Adresse verwendet. in meinem Fall ist es die 192.168.178.116.
Eine Abfrage der Daten kann nun unter: http://192.168.178.116/v1/current_conditions erfolgen.

Die Antwort der Wetterstation kommt als Gesamtpaket im JSON-Format und muß anschließend zerlegt und dekodiert werden, damit die Werte einzeln darstellbar sind, bzw weiterverarbeitet werden können. Grundsätzlich werden die Messergebnisse mit amerikanischen Einheiten versehen, die Temperatur in Farenheit, Windgeschwindigkeit in mph, Regenmenge in inch usw. Hier ist eine individuelle Umrechnung erforderlich.
Beispiel hier: Temperatur 36,9 F entspricht 2,7°C

In der SQL-Datenbank wird eine Tabelle mit der gleichen Struktur des JSON-Arrays angelegt. Also jeweils eine Spalte für Temperatur, Luftdruck, Windgeschwindigkeit usw...
Auch die Bezeichnung der Messwerte wird 1:1 in die Spaltenüberschrift übernommen. z.B. "temp", "hum", "dew_point"...
Nachdem die Messwerte empfangen und umgerechnet wurden, erfolgt die Ablage in der Datenbank. Die Datenbank speichert hierzu jeweils die zugehörige Uhrzeit mit Datum. Damit ist gewährleistet, dass Auswertungen über beliebige Zeiträume möglich sind.
Art und Umfang der Auswertung sind nun nach individuellen Vorstellungen möglich.
Beispiel: Tagestemperaturverlauf, incl Auswertung der min / max Werte sowie deren Uhrzeit
Damit die Abfrage und Speicherung automatisiert werden kann ist ein wenig Programmieraufwand notwendig. Ich habe ein php-Skript geschrieben, welches genau diese Aufgaben erledigt. Hierzu ist allerdings ein lokaler Webserver erforderlich, welcher den php-Code versteht und ausführen kann. Beispiel: Apache (freeware) Dieses Skript ist vom Prinzip her eine Webseite, welche beim Aufruf einen vorgegebenen Programmcode startet. Die folgenden Ausschnitte zeigen die wichtigsten Funktionen des Skripts.
Als erster Schritt wird eine Verbindung zur Datenbank hergestellt.
Die Userdaten stehen in der externen Datei inc/db.php
Nun erfolgt die eigentliche Abfrage der Wetterstation wie bereits oben beschrieben wurde. Direkt im Anschluß werden die Daten aus dem json-Format in ein Array dekodiert.
Die Struktur aus dem Antwortstring bleibt grundsätzlich erhalten. Die Kenntnis dieser Struktur hilft sehr beim Verständnis dieser Funktion.
Die Werte sind nun in Variablen abgelegt und können theoretisch schon genutzt werden. Allerdings liegen sie noch im amerikanischen Format vor und sollten daher auf europäisches Format umgerechnet werden.
Temperatur: Grad Celsius = 5/9*(Farenheit-32)
Windgeschwindigkeit: km/h = 1,609*mph
Luftdruck: hPa = 33.86*inHG
Zuletzt folgt die Speicherung der der SQL-Datenbank.
Damit die Daten fortlaufend erfaßt und gespeichert werden, wird dieses Skript im Raspberry Pi als Cronjob ausgeführt. Wobei die Adresse des Skriptes auf dem Webserver anzugeben ist
*/3 * * * * /usr/bin/wget -O - -q -t 1 http://192.168.178.12/wetterstation.php
Anmerkung: Webserver und Raspberry Pi müssen natürlich dauerhaft eingeschaltet sein. In meinem Fall läuft der Webserver auf einem NAS (der sowieso 24/7 in Betrieb ist). Der Raspberry hat noch weitere Aufgaben und erledigt den Aufruf des Skriptes mal eben nebenher. Ich musste also weder zusätzliche Geräte anschaffen, noch welche hierfür in Betrieb nehmen.


Datenbank auslesen und Webseite erstellen

Die zuvor erfassten Daten können nun zur Darstellung auf einer Webseite aus der Datenbank abgefragt werden. Bei der Gestaltung der Seite sind der Kreativität keine Grenzen gesetzt. Ich zeige hier ein einfaches Beispiel, wie sämtliche Messwerte übersichtlich in einer Tabelle dargestellt werden können. Schauen wir uns zunächst noch einmal die Struktur der aufgezeichneten Messwerte an:
Die Tabelle in der Datenbank enthält für jeden Messwert jeweils eine Spalte; also Temperatur, Luftfeuchtigkeit, Niederschlagsmenge usw. Die Überschriften der Spalten wurden nach dem Format von Davis benannt. Temperatur heißt dort 'temp', Luftfeuchtigkeit heißt 'hum' usw....
Wir selbst wissen zwar was damit gemeint ist, aber für eine allgemein verständliche Darstellung auf der Webseite sollen die ausführlichen Begriffe verwendet werden. Außerdem soll zu jedem Messwert die zugehörige Einheit dargestellt werden. Daher wird in der Datenbank eine weitere Tabelle mit dem Namen 'Struktur' angelegt, welche die Zuordnung der Namen und der jeweiligen Einheiten beinhaltet. Beispiel: temp -> Temperatur -> °C
Wenn wir nun eine Anfrage an unsere Wetterdatenbank stellen, so erhalten wir beispielsweise: 'hum, 83.6' Mit der Antwort 'hum' fragen wir bei der zweiten Tabelle nach und bekommen als Antwort 'Luftfeuchtigkeit, % rel.'
Mit beiden Antworten können wir nun auf der Webseite den Messwert 'Luftfeuchtigkeit: 83,6% rel.' darstellen.


Das Resultat sieht bei mir dann wie folgt aus: