Wetter und Wettervorhersagen: Unterschied zwischen den Versionen

Aus FHEMWiki
(Die Seite wurde neu angelegt: „Mit dem [http://fhem.de/commandref.html#Weather Weather command] können Wetter Vorhersagen von der Yahoo Wetterseite abgefragt werden. Zuerst einmal besuche…“)
 
K (Sichtung/Korrektur der letzen Änderungen)
 
(62 dazwischenliegende Versionen von 17 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
Mit dem [http://fhem.de/commandref.html#Weather Weather command] können Wetter Vorhersagen von der Yahoo Wetterseite abgefragt werden.
Wetterdaten und Wettervorhersagen können auf verschiedene Weise in FHEM eingebunden werden.
== Modul Weather ==
Das Modul [[Weather]] extrahiert Wetterdaten via API von den Wetterdatenanbietern
* [https://openweathermap.org/ Openweathermap]
** Vorschauzeitraum: 5 Tage (zeitliche Auflösung: 3 Stunden)
** Aktuelle Daten (minütlich)
** 1000 Abrufe pro Tag mit dem Gratis-API-Key (Stand: Juni 2021)
* [https://www.wunderground.com/ wunderground]
** API-KEY nur für Gerätebesitzer
* [https://darksky.net/ DarkSky]
** Support for the Dark Sky API ended on March 31, 2023, and has been replaced by Apple’s WeatherKit API.
** Es können keine neuen API-Key erstellt werden (Stand: Juni 2021)


Zuerst einmal besuchen wir die [http://weather.yahoo.com Yahoo Wetterseite] und öffnen den Wetterbericht für die jeweilige Stadt (z.B. [http://weather.yahoo.com/germany/berlin/berlin-638242 Berlin]). In der URL des Wetterberichtet findet sich dann die sogenannte WOEID (WHERE-ON-EARTH-ID). Sie bildet die Wetterinfos die FHEM abfragen soll und für Berlin ist dies die Nummer 638242.
Da die Yahoo Weather API zum 03.01.2019 abgeschaltet wurde, kann Weather keine Wetterdaten von Yahoo mehr beziehen.


In unserer fhem.cfg tragen wir dann folgendes ein:
== Unwetterzentrale ==
Informationen der Seite(n) Unwetterzentrale.de können mit Hilfe des Moduls [[UWZ]] eingebunden werden.


== Modul OPENWEATHER ==
Das Modul [[OPENWEATHER]] extrahiert Wetterdaten über die "openweather"-Schnittstelle (API) von www.wetter.com.
*Vorschau-Zeitraum: 3 Tage
*Vorschau-Interval: 6:00, 11:00, 17:00, 23:00
*Aktuelle Daten: keine
== Modul PROPLANTA ==
Das Modul [[PROPLANTA]] extrahiert Wetterdaten von der Website www.proplanta.de. (keine API)
*Vorschau-Zeitraum: 12 Tage
*Vorschau-Interval: 3 h
*Aktuelle Daten: jede volle Stunde
== Modul WWO ==
Das {{Link2CmdRef|Anker=WWO|Label=Modul WWO}} extrahiert Wetterdaten über die (alte) API von worldweatheronline.com
*Vorschau-Zeitraum: ?? Tage<BR>
*Vorschau-Interval: ??<br>
*Aktuelle Daten: ??
== Deutscher Wetterdienst (DWD) ==
=== Modul DWD_OpenData ===
Das Modul [[DWD_OpenData]] stellt einen Teil der frei verfügbaren Daten des Deutschen Wetterdienstes (DWD) bereit, die über den [https://www.dwd.de/DE/leistungen/opendata/opendata.html Open Data Server] abgerufen werden können (diverse Datenformate, keine API).
*Vorschau-Zeitraum: 10 Tage
*Vorschau-Interval: datenabhängig, viele mit 3 h
*Vorschau-Orte: national und international (weniger Daten, z.B. keine Radiation)
*Aktuelle Daten: nicht implementiert
*Wetterwarnungen: national für Deutschland für Landkreise und Gemeinden in deutsch oder englisch
Es gibt zum Modul auch einen Weblink für [[FHEMWEB]], der zwei Icons pro Tag in horizontaler Form darstellt. Die Anzahl der insgesamt dargestellten Icons ist konfigurierbar. Liegen Wetterwarnungen vor, wird zusätzlich ein Warnsymbol angezeigt, über das man per Klick weitere Details zur Wetterwarnung abrufen kann.
[[DWD_OpenData|Weitere Details und Installationsbeschreibung]]
=== Wetterwarnungen als Karte ===
Der Deutsche Wetterdienst [http://www.dwd.de DWD] stellt neben diversen Wetterdaten auch Wetterwarnungen in Bildform bereit. Diese können sehr einfach via [http://fhem.de/commandref_DE.html#weblink weblink iframe] in FHEM eingebunden werden - das ist zwar nicht die schönste Form, aber die schnellste.
Dazu sucht man sich zuerst auf der [http://www.dwd.de/bvbw/appmanager/bvbw/dwdwwwDesktop?_nfpb=true&_pageLabel=_dwdwww_wetter_warnungen_warnungen&T92053gsbDocumentPath=BEA__Navigation%2FWetter__Warnungen%2FWarnungen.html%3F__nnn%3Dtrue&lastPageLabel=dwdwww_wetter_warnungen Warnungsseite des DWD] die eigene Region heraus (in der Karte durchklicken). Die gewünschte URL für Berlin Stadt ist z.B. <code>http://www.dwd.de/dyn/app/ws/html/reports/BXX_warning_de.html#WS_ANCHOR_0</code>. Das Anhängsel <code>#WS_ANCHOR_0</code> kann man in der Konfiguration auch weglassen.
Die Einbindung in FHEM sieht dann wie folgt aus:
<pre>
define dwd_warnmeldung weblink iframe http://www.dwd.de/dyn/app/ws/html/reports/BXX_warning_de.html
attr dwd_warnmeldung group Wetterwarnungen (DWD)
attr dwd_warnmeldung htmlattr width="100%" height="300" frameborder="0" marginheight="0" marginwidth="0"
attr dwd_warnmeldung room Wettervorhersage,Startseite
</pre>
=== Modul CDCOpenData ===
Das Modul [[CDCOpenData]] stellt einen Teil der frei verfügbaren Daten des DWD-Climate Data Center (CDC) bereit, die über den [https://opendata.dwd.de/climate_environment/CDC/  CDC Open Data Server] abgerufen werden können (diverse Datenformate, keine API). Es handelt sich dabei um Klimadaten, die zum Teil mehrere Jahre zurückreichen.
Besonders interessant sind die pro Tag gefallenen Regenmengen. Sie beruhen auf Regenradar-Messungen, deren Werte an die gemessenen Mengen der Wetterstationen angeeicht wurden. Die räumliche Auflösung beträgt dabei 1 km. Das Modul 98_CDCOpenData.pm ermittelt die innerhalb 24 Stunden gefallenen Regenmengen der letzten Tage sowie die seit Mitternacht gefallene Regenmenge.
Das kann z.B. für eine Bewässerungssteuerung genutzt werden, genauso wie die für die nächsten zwei Stunden vorhergesagten Regenintensitäten, die ebenfalls mit dem Modul abrufbar sind.
== Vorhersage-Diagramm von YR ==
[http://www.yr.no YR] ist die Seite des norwegischen Wetterdiensts. Er ist zwar nur in Teilen auf Englisch (und gar nicht auf Deutsch) verfügbar, bietet aber sehr gute Wettervorhersagen - auch mit eigenen Vorhersagen für kleine Dörfer. Neben etlichen Detailinfos bietet YR eine sehr schicke 48h-Vorhersage-Grafik. Diese kann sehr einfach via [http://fhem.de/commandref_DE.html#weblink weblink iframe] in FHEM eingebunden werden.
Dazu geht man auf die [http://www.yr.no Startseite von YR] und gibt in das Suchfeld den Namen seines Dörfchens ein - die Ergebnissliste kann ziemlich lang werden, sodass man evtl. sehr genau schauen muss, welches das eigene Kaff ist - bei mir war es an 29. Stelle... ;-) Auf der gewünschten Seite gibt es einen Unterpunkt "Forecast as SVG", wo sich die besagte Grafik findet. Hier kopiert man sich einfach die URL der Grafik.
Die Einbindung in FHEM sieht dann bspw. wie folgt aus:
<pre>
define Wetter_yr_Vorhersage weblink iframe https://www.yr.no/en/content/2-2950159/meteogram.svg
attr Wetter_yr_Vorhersage group Wettervorhersage (yr)
attr Wetter_yr_Vorhersage htmlattr width="782" height="391" frameborder="0" marginheight="0" marginwidth="0"
attr Wetter_yr_Vorhersage room Wettervorhersage,Start
</pre>
== Wetter von Weather Underground ==
{{Randnotiz|RNTyp=r|RNText=Das ("offene") API von Weather Underground wird derzeit (März 2019) "retired" = abgestellt, ist also künftig nicht mehr nutzbar! Den benötigten API-Key bekommen "nur noch" Betreiber einer Wetterstation, die diese bei wundergound registrieren und ihre Daten hochladen.}}
'''Hinweis:''' Die hier beschriebene Vorgehensweise ist etwas anspruchsvoller und somit eher für erfahrene FHEM-User geeignet.
[http://www.wunderground.com/ Weather Underground] bietet eine sehr umfassende Sammlung aller möglichen offiziellen und privaten (aber teils sehr professionellen) Wetterstationen weltweit. Es besteht eine recht hohe Wahrscheinlichkeit, dass es in der eigenen Umgebung schon eine Wetterstation gibt. Anstatt nun selbst eine komplette Wetterstation aufzubauen, kann man alternativ auf die Daten der Nachbarstation zugreifen.
{{Randnotiz|RNTyp=y|RNText=Neben dem hier vorgestellten Abruf der Weather Underground-Daten mit [[HTTPMOD]] kann auf Weather Underground-Daten auch mit dem darauf spezialisierten Modul [http://fhem.de/commandref.html#Wunderground Wunderground] zugegriffen werden.}}
Dazu sind grundsätzlich die folgenden Schritte notwendig:
* Finden der geeigneten Station
* Auswerten der XML-Daten
* Erstellen passender gplot-Dateien
=== Finden der geeigneten Station ===
Als erstes geht man auf die [http://www.wunderground.com Startseite von Weather Underground] und gibt in das Suchfeld den Namen seines Dörfchens oder der nächsten Stadt ein - für Berlin landet man bspw. auf Seite für "Berlin Alexanderplatz". Es gibt aber manchmal sehr viele Wetterstationen in der direkten Umgebung. Diese findet man indem am auf "Change Station" klickt und sich eine passende Station aussucht. Nähere Infos (zB. zur verwendeten Hard- und Software) zu der gewählten Wetterstation erhält man, wenn man auf den Namen der Station klickt und dann auf "About this PWS".
Weather Underground stellt die Daten der Wetterstation auch über eine API als XML bereit, die wir auswerten können. Die entsprechende URL findet sich ebenfalls unter "About this PWS" unter "Download current conditions XML". Für Berlin Prenzlauer Berg wäre dies z.B.
<code>http://api.wunderground.com/weatherstation/WXDailyHistory.asp?ID=IBERLIN15&format=XML</code>.
Entscheidend für die jeweilige Station ist der Teil nach "?=ID", also in diesem Fall "IBERLIN15". Dieser Teil des Links lässt sich leicht durch die ID einer anderen Station ersetzen und die Suche nach dem entsprechenden Link auf der Seite der Station bleibt erspart.
=== Auswerten der XML-Daten ===
Die Auswertung der XML-Daten erfolgt via [[HTTPMOD]]. Da dies nicht ganz trivial ist, sind im Folgenden zuerst die wesentlichen Konfigurationsschritte exemplarisch beschrieben. Weiter unten findet sich dann die fertige vollständige Konfiguration.
Es erstes wird das Device HTTPMOD definiert (die 600 am Schluss ist der Aktualisierungszyklus in Sekunden, also alle 10 min):
:<code>define wetter_prenzelberg HTTPMOD http://api.wunderground.com/weatherstation/WXCurrentObXML.asp?ID=IBERLIN15 600 </code>
Dann werden Attribute für alle Readings definiert:
:<code>attr wetter_prenzelberg userattr readingsName_cloudiness readingsName_date ... </code>
Dann wird jedem Attribut ein Name zugewiesen (unter diesem Namen wird der Wert ins Log geschrieben):
:<code>attr wetter_prenzelberg readingsName_cloudiness cloudiness </code>
Zum Schluss wird das Reading selbst definiert:
:<code>attr wetter_prenzelberg readingsRegex_cloudiness cloudiness id="NN" percent="([\d\.]+) </code>
Die gesamte Konfiguration für alle von der API angebotenen Wetterwerte sieht dann wie folgt aus:
<pre>
define wetter_prenzelberg HTTPMOD http://api.wunderground.com/weatherstation/WXCurrentObXML.asp?ID=IBERLIN15 600
attr wetter_prenzelberg userattr readingsName_cloudiness readingsName_date readingsName_dewpointTemperature readingsName_fog readingsName_heatindex readingsName_humidity readingsName_pressure readingsName_solarRadiation readingsName_solarUV readingsName_temperature readingsName_time readingsName_windChill readingsName_windDegrees readingsName_windDirection readingsName_windGust readingsName_windSpeed readingsRegex_cloudiness readingsRegex_date readingsRegex_dewpointTemperature readingsRegex_fog readingsRegex_heatindex readingsRegex_humidity readingsRegex_pressure readingsRegex_solarRadiation readingsRegex_solarUV readingsRegex_temperature readingsRegex_time readingsRegex_windChill readingsRegex_windDegrees readingsRegex_windDirection readingsRegex_windGust readingsRegex_windSpeed
attr wetter_prenzelberg readingsName_cloudiness cloudiness
attr wetter_prenzelberg readingsName_date date
attr wetter_prenzelberg readingsName_dewpointTemperature dewpointTemperature
attr wetter_prenzelberg readingsName_fog fog
attr wetter_prenzelberg readingsName_heatindex heatindex
attr wetter_prenzelberg readingsName_humidity humidity
attr wetter_prenzelberg readingsName_pressure pressure
attr wetter_prenzelberg readingsName_solarRadiation solarRadiation
attr wetter_prenzelberg readingsName_solarUV solarUV
attr wetter_prenzelberg readingsName_temperature temperature
attr wetter_prenzelberg readingsName_time time
attr wetter_prenzelberg readingsName_windChill windChill
attr wetter_prenzelberg readingsName_windDegrees windDegrees
attr wetter_prenzelberg readingsName_windDirection windDirection
attr wetter_prenzelberg readingsName_windGust windGust
attr wetter_prenzelberg readingsName_windSpeed windSpeed
attr wetter_prenzelberg readingsRegex_cloudiness cloudiness id="NN" percent="([\d\.]+)
attr wetter_prenzelberg readingsRegex_date date date" content="([\d\.]+)
attr wetter_prenzelberg readingsRegex_dewpointTemperature <dewpoint_c>(\+|-?[\d\.]+)
attr wetter_prenzelberg readingsRegex_fog fog id="FOG" percent="([\d\.]+)
attr wetter_prenzelberg readingsRegex_heatindex <heat_index_c>(\+|-?[\d\.]+)
attr wetter_prenzelberg readingsRegex_humidity <relative_humidity>([\d\.]+)
attr wetter_prenzelberg readingsRegex_pressure <pressure_mb>([\d\.]+)
attr wetter_prenzelberg readingsRegex_solarRadiation <solar_radiation>([\d\.]+)
attr wetter_prenzelberg readingsRegex_solarUV <UV>([\d\.]+)
attr wetter_prenzelberg readingsRegex_temperature <temp_c>(\+|-?[\d\.]+)
attr wetter_prenzelberg readingsRegex_time time Zeit([\d\:]+)
attr wetter_prenzelberg readingsRegex_windChill <windchill_c>(\+|-?[\d\.]+)
attr wetter_prenzelberg readingsRegex_windDegrees <wind_degrees>([\d\.]+)
attr wetter_prenzelberg readingsRegex_windDirection <wind_dir>([\d\.]+)
attr wetter_prenzelberg readingsRegex_windGust <wind_gust_mph>([\d\.]+)
attr wetter_prenzelberg readingsRegex_windSpeed <wind_mph>([\d\.]+)
</pre>
Hinweis: Nicht immer werden alle Werte geliefert (wenn keine Sonne, dann kein UV-Wert...). Im System-Log kann das als Fehler auftauchen, ist aber kein Problem.
=== Erstellen passender gplot-Dateien ===
Um die ausgelesenen Werte als Graphen darstellen zu können müssen eigene gplot-Dateien erstellt werden. Eine grundsätzliche Anleitung dazu findet sich unter [[Creating Plots]]. Deshalb sollen hier nur Beispiele für die eigentlichen gplot-Dateien vorgestellt werden. Beispiele sollten sowohl für [[FileLog]] wie [[DbLog]] funktionieren.
Temperatur und Luftfeuchte:
<pre>
<pre>
# ————– Wetterdaten erfassen ————-
set terminal png transparent size <SIZE> crop
define MeinWetter Weather 638242 3600 de
set output '<OUT>.png'
attr MeinWetter room Wettervorhersage
set xdata time
set timefmt "%Y-%m-%d_%H:%M:%S"
set xlabel " "
#set title '<L1>'
set title ''
set ytics
set y2tics
set grid ytics
set ylabel "Temperature in C"
set y2label "Humidity (%)"


# — Logfile alle Wetter Daten —
#FileLog 4:temperature\x3a::
define FileLog_MeinWetter FileLog ./log/meinwetter-%Y-%m.log MeinWetter
#FileLog 4:windChill\x3a::
attr FileLog_MeinWetter logtype text
#FileLog 4:humidity\x3a::
attr FileLog_MeinWetter room Wettervorhersage


# attr MeinWetter localicons 1
#DbLog <SPEC1>:temperature::
#DbLog <SPEC1>:windChill::
#DbLog <SPEC1>:humidity::


# — Wetter Icons hinzufügen —
plot "<IN>" using 1:2 axes x1y1 title 'Temperatur (C)' ls l0 lw 1.5 with lines,\
define weblink_meinwetter weblink htmlCode {WeatherAsHtml("MeinWetter")}
    "<IN>" using 1:2 axes x1y1 title 'Gefühlte Temperatur (C)' ls l1 lw 1.5 with lines,\
attr weblink_meinwetter room Wettervorhersage
    "<IN>" using 1:2 axes x1y2 title 'Luftfeuchtigkeit (%)' ls l2fill lw 0.2 with lines
</pre>
</pre>


Das hat zur folge, das FHEM nun die Wetterdaten für Berlin (638242) jede Stunde (3600) neu abholt.
Wind und Windrichtung:
<pre>
set terminal png transparent size <SIZE> crop
 
set output '<OUT>.png'
set xdata time
set timefmt "%Y-%m-%d_%H:%M:%S"
set xlabel " "
 
set ytics
set y2tics ("Nord" 0, "Ost" 80, "S&#252;d" 180, "West" 270, "Nord" 360)
 
#set title '<L1>'
set title ''
 
set grid xtics ytics
 
set yrange [0:20]
set y2range [0:360]
 
set ylabel "Wind (mph)"
set y2label "Richtung"
 
#FileLog 4:windSpeed:0:
#FileLog 4:windGust:0:
#FileLog 4:windDegrees:0:
 
#DbLog <SPEC1>:windSpeed::
#DbLog <SPEC1>:windGust::
#DbLog <SPEC1>:windDegrees::
 
plot "<IN>" using 1:2 axes x1y1 title 'Wind (mph)' ls l0 lw 1.5 with lines,\
    "<IN>" using 1:2 axes x1y1 title 'Böen (mph)' ls l1 lw 1.5 with lines,\
    "<IN>" using 1:2 axes x1y2 title 'Windrichtung (°)' ls l2fill lw 0.2 with points
</pre>
 
Sonnenintensität und UV-Werte:
<pre>
set terminal png transparent size <SIZE> crop
 
set output '<OUT>.png'
set xdata time
set timefmt "%Y-%m-%d_%H:%M:%S"
set xlabel " "
 
set ytics
set y2tics
 
#set title '<L1>'
set title ''
 
set grid xtics ytics
 
set ylabel "Sonnenstrahlung (W/qm)"
set y2label "UV"
 
#FileLog 4:solarRadiation:0:
#FileLog 4:solarUV:0:
 
#DbLog <SPEC1>:solarRadiation::
#DbLog <SPEC1>:solarUV::
 
plot "<IN>" using 1:2 axes x1y1 title 'Strahlung' ls l0 lw 1.5 with lines,\
    "<IN>" using 1:2 axes x1y1 title 'UV' ls l1 lw 1.5 with lines
</pre>
 
'''Weitere TBD'''
 
=== Vergangene Daten abfragen ===
Ein konkretes vergangenes Datum der Wetterstation kann man übrigens auch abrufen - für den 28.11.2014 wäre dies bspw.
<code>http://www.wunderground.com/weatherstation/WXDailyHistory.asp?ID=IBERLIN15&day=28&month=11&year=2014&graphspan=day&format=1</code>.
 
=== Eigene Wetterdaten hochladen ===
{{Randnotiz|RNTyp=g|RNText=Unterstützung für das Modul gibt es im dazugehörigen {{Link2Forum|Topic=65587|LinkText=Forumsthread }}.}}
Wer eigene Wetterdaten hochladen will, kann hierzu das {{Link2CmdRef|Anker=WUup|Label=Modul WUup}} verwenden. Dazu benötigt man die Zugangsdaten (stationID und Paßwort) für eine eigene Wetterstation. Mit dem Modul können die meisten vom [http://web.archive.org/web/20180815041359/http://wiki.wunderground.com/index.php/PWS_-_Upload_Protocol PWS Upload Protocol] unterstützten Daten hochgeladen werden:
* Winddir - [0-360 momentane Windrichtung]
* Windspeedmph - [mph momentane Windgeschwindigkeit]
* Windgustmph - [mph aktuellen Böe, mit Software-spezifischem Zeitraum]
* Windgustdir - [0-360 mit Software-spezifischer Zeit]
* Windspdmph_avg2m - [mph durchschnittliche Windgeschwindigkeit innerhalb 2 Minuten]
* Winddir_avg2m - [0-360 durchschnittliche Windrichtung innerhalb 2 Minuten]
* Windgustmph_10m - [mph Böen der vergangenen 10 Minuten]
* Windgustdir_10m - [0-360 Richtung der Böen der letzten 10 Minuten]
* Feuchtigkeit - [% Außenfeuchtigkeit 0-100%]
* Dewptf- [F Taupunkt im Freien]
* Tempf - [F Außentemperatur]
* Rainin - [in Regen in der vergangenen Stunde]
* Dailyrainin - [in Regenmenge bisher heute]
* Baromin - [inHg barometrischer Druck]
* Soiltempf - [F Bodentemperatur]
* Bodenfeuchtigkeit - [%]
* Solarradiation - [W/m²]
* UV - [Index]
* AqPM2.5 - Feinstaub PM2,5 [µg/m³]
* AqPM10 - Feinstaub PM10 [µg/m³]
 
Die Werte werden im Modul für Wunderground ins anglo-amerikanische System umgerechnet. Temperaturen werden also automatisch von °Celsius in Fahrenheit, Windgeschwindigkeiten von km/h in mph, mm in Inch und der barometrische Druck von hPa in inHg umgerechnet.
 
== Wetternetzwerk auf wetter.com ==
Ein vollständiges Beispiel zur Nutzung der Informationen über die Regenmenge (Station 1445, Weinheim) von wetter.com ist in {{Link2Forum|Topic=39600|Message=332837|LinkText=diesem Forenbeitrag}} beschrieben.
 
== Wetter von netatmo ==
Das FHEM-Modul [[netatmo]] ermöglicht den Datenimport von privaten und öffentlichen netatmo Wetterstationen sowie den Abruf der in der Netatmo App verfügbaren Wettervorhersage. Eine Übersicht über die verfügbaren öffentlichen Stationen findet sich auf der Seite [http://www.netatmo.com/de-DE/weathermap Weathermap]. Die meisten öffentlichen Stationen liefern Temperatur, Luftfeuchte und Luftdruck, einige auch Wind, Regen und Daten zur Luftqualität (CO<sub>2</sub>).
 
== Links ==
* {{Link2Forum|Topic=33610|LinkText=Forenthema}} mit Sammlung und Beipielen von Internet-Links für die Anzeige von teilweise animierten Wetterbildern
* [http://bloglich.de/art/rpi/wetterdaten-auf-dem-raspberry-pi-in-fhem/ Beispiel in Blog(de)]
* [[HTTPMOD]]     
 
[[Kategorie:Code Snippets]] 
[[Kategorie:HOWTOS]] 
[[Kategorie:Wetterstationen]]

Aktuelle Version vom 11. November 2023, 17:14 Uhr

Wetterdaten und Wettervorhersagen können auf verschiedene Weise in FHEM eingebunden werden.

Modul Weather

Das Modul Weather extrahiert Wetterdaten via API von den Wetterdatenanbietern

  • Openweathermap
    • Vorschauzeitraum: 5 Tage (zeitliche Auflösung: 3 Stunden)
    • Aktuelle Daten (minütlich)
    • 1000 Abrufe pro Tag mit dem Gratis-API-Key (Stand: Juni 2021)
  • wunderground
    • API-KEY nur für Gerätebesitzer
  • DarkSky
    • Support for the Dark Sky API ended on March 31, 2023, and has been replaced by Apple’s WeatherKit API.
    • Es können keine neuen API-Key erstellt werden (Stand: Juni 2021)

Da die Yahoo Weather API zum 03.01.2019 abgeschaltet wurde, kann Weather keine Wetterdaten von Yahoo mehr beziehen.

Unwetterzentrale

Informationen der Seite(n) Unwetterzentrale.de können mit Hilfe des Moduls UWZ eingebunden werden.

Modul OPENWEATHER

Das Modul OPENWEATHER extrahiert Wetterdaten über die "openweather"-Schnittstelle (API) von www.wetter.com.

  • Vorschau-Zeitraum: 3 Tage
  • Vorschau-Interval: 6:00, 11:00, 17:00, 23:00
  • Aktuelle Daten: keine

Modul PROPLANTA

Das Modul PROPLANTA extrahiert Wetterdaten von der Website www.proplanta.de. (keine API)

  • Vorschau-Zeitraum: 12 Tage
  • Vorschau-Interval: 3 h
  • Aktuelle Daten: jede volle Stunde

Modul WWO

Das Modul WWO extrahiert Wetterdaten über die (alte) API von worldweatheronline.com

  • Vorschau-Zeitraum: ?? Tage
  • Vorschau-Interval: ??
  • Aktuelle Daten: ??

Deutscher Wetterdienst (DWD)

Modul DWD_OpenData

Das Modul DWD_OpenData stellt einen Teil der frei verfügbaren Daten des Deutschen Wetterdienstes (DWD) bereit, die über den Open Data Server abgerufen werden können (diverse Datenformate, keine API).

  • Vorschau-Zeitraum: 10 Tage
  • Vorschau-Interval: datenabhängig, viele mit 3 h
  • Vorschau-Orte: national und international (weniger Daten, z.B. keine Radiation)
  • Aktuelle Daten: nicht implementiert
  • Wetterwarnungen: national für Deutschland für Landkreise und Gemeinden in deutsch oder englisch

Es gibt zum Modul auch einen Weblink für FHEMWEB, der zwei Icons pro Tag in horizontaler Form darstellt. Die Anzahl der insgesamt dargestellten Icons ist konfigurierbar. Liegen Wetterwarnungen vor, wird zusätzlich ein Warnsymbol angezeigt, über das man per Klick weitere Details zur Wetterwarnung abrufen kann.

Weitere Details und Installationsbeschreibung

Wetterwarnungen als Karte

Der Deutsche Wetterdienst DWD stellt neben diversen Wetterdaten auch Wetterwarnungen in Bildform bereit. Diese können sehr einfach via weblink iframe in FHEM eingebunden werden - das ist zwar nicht die schönste Form, aber die schnellste.

Dazu sucht man sich zuerst auf der Warnungsseite des DWD die eigene Region heraus (in der Karte durchklicken). Die gewünschte URL für Berlin Stadt ist z.B. http://www.dwd.de/dyn/app/ws/html/reports/BXX_warning_de.html#WS_ANCHOR_0. Das Anhängsel #WS_ANCHOR_0 kann man in der Konfiguration auch weglassen.

Die Einbindung in FHEM sieht dann wie folgt aus:

define dwd_warnmeldung weblink iframe http://www.dwd.de/dyn/app/ws/html/reports/BXX_warning_de.html
attr dwd_warnmeldung group Wetterwarnungen (DWD)
attr dwd_warnmeldung htmlattr width="100%" height="300" frameborder="0" marginheight="0" marginwidth="0"
attr dwd_warnmeldung room Wettervorhersage,Startseite

Modul CDCOpenData

Das Modul CDCOpenData stellt einen Teil der frei verfügbaren Daten des DWD-Climate Data Center (CDC) bereit, die über den CDC Open Data Server abgerufen werden können (diverse Datenformate, keine API). Es handelt sich dabei um Klimadaten, die zum Teil mehrere Jahre zurückreichen.

Besonders interessant sind die pro Tag gefallenen Regenmengen. Sie beruhen auf Regenradar-Messungen, deren Werte an die gemessenen Mengen der Wetterstationen angeeicht wurden. Die räumliche Auflösung beträgt dabei 1 km. Das Modul 98_CDCOpenData.pm ermittelt die innerhalb 24 Stunden gefallenen Regenmengen der letzten Tage sowie die seit Mitternacht gefallene Regenmenge.

Das kann z.B. für eine Bewässerungssteuerung genutzt werden, genauso wie die für die nächsten zwei Stunden vorhergesagten Regenintensitäten, die ebenfalls mit dem Modul abrufbar sind.

Vorhersage-Diagramm von YR

YR ist die Seite des norwegischen Wetterdiensts. Er ist zwar nur in Teilen auf Englisch (und gar nicht auf Deutsch) verfügbar, bietet aber sehr gute Wettervorhersagen - auch mit eigenen Vorhersagen für kleine Dörfer. Neben etlichen Detailinfos bietet YR eine sehr schicke 48h-Vorhersage-Grafik. Diese kann sehr einfach via weblink iframe in FHEM eingebunden werden.

Dazu geht man auf die Startseite von YR und gibt in das Suchfeld den Namen seines Dörfchens ein - die Ergebnissliste kann ziemlich lang werden, sodass man evtl. sehr genau schauen muss, welches das eigene Kaff ist - bei mir war es an 29. Stelle... ;-) Auf der gewünschten Seite gibt es einen Unterpunkt "Forecast as SVG", wo sich die besagte Grafik findet. Hier kopiert man sich einfach die URL der Grafik.

Die Einbindung in FHEM sieht dann bspw. wie folgt aus:

define Wetter_yr_Vorhersage weblink iframe https://www.yr.no/en/content/2-2950159/meteogram.svg
attr Wetter_yr_Vorhersage group Wettervorhersage (yr)
attr Wetter_yr_Vorhersage htmlattr width="782" height="391" frameborder="0" marginheight="0" marginwidth="0"
attr Wetter_yr_Vorhersage room Wettervorhersage,Start

Wetter von Weather Underground

X mark.svgDas ("offene") API von Weather Underground wird derzeit (März 2019) "retired" = abgestellt, ist also künftig nicht mehr nutzbar! Den benötigten API-Key bekommen "nur noch" Betreiber einer Wetterstation, die diese bei wundergound registrieren und ihre Daten hochladen.

Hinweis: Die hier beschriebene Vorgehensweise ist etwas anspruchsvoller und somit eher für erfahrene FHEM-User geeignet.

Weather Underground bietet eine sehr umfassende Sammlung aller möglichen offiziellen und privaten (aber teils sehr professionellen) Wetterstationen weltweit. Es besteht eine recht hohe Wahrscheinlichkeit, dass es in der eigenen Umgebung schon eine Wetterstation gibt. Anstatt nun selbst eine komplette Wetterstation aufzubauen, kann man alternativ auf die Daten der Nachbarstation zugreifen.

Emblem-question-yellow.svgNeben dem hier vorgestellten Abruf der Weather Underground-Daten mit HTTPMOD kann auf Weather Underground-Daten auch mit dem darauf spezialisierten Modul Wunderground zugegriffen werden.


Dazu sind grundsätzlich die folgenden Schritte notwendig:

  • Finden der geeigneten Station
  • Auswerten der XML-Daten
  • Erstellen passender gplot-Dateien

Finden der geeigneten Station

Als erstes geht man auf die Startseite von Weather Underground und gibt in das Suchfeld den Namen seines Dörfchens oder der nächsten Stadt ein - für Berlin landet man bspw. auf Seite für "Berlin Alexanderplatz". Es gibt aber manchmal sehr viele Wetterstationen in der direkten Umgebung. Diese findet man indem am auf "Change Station" klickt und sich eine passende Station aussucht. Nähere Infos (zB. zur verwendeten Hard- und Software) zu der gewählten Wetterstation erhält man, wenn man auf den Namen der Station klickt und dann auf "About this PWS".

Weather Underground stellt die Daten der Wetterstation auch über eine API als XML bereit, die wir auswerten können. Die entsprechende URL findet sich ebenfalls unter "About this PWS" unter "Download current conditions XML". Für Berlin Prenzlauer Berg wäre dies z.B. http://api.wunderground.com/weatherstation/WXDailyHistory.asp?ID=IBERLIN15&format=XML.

Entscheidend für die jeweilige Station ist der Teil nach "?=ID", also in diesem Fall "IBERLIN15". Dieser Teil des Links lässt sich leicht durch die ID einer anderen Station ersetzen und die Suche nach dem entsprechenden Link auf der Seite der Station bleibt erspart.

Auswerten der XML-Daten

Die Auswertung der XML-Daten erfolgt via HTTPMOD. Da dies nicht ganz trivial ist, sind im Folgenden zuerst die wesentlichen Konfigurationsschritte exemplarisch beschrieben. Weiter unten findet sich dann die fertige vollständige Konfiguration.

Es erstes wird das Device HTTPMOD definiert (die 600 am Schluss ist der Aktualisierungszyklus in Sekunden, also alle 10 min):

define wetter_prenzelberg HTTPMOD http://api.wunderground.com/weatherstation/WXCurrentObXML.asp?ID=IBERLIN15 600

Dann werden Attribute für alle Readings definiert:

attr wetter_prenzelberg userattr readingsName_cloudiness readingsName_date ...

Dann wird jedem Attribut ein Name zugewiesen (unter diesem Namen wird der Wert ins Log geschrieben):

attr wetter_prenzelberg readingsName_cloudiness cloudiness

Zum Schluss wird das Reading selbst definiert:

attr wetter_prenzelberg readingsRegex_cloudiness cloudiness id="NN" percent="([\d\.]+)

Die gesamte Konfiguration für alle von der API angebotenen Wetterwerte sieht dann wie folgt aus:

define wetter_prenzelberg HTTPMOD http://api.wunderground.com/weatherstation/WXCurrentObXML.asp?ID=IBERLIN15 600
attr wetter_prenzelberg userattr readingsName_cloudiness readingsName_date readingsName_dewpointTemperature readingsName_fog readingsName_heatindex readingsName_humidity readingsName_pressure readingsName_solarRadiation readingsName_solarUV readingsName_temperature readingsName_time readingsName_windChill readingsName_windDegrees readingsName_windDirection readingsName_windGust readingsName_windSpeed readingsRegex_cloudiness readingsRegex_date readingsRegex_dewpointTemperature readingsRegex_fog readingsRegex_heatindex readingsRegex_humidity readingsRegex_pressure readingsRegex_solarRadiation readingsRegex_solarUV readingsRegex_temperature readingsRegex_time readingsRegex_windChill readingsRegex_windDegrees readingsRegex_windDirection readingsRegex_windGust readingsRegex_windSpeed
attr wetter_prenzelberg readingsName_cloudiness cloudiness
attr wetter_prenzelberg readingsName_date date
attr wetter_prenzelberg readingsName_dewpointTemperature dewpointTemperature
attr wetter_prenzelberg readingsName_fog fog
attr wetter_prenzelberg readingsName_heatindex heatindex
attr wetter_prenzelberg readingsName_humidity humidity
attr wetter_prenzelberg readingsName_pressure pressure
attr wetter_prenzelberg readingsName_solarRadiation solarRadiation
attr wetter_prenzelberg readingsName_solarUV solarUV
attr wetter_prenzelberg readingsName_temperature temperature
attr wetter_prenzelberg readingsName_time time
attr wetter_prenzelberg readingsName_windChill windChill
attr wetter_prenzelberg readingsName_windDegrees windDegrees
attr wetter_prenzelberg readingsName_windDirection windDirection
attr wetter_prenzelberg readingsName_windGust windGust
attr wetter_prenzelberg readingsName_windSpeed windSpeed
attr wetter_prenzelberg readingsRegex_cloudiness cloudiness id="NN" percent="([\d\.]+)
attr wetter_prenzelberg readingsRegex_date date date" content="([\d\.]+)
attr wetter_prenzelberg readingsRegex_dewpointTemperature <dewpoint_c>(\+|-?[\d\.]+)
attr wetter_prenzelberg readingsRegex_fog fog id="FOG" percent="([\d\.]+)
attr wetter_prenzelberg readingsRegex_heatindex <heat_index_c>(\+|-?[\d\.]+)
attr wetter_prenzelberg readingsRegex_humidity <relative_humidity>([\d\.]+)
attr wetter_prenzelberg readingsRegex_pressure <pressure_mb>([\d\.]+)
attr wetter_prenzelberg readingsRegex_solarRadiation <solar_radiation>([\d\.]+)
attr wetter_prenzelberg readingsRegex_solarUV <UV>([\d\.]+)
attr wetter_prenzelberg readingsRegex_temperature <temp_c>(\+|-?[\d\.]+)
attr wetter_prenzelberg readingsRegex_time time Zeit([\d\:]+)
attr wetter_prenzelberg readingsRegex_windChill <windchill_c>(\+|-?[\d\.]+)
attr wetter_prenzelberg readingsRegex_windDegrees <wind_degrees>([\d\.]+)
attr wetter_prenzelberg readingsRegex_windDirection <wind_dir>([\d\.]+)
attr wetter_prenzelberg readingsRegex_windGust <wind_gust_mph>([\d\.]+)
attr wetter_prenzelberg readingsRegex_windSpeed <wind_mph>([\d\.]+)

Hinweis: Nicht immer werden alle Werte geliefert (wenn keine Sonne, dann kein UV-Wert...). Im System-Log kann das als Fehler auftauchen, ist aber kein Problem.

Erstellen passender gplot-Dateien

Um die ausgelesenen Werte als Graphen darstellen zu können müssen eigene gplot-Dateien erstellt werden. Eine grundsätzliche Anleitung dazu findet sich unter Creating Plots. Deshalb sollen hier nur Beispiele für die eigentlichen gplot-Dateien vorgestellt werden. Beispiele sollten sowohl für FileLog wie DbLog funktionieren.

Temperatur und Luftfeuchte:

set terminal png transparent size <SIZE> crop
set output '<OUT>.png'
set xdata time
set timefmt "%Y-%m-%d_%H:%M:%S"
set xlabel " "
#set title '<L1>'
set title ''
set ytics 
set y2tics 
set grid ytics
set ylabel "Temperature in C"
set y2label "Humidity (%)"

#FileLog 4:temperature\x3a::
#FileLog 4:windChill\x3a::
#FileLog 4:humidity\x3a::

#DbLog <SPEC1>:temperature::
#DbLog <SPEC1>:windChill::
#DbLog <SPEC1>:humidity::

plot "<IN>" using 1:2 axes x1y1 title 'Temperatur (C)' ls l0 lw 1.5 with lines,\
     "<IN>" using 1:2 axes x1y1 title 'Gefühlte Temperatur (C)' ls l1 lw 1.5 with lines,\
     "<IN>" using 1:2 axes x1y2 title 'Luftfeuchtigkeit (%)' ls l2fill lw 0.2 with lines

Wind und Windrichtung:

set terminal png transparent size <SIZE> crop

set output '<OUT>.png'
set xdata time
set timefmt "%Y-%m-%d_%H:%M:%S"
set xlabel " "

set ytics
set y2tics ("Nord" 0, "Ost" 80, "Süd" 180, "West" 270, "Nord" 360)

#set title '<L1>'
set title ''

set grid xtics ytics

set yrange [0:20]
set y2range [0:360]

set ylabel "Wind (mph)"
set y2label "Richtung"

#FileLog 4:windSpeed:0:
#FileLog 4:windGust:0:
#FileLog 4:windDegrees:0:

#DbLog <SPEC1>:windSpeed::
#DbLog <SPEC1>:windGust::
#DbLog <SPEC1>:windDegrees::

plot "<IN>" using 1:2 axes x1y1 title 'Wind (mph)' ls l0 lw 1.5 with lines,\
     "<IN>" using 1:2 axes x1y1 title 'Böen (mph)' ls l1 lw 1.5 with lines,\
     "<IN>" using 1:2 axes x1y2 title 'Windrichtung (°)' ls l2fill lw 0.2 with points

Sonnenintensität und UV-Werte:

set terminal png transparent size <SIZE> crop

set output '<OUT>.png'
set xdata time
set timefmt "%Y-%m-%d_%H:%M:%S"
set xlabel " "

set ytics
set y2tics

#set title '<L1>'
set title ''

set grid xtics ytics

set ylabel "Sonnenstrahlung (W/qm)"
set y2label "UV"

#FileLog 4:solarRadiation:0:
#FileLog 4:solarUV:0:

#DbLog <SPEC1>:solarRadiation::
#DbLog <SPEC1>:solarUV::

plot "<IN>" using 1:2 axes x1y1 title 'Strahlung' ls l0 lw 1.5 with lines,\
     "<IN>" using 1:2 axes x1y1 title 'UV' ls l1 lw 1.5 with lines

Weitere TBD

Vergangene Daten abfragen

Ein konkretes vergangenes Datum der Wetterstation kann man übrigens auch abrufen - für den 28.11.2014 wäre dies bspw. http://www.wunderground.com/weatherstation/WXDailyHistory.asp?ID=IBERLIN15&day=28&month=11&year=2014&graphspan=day&format=1.

Eigene Wetterdaten hochladen

Info green.pngUnterstützung für das Modul gibt es im dazugehörigen Forumsthread.

Wer eigene Wetterdaten hochladen will, kann hierzu das Modul WUup verwenden. Dazu benötigt man die Zugangsdaten (stationID und Paßwort) für eine eigene Wetterstation. Mit dem Modul können die meisten vom PWS Upload Protocol unterstützten Daten hochgeladen werden:

  • Winddir - [0-360 momentane Windrichtung]
  • Windspeedmph - [mph momentane Windgeschwindigkeit]
  • Windgustmph - [mph aktuellen Böe, mit Software-spezifischem Zeitraum]
  • Windgustdir - [0-360 mit Software-spezifischer Zeit]
  • Windspdmph_avg2m - [mph durchschnittliche Windgeschwindigkeit innerhalb 2 Minuten]
  • Winddir_avg2m - [0-360 durchschnittliche Windrichtung innerhalb 2 Minuten]
  • Windgustmph_10m - [mph Böen der vergangenen 10 Minuten]
  • Windgustdir_10m - [0-360 Richtung der Böen der letzten 10 Minuten]
  • Feuchtigkeit - [% Außenfeuchtigkeit 0-100%]
  • Dewptf- [F Taupunkt im Freien]
  • Tempf - [F Außentemperatur]
  • Rainin - [in Regen in der vergangenen Stunde]
  • Dailyrainin - [in Regenmenge bisher heute]
  • Baromin - [inHg barometrischer Druck]
  • Soiltempf - [F Bodentemperatur]
  • Bodenfeuchtigkeit - [%]
  • Solarradiation - [W/m²]
  • UV - [Index]
  • AqPM2.5 - Feinstaub PM2,5 [µg/m³]
  • AqPM10 - Feinstaub PM10 [µg/m³]

Die Werte werden im Modul für Wunderground ins anglo-amerikanische System umgerechnet. Temperaturen werden also automatisch von °Celsius in Fahrenheit, Windgeschwindigkeiten von km/h in mph, mm in Inch und der barometrische Druck von hPa in inHg umgerechnet.

Wetternetzwerk auf wetter.com

Ein vollständiges Beispiel zur Nutzung der Informationen über die Regenmenge (Station 1445, Weinheim) von wetter.com ist in diesem Forenbeitrag beschrieben.

Wetter von netatmo

Das FHEM-Modul netatmo ermöglicht den Datenimport von privaten und öffentlichen netatmo Wetterstationen sowie den Abruf der in der Netatmo App verfügbaren Wettervorhersage. Eine Übersicht über die verfügbaren öffentlichen Stationen findet sich auf der Seite Weathermap. Die meisten öffentlichen Stationen liefern Temperatur, Luftfeuchte und Luftdruck, einige auch Wind, Regen und Daten zur Luftqualität (CO2).

Links