Wetterstation Die Wetterstation ist als Projekt angelegt und wird laufend erweitert und optimiert. Um eine zuverlässige Erfassung der Wetterdaten 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.
|
![]() |
![]() |
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 (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. |
Messwerte erfassen, archivieren und darstellen 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 Plattform sind die Auswertemöglichkeiten eher bescheiden. Die Darstellung der Messwerte wird vom Hersteller größtenteils fest vorgegeben und die deutsche Übersetzung ist mangelhaft. Fazit: - bescheidene Qualität der Darstellung - mangelhafte Übersetzung ins Deutsche - null Flexibilität Diese Lösung kommt definitiv nicht infrage. 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
- Ein Mini-PC für die Ablaufsteuerung
|
Grundlagen: Kommunikation mit der Wetterstation In meinem 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 |
![]() |
Das werden wir später noch umrechnen. Beispiel hier: Temperatur 36,9 F entspricht 2,7 °C
|
![]() |
Datenbank anlegen Auch die Bezeichnung der Messwerte wird 1:1 in die Spaltenüberschrift übernommen. z.B. "temp", "hum", "dew_point"... Nach dem Empfang und der Umrechnung der Messwerte erfolgt die Ablage in der Datenbank inklusive der jeweils zugehörigen Uhrzeit mit Datum. Damit ist gewährleistet, dass Auswertungen über beliebige Zeiträume möglich sind. |
![]() |
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 dazu 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 verbinden |
![]() |
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 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. */3 * * * * /usr/bin/wget -O - -q -t 1 http://192.168.178.12/wetterstation.php |
|
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. |
WetterkameraDie 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, ob sie 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 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. 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 0 mm/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 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: ![]() |
![]() |
Messwerte verarbeiten und darstellen |