Jetzt wird es technisch . . .

Wetterstation
Die Wetterstation ist als Projekt angelegt und wird daher laufend erweitert und optimiert. Um eine zuverlässige Erfassung der Weterdaten zu gewährleisten, bedarf es einer Technik die einerseits solide aufgebaut den Wetterbedingungen trotzen kann, andererseits aber auch präzise und störungsfrei arbeitet.
An dieser Stelle möchte ich technische Details der Wetterstation aufzeigen aber auch aktuelle Projektvorhaben und umgesetzte Erweiterungen oder Verbesserungen. Das sind einerseits Informationen zu Hard- und Software, andererseits aber auch Erfahrungen und Modifikationen der Anlage.


Hier kommt die Wetterstation des Herstellers Davis, Modell Vantage Vue zum Einsatz. Sie verfügt über folgende Sensoren:
- Windrichtung
- Windgeschwindigkeit
- Temperatur
- Luftdruck
- Luftfeuchte
- Niederschlagsmenge

Die Verbindung zur Inneneinheit erfolgt über ein Funksignal (868MHz).

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. Kosten: 7,35€/Stück

Heizung
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.

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



#update:
Januar 2024, Smarthome hält auch im Bereich meiner Wetterstation Einzug. Anstelle des Thermostats wurde ein WLAN-basierter Controller eingebaut (Kosten: 3,50€). Da die Wetterstation die Temperatur bereits an den SmartHome Server überträgt, müssen wir diese nur noch auswerten und bei Bedarf das Relais einschalten. Super einfach. Über die SmartHome Visualisierung kann nun der Zustand der Heizung mitverfolgt werden, was bei der alten Methode nicht möglich war.

Messwerte erfassen, archivieren und darstellen
Nun möchten wir nicht nur die gemessenen Daten der Wetterstation anzeigen sondern auch einen Wetterverlauf darstellen können. Dazu müssen wir die Messwerte in geeigneter Form speichern.

Was bietet uns hier der Hersteller an?
Mittlerweile ist es gängige Praxis, dass Hersteller neben dem Verkauf ihrer Geräte auch Portale für deren Nutzung betreiben. Ziel ist es dem Kunden ein kostenpflichtiges Abo zu verkaufen, sodass dauerhafte Umsätze generiert werden.:-( So ist es leider auch beim hier vorliegenden Hersteller. 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 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. Diese Lösung kommt definitiv nicht in Frage.

Was liegt nun näher, als die eigene Verarbeitung und Speicherung der vorliegenden Messdaten?

Mal überlegen, 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


Welche zusätzliche Hardware wird benötigt???

- Ein Mini-PC für die Ablaufsteuerung
- Ein zentrales Speichermedium


Und selbstverständlich wird der Zugang zum Internet für die Wetterstation gesperrt, damit die kostenfreie Bereitstellung meiner Daten an den Hersteller Davis unterbunden wird. Das geht einfach mit Hilfe einer Firewallregel im Gateway zum Internet.

Kommunikation mit der Wetterstation
Die Inneneinheit bildet die Schnittstelle zum heimischen Netzwerk (LAN/WLAN) und ist über eine eindeutige IP-Adresse erreichbar. Diese Adressen werden in der Regel vom Internetrouter (z.B. Fritzbox) dynamisch vergeben. Auf der Konfigurationsseite der Fritzbox / Heimnetz ist ersichtlich, welche IP-Adresse unserer Wetterstation zugewiesen wurde. 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-String und muß anschließend zerlegt 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

Datenbank
In der SQL-Datenbank wird eine Tabelle mit der gleichen Struktur des JSON-Strings 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.
Datenbank einrichten
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-String geholt.
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
Datenbank beschreiben
Zuletzt folgt die Speicherung der der SQL-Datenbank.
Damit die Daten fortlaufend erfaßt und gespeichert werden, wird dieses Skript im Minicomputer 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 Minicomputer 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 Minicomputer 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 dann wie folgt aus:

Wetterkamera
Die tabellarische Darstellung der Messwerte und die Darstellung in Diagrammform vermitteln einen präzisen Eindruck über die aktuelle Wetterlage bzw. deren Verlauf. Häufig kann aber eine visuelle Information viel mehr über die aktuelle Wetterlage aussagen als zahlreiche Messwerte.

Wie heißt es so schön?
"Ein Bild sagt mehr als tausend Worte".

Daraus entstand die Idee einer Wetterkamera. Umgesetzt wird dieses Projekt mit dem bereits vorhandenen Minicomputer (hier: Raspberry pi).
Um das einfache Bild der Kamera mit den gewünschten Informationen zu versehen, sind folgende Aufgaben zu erfüllen:
1.) ein aktuelles Foto von der Außenkamera anfordern
2.) Fotobearbeitung (Auflösung optimieren und Größe ändern)
3.) Die Wetter-Messwerte aus der Datenbank abfragen
4.) Prüfen ob Wetterwarnungen beim DWD vorliegen
5.) Größe und Position des Windpfeils berechnen, Größe ändert sich je nach Windstärke
6.) Icons, Warnmeldungen und farbige Hintergrundflächen ins Foto einblenden
7.) Die Messwerte und andere Informationen ins Foto einblenden
8.) Diesen Ablauf jede Minute wiederholen und somit ein neues Foto auf den Webserver hochladen
9.) die letzten 60 Fotos werden auf dem Webserver gespeichert und können als Animation abgespielt werden. Danach werden die Fotos gelöscht.

Info: Die Aufnahmerichtung schwenkt einmal pro Stunde über den Ortskern hin und her. (seit Version 5.0)


Sämtliche Einblendungen sind dynamisch und werden in Abhängigkeit der Wetterdaten, Tageszeit und Warnmeldungen erzeugt.

Folgende Informationen können aus dem Bild der Wetterkamera entnommen werden:
- optischer Eindruck der aktuellen Wetterlage
- Windrichtung, Windstärke
- Temperatur, Taupunkt, Luftdruck, Luftfeuchte
- Niederschlagsintensität und Menge
- Sonnenaufgang/-untergang
- Sichtweite über Markierungen im Bild

zu bewerten ist die Horizontlinie, die unmittelbar unten an die Markierung angrenzt.
Foto links und mitte : Sichtbedingung erfüllt, Foto rechts: Sichtbedingung nicht erfüllt

- aktuelle Wetterwarnungen (seit Version 4.3)
- Werte des Regensensors (seit Version 6.5)

Niederschlagssensor
Im laufenden Betrieb der Anlage war immer wieder festzustellen, dass bei leichtem Regen die Regenrate mit 0mm/h angezeigt wird. Wie kommt das?

Um dies zu verstehen müssen wir uns einmal die Funktionsweise der Messung genauer anschauen:
Die Wetterstation erfasst die Niederschlagsmenge über einen sogenannten Kipplöffelsensor. Hierbei wird der Niederschlag über einen Trichter gesammelt und dem Kipplöffel zugeführt. Beim Erreichen einer bestimmten Füllmenge wird der Kippvorgang ausgelöst. Der Löffel entleert sich. Durch das Zählen der Kippvorgänge wird die tatsächliche Regenmenge ermittelt.

Was bedeutet dies für die Praxis?
Bei kleinen Niederschlagsraten kommt es nicht, bzw. sehr stark verzögert zur Auslösung. Die Wetterstation nimmt geringe Niederschläge folglich nicht wahr.

Abhilfe schafft hier ein zusätzlicher Sensor:

Zum Beispiel der Regensensor m152k von Kemo, er arbeitet nach dem kapazitiven Erkennungsprinzip und kann bereits wenige tropfen auf der Sensorfläche erkennen.
Vorteil: die Sensorfläche ist elektrisch isoliert und kann daher nicht oxidieren.
Der Relaisausgang des Sensors wird mittels Microcontroller (ESP8266) erfasst und die Information an den zentralen Webserver weitergeleitet. Dort erfolgt der Eintrag der Messwerte in die bereits beschriebne mySQL Datenbank. Durch die schräge Montage kann das Wasser schneller ablaufen. Die Kabelbinder sollen verhindern, dass sich Vögel auf den Sensor setzen.

Was wurde damit erreicht?
Ergebnis: bei leichtem Regen wird nun in der Tabelle (Menupunkt Messwerte) und im Bild der Wetterkamera der Hinweis "Sprühregen" angezeigt.
Beachte: Da wir nun das Messprinzip kennen, wissen wir, warum die Regenrate mit 0mm/h angezeigt wird.

SmartHome Anbindung - hier mit dem ioBroker
Im Zeitalter von IoT und SmartHome werden auch in Privathaushalten immer mehr Geräte vernetzt. Wieso also nicht auch die Wetterstation?

Welche Möglichkeiten bietet die SmartHome Anbindung und wie wird sie umgesetzt:
Im smarten Wohngebäude können elektrische Verbraucher (wie z.B. Lampen, Rollläden, Heizung usw.) über das lokale Netzwerk gesteuert werden. Dabei erfolgen die Schaltvorgänge durch eine frei definierbare Logik. Das heißt, elektrische Verbraucher können aufgrund ganz unterschiedlicher Ereignisse oder Zustände je nach Bedarf ein- oder ausgeschaltet werden. Dies können auch Wetterereignisse oder Wetterzustände sein. Je mehr unterschiedliche Arten von Sensoren im SmartHome verfügbar sind, umso vielfältiger sind die Möglichkeiten von deren Verknüpfung.
Damit unser Haustechnik Server (ioBroker) nun auf aktuelle Wettersituationen reagieren kann, benötigt er einen Zugang zur Wetterstation.
Die Abfrage erfolgt wie bereits oben im Kapitel "Kommunikation mit der Wetterstation" beschrieben. Nur dass in diesem Fall ein blockly Skript des ioBroker die gesamte Aufgabe übernimmt.

Mit den nun verfügbaren Wetterdaten ist der ioBroker in der Lage z.B.
- einen Wetterbericht zu erstellen und ihn über smarte Lautsprecher auszugeben.
- Wetterwarnungen auf das Smartphone zu versenden.
- Hinweise über smarte Lautsprecher auszugeben, wenn bei Sturm oder Regen noch Fenster oder Türen offen stehen.
- bei Dunkelheit und gleichzeitigem Regen die IR-Scheinwerfer der Außenkameras zu deaktivieren, um so Fehlalarme zu verhindern.
- bei Starkregen den Mähroboter zu pausieren und zurück zur Garage zu fahren.

Wie sieht das zugehörige Blockly Skript aus?
Der Trigger startet das Skript alle 10 Sekunden und startet damit die Anfrage an die Wetterstation:


Die Antwort der Wetterstation als JSON-String muss entsprechend aufbereitet werden. Die Ergebnisse schreiben wir in eigens angelegte Datenpunkte:


Da die Wetterstation amerikanische Grundeinheiten verwendet müssen wir einige Messwerte noch eben konvertieren. Beim Niederschlag wird die Anzahl der Kippvorgänge des Kipplöffelsensors übermittelt. Der Sensor zählt in 0,2mm Schritten. Daher wird der Messwert hier durch 5 dividiert, um somit den Niederschlag in mm zu erhalten. Die Luftfeuchte wird auch in Amerika in Prozent angegeben, daher ist hier keine Konvertierung erforderlich:


Messwerte verarbeiten und darstellen
Nun liegen uns aktuelle Wetterdaten vor, welche wir z.B. in der Visualisierung des ioBroker darstellen können.