eifel-wetter.de
Kaifenheim. Dein Wetter.

Technik

Info

Inhalt

Im Folgenden werden sowohl die technischen Details der Wetterstation als auch aktuelle Projektvorhaben sowie bereits umgesetzte Erweiterungen und Verbesserungen vorgestellt. Dabei stehen Informationen zu Hard- und Software ebenso im Fokus wie praktische Erfahrungen und Modifikationen der Anlage.

Inbetriebnahme und erste Wetterdaten

Nach erfolgreicher Montage der Wetterstation und Einrichtung der Inneneinheit (Funk), sehen wir dass die Station einwandfrei arbeitet und die Messwerte zum Portal des Herstellers (Davis) sendet.

Hier könnte das Projekt nun bereits abgeschlossen sein!

Praktisch – aber für echte Technikfreaks nur die halbe Wahrheit. Denn spannend wird es erst, wenn man die Daten selbst in die Hand nimmt: auswerten, visualisieren, vergleichen und eigene Ideen umsetzen.

Was bietet uns hier der Hersteller Davis an?
Trotz ihres hohen Anschaffungspreises bieten die Wetterstationen ohne Abonnement lediglich begrenzte Möglichkeiten und einen deutlich reduzierten Bedienkomfort. Die ausgelesenen Daten liegen nicht im metrischen Datenformat vor, was die Weiterverarbeitung unnötig erschwert. Hinzu kommen teils mangelhafte Übersetzungen der Benutzeroberfläche und Texte ins Deutsche, die eher verwirren als helfen.

Durch ein kostenpflichtiges Abonnement, knapp 60€ pro Jahr, erhält man erweiterte Funktionen und den Zugriff auf historische Messdaten. Die Messwerte liegen dabei irgendwo „in der Cloud“ – also verteilt im Internet. Wo genau die Daten gespeichert werden und wie es um Datenschutz und Sicherheit bestellt ist, bleibt für den Nutzer oft unklar.

Auf dieser Seite verarbeiten wir die Wetterdaten eigenständig – unabhängig von Hersteller-Apps und fertigen Diagrammen. So entstehen individuelle Auswertungen, Langzeitstatistiken und Experimente rund ums Wetter, ganz nach dem Motto:
Meine Daten, meine Kontrolle.

Fangen wir an, was ist zu tun???
- Daten aus der Wetterstation auslesen
- Messwerte prüfen und auf europäische 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 mittels einer Firewallregel im Gateway der Zugang zum Internet für die Wetterstation gesperrt.
- Erstens verhindern wir damit die ungewollte Bereitstellung unserer Daten an den Hersteller Davis.
- Zweitens ist die Wetterstation damit vor Bedrohungen aus dem Internet geschützt.

Messwerte selbst erfassen

Grundlagen:
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 unserem Fall ist es die 192.168.178.116.

Wir machen eine erste Abfrage der Wetterstation indem wir die folgende Zeile in den Webbrowser eingeben:
http://192.168.178.116/v1/current_conditions

Die Antwort der Wetterstation kommt als Gesamtpaket im JSON-String und muss anschließend zerlegt werden, damit die Werte einzeln darstellbar sind, bzw. weiterverarbeitet werden können. Grundsätzlich gibt die Wetterstation die Messergebnisse mit amerikanischen Einheiten aus, die Temperatur in Fahrenheit, Windgeschwindigkeit in mph, Regenmenge in inch usw.
Darum kümmern wir uns später.

Beispiel hier: Temperatur 36,9 F entspricht 2,7 °C

Damit sind wir nun in der Lage, unsere Messdaten selbst darzustellen.

Datenbank

Datenbank anlegen
Ziel ist es, die erfassten Daten auch rückwirkend analysieren und weiterverarbeiten zu können. Beispielsweise zur Darstellung des Verlaufs in einem Diagramm. Dies ist nur möglich wenn wir die Messwerte dauerhaft speichern. Hierzu ist eine MySQL-Datenbank optimal geeignet.

In der MySQL-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"...
Nach Empfang und der Umrechnung der Messwerte erfolgt die Speicherung in der Datenbank inklusive Zeitstempel (Datum und Uhrzeit). Dadurch sind Auswertungen über beliebige Zeiträume hinweg möglich.
Art und Umfang der Auswertung sind nun nach individuellen Vorstellungen möglich.
Beispiel: Tagestemperaturverlauf, incl Auswertung der min / max Werte sowie deren Uhrzeit
Ziel ist die automatisierte Abfrage und Speicherung der Messwerte. Mit ein wenig Programmieraufwand lässt sich das mit Hilfe eines PHP-Skriptes erledigen. Hierzu ist allerdings ein lokaler Webserver erforderlich, welcher den PHP-Code versteht und ausführen kann.
Beispiel: Apache (Freeware)
Die folgenden Ausschnitte zeigen die wichtigsten Funktionen des Skripts.
Datenbank verbinden
Als erster Schritt wird eine Verbindung zur Datenbank hergestellt.
Die Userdaten stehen in der externen Datei inc/db.php
Jetzt erfolgt die eigentliche Abfrage der Wetterstation nach der oben beschriebenen Prozedur. Direkt im Anschluss 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.
Umrechnung:
Die Werte sind nun in Variablen abgelegt und können theoretisch schon genutzt werden. Allerdings liegen sie noch im amerikanischen Format vor und werden in das europäische Format umgerechnet.
Temperatur: Grad Celsius = 5/9 * (Fahrenheit-32)
Windgeschwindigkeit: km/h = 1,609 * mph
Luftdruck: hPa = 33.86 * inHG
Datenbank beschreiben
Zuletzt folgt die Speicherung der MySQL-Datenbank.
Damit die Daten fortlaufend erfasst und gespeichert werden, wird dieses Skript im Minicomputer als Cronjob ausgeführt. Wobei die Adresse des Skriptes auf dem Webserver anzugeben ist. Der nachfolgende Eintrag in der Crontab startet das Skript jede Minute.
* * * * * /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.

Als Webseite ausgeben

Datenbank auslesen und Webseite erstellen
Wir haben es nun geschafft, jede Minute wird ein neuer Eintrag mit sämtlichen Messwerten in der Datenbank erzeugt.

Die Wetterdaten werden zentral in einer Datenbank abgelegt und bilden die Grundlage für sämtliche Inhalte dieser Wetterwebseite. Die zuvor erfassten Messwerte können über definierte Datenbankabfragen (z. B. SQL) effizient ausgelesen und serverseitig weiterverarbeitet werden. Die Ausgabe der Daten erfolgt dynamisch auf der Webseite; in diesem Beispiel in Form einer einfachen, tabellarischen Darstellung, die alle relevanten Messwerte strukturiert und übersichtlich zusammenfasst. 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:

Die Wetterkamera

Die Wetterstation liefert fortlaufend zahlreiche Messwerte. Die Darstellung in Tabellen und Diagrammform vermitteln zwar einen präzisen Eindruck über die aktuelle Wetterlage bzw. deren Verlauf. Häufig kann aber eine visuelle Information viel besser verstanden werden als zahlreiche Messwerte.

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

Daraus entstand die Idee einer Wetterkamera. Eine hochauflösende 4K Ultra HD Kamera im wasserdichten Aussengehäuse liefert das Foto. Die weitere Verarbeitung erfolgt mit dem bereits vorhandenen Minicomputer (hier: Raspberry pi).
Um das 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.) Das fertige Foto auf den Webserver "eifel-wetter.de" hochladen.
9.) Diesen Ablauf jede Minute wiederholen und somit dauerhaft aktuelle Fotos bereitstellen.
10.) Die letzten 60 Fotos werden auf dem Webserver gespeichert und können als Animation abgespielt werden. Danach werden die Fotos gelöscht. Für die 24h Slideshow werden separate Fotos erstellt, auf den Webserver geladen und nach 24 Stunden wieder 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
- aktuelle Wetterwarnungen (seit Version 4.3)
- Werte des Regensensors (seit Version 6.5)
- 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


Modifikation der Hardware

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 (12 V) 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. 13 Watt an Heizleistung ab. Dies ist 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 3 Watt 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 Anschlusskasten 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 sogar mitverfolgt werden, was bei der alten Methode nicht möglich war.

Erweiterung: Niederschlagssensor

Im laufenden Betrieb der Anlage war immer wieder festzustellen, dass bei leichtem Regen die Regenrate mit 0 mm/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 Mikrocontroller (ESP8266) erfasst und die Information an den zentralen Webserver weitergeleitet. Dort erfolgt der Eintrag der Messwerte in die bereits beschriebene MySQL Datenbank. Durch die schräge Montage kann das Wasser schneller ablaufen. Die Kabelbinder sollen verhindern, dass sich Vögel auf den Sensor setzen.


Ergebnis:
- bei leichtem Regen wird nun in der Tabelle eine Info angezeigt.
- im Bild der Wetterkamera wird der Hinweis "Sprühregen" angezeigt.
- Im Wetterdiagramm wird der Sensor ebenfalls dargestellt (orange).

Messdaten im SmartHome nutzen

Welche Vorteile bietet SmartHome und wie wird es 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, Verbraucher können beispielsweise nach festgelegten Zeiten oder bei bestimmten Sensorwerten je nach Bedarf ein- oder ausgeschaltet werden. 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 sendet 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 konvertieren. Beim Niederschlag wird die Anzahl der Kippvorgänge des Kipplöffelsensors übermittelt. Der Sensor zählt in 0,2 mm Schritten. Hier wird der Messwert durch 5 dividiert, um somit den Niederschlag in mm zu erhalten. Die Luftfeuchte wird auch in Amerika in Prozent angegeben, Hier ist keine Konvertierung erforderlich: