Wetter und Wettervorhersagen: Unterschied zwischen den Versionen

Aus FHEMWiki
(Kapitel "Vorhersage-Diagramm von YR" erstellt)
(Kapitel "Wette von Weather Underground" erstellt)
Zeile 28: Zeile 28:


== Wetterwarnungen des DWD ==
== Wetterwarnungen des DWD ==
Der Deutsche Wetterdienst [http://www.dwd.de DWD] stellt neben diversen Wetterdaten auch Wetterwarungen bereit. Diese können sehr einfach via iframe in den fhem eingebunden werden - das ist zwar nicht die schönste Form, aber die schnellste. ;-)
Der Deutsche Wetterdienst [http://www.dwd.de DWD] stellt neben diversen Wetterdaten auch Wetterwarungen bereit. Diese können sehr einfach via [http://fhem.de/commandref_DE.html#weblink weblink iframe] in den fhem eingebunden werden - das ist zwar nicht die schönste Form, aber die schnellste. ;-)


Dazu geht 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 raus (in der Karte durchklicken). Die gewünschte URL für Berlin Stadt ist bspw. <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.
Dazu geht 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 raus (in der Karte durchklicken). Die gewünschte URL für Berlin Stadt ist bspw. <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.
Zeile 41: Zeile 41:


== Vorhersage-Diagramm von YR ==
== Vorhersage-Diagramm von YR ==
[http://www.yr.no YR] ist die Seite des norwegischen Wetterdiensts. Er ist zwar nur in Teilen auf Englisch (und garnicht auf Deutsch) verfügbar, bietet aber (meines Erachtens) die mit Abstand besten Wettervorhersagen - auch mit eigenen Vorhersagen für echt kleine Dörfer. Neben etlichen Detailinfos bietet YR eine sehr schicke 48h-Vorhersage-Grafik. Diese kann sehr einfach via iframe in den fhem eingebunden werden.
[http://www.yr.no YR] ist die Seite des norwegischen Wetterdiensts. Er ist zwar nur in Teilen auf Englisch (und garnicht auf Deutsch) verfügbar, bietet aber (meines Erachtens) die mit Abstand besten Wettervorhersagen - auch mit eigenen Vorhersagen für echt 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 den 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 "Hour by hour", wo sich die besagte Grafik findet. Hier kopiert man sich einfach die URL der Grafik.
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 "Hour by hour", wo sich die besagte Grafik findet. Hier kopiert man sich einfach die URL der Grafik.
Zeile 52: Zeile 52:
attr Wetter_yr_Vorhersage room Wettervorhersage,Start
attr Wetter_yr_Vorhersage room Wettervorhersage,Start
</pre>
</pre>
== Wetter von Weather Underground ==
'''Hinweis:''' Dieses Vorgehen ist etwas anspruchsvoller und somit eher für erfahrene fhem-user geeignet.
[http://www.wunderground.com/ Weather Underground] ist 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.
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 bspw.
<code>http://api.wunderground.com/weatherstation/WXDailyHistory.asp?ID=IBERLIN15&format=XML</code>.
=== Auswerten der XML-Daten ===
Die Auswertung der XML-Daten erfolgt via [http://fhem.de/commandref_DE.html#HTTPMOD HTTPMOD] (vgl. auch [[Geräte mit Web-Interface]]). Da dies nicht ganz trivial sind im Folgenden zuerst die wesentlichen Konfigurationen exemplarisch beschrieben. Weiter unten findet sich dann die fertige vollständige Konfiguration.
Es erstes wird das Device [http://fhem.de/commandref_DE.html#HTTPMOD HTTPMOD] definiert (die 600 am Schluss ist der Aktualisierungszyklus in Sekunden, also alle 10 min):
<pre>
define wetter_prenzelberg HTTPMOD http://api.wunderground.com/weatherstation/WXCurrentObXML.asp?ID=IBERLIN15 600
</pre>
Dann werden Attribute für alle Readings definiert:
<pre>
attr wetter_prenzelberg userattr readingsName_cloudiness readingsName_date ...
</pre>
Dann wird jedem Attribut ein Name zugewiesen (unter diesem Namen wird der Wert ins Log geschrieben):
<pre>
attr wetter_prenzelberg readingsName_cloudiness cloudiness
</pre>
Zum Schluss wird das Reading selbst definiert:
<pre>
attr wetter_prenzelberg readingsRegex_cloudiness cloudiness id="NN" percent="([\d\.]+)
</pre>
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 ===
'''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>.


== Links ==
== Links ==
[http://bloglich.de/art/rpi/wetterdaten-auf-dem-raspberry-pi-in-fhem/ Beispiel in Blog(de)]
[http://bloglich.de/art/rpi/wetterdaten-auf-dem-raspberry-pi-in-fhem/ Beispiel in Blog(de)]
[[Geräte mit Web-Interface]]


[[Kategorie:Code Snippets]]
[[Kategorie:Code Snippets]]
[[Kategorie:Wetter]]
[[Kategorie:Wetter]]

Version vom 15. Februar 2015, 19:58 Uhr

Wettervorhersagen können auf verschiedene Weise in den fhem eingebunden werden.

Yahoo-Wetter

Mit dem Weather command können Wettervorhersagen von der Yahoo Wetterseite abgefragt werden.

Zuerst einmal besuchen wir die Yahoo Wetterseite und öffnen den Wetterbericht für die jeweilige Stadt (z.B. Berlin). In der URL des Wetterberichtes findet sich dann die sogenannte WOEID (WHERE-ON-EARTH-ID). Sie identifiziert die Wetterinfos, die FHEM abfragen soll. Für Berlin ist dies die Nummer 638242.

In unserer fhem.cfg tragen wir dann folgendes ein:

# ————– Wetterdaten erfassen ————-
define MeinWetter Weather 638242 3600 de
attr MeinWetter room Wettervorhersage

# — Logfile alle Wetter Daten —
define FileLog_MeinWetter FileLog ./log/meinwetter-%Y-%m.log MeinWetter
attr FileLog_MeinWetter logtype text
attr FileLog_MeinWetter room Wettervorhersage

# attr MeinWetter localicons 1

# — Wetter Icons hinzufügen —
define weblink_meinwetter weblink htmlCode {WeatherAsHtml("MeinWetter")}
attr weblink_meinwetter room Wettervorhersage

Das hat zur Folge, dass FHEM nun die Wetterdaten für Berlin (638242) jede Stunde (3600) neu abholt.

Wetterwarnungen des DWD

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

Dazu geht sucht man sich zuerst auf der Warnungsseite des DWD die eigene Region raus (in der Karte durchklicken). Die gewünschte URL für Berlin Stadt ist bspw. 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 den fhem sieht dann bspw. 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

Vorhersage-Diagramm von YR

YR ist die Seite des norwegischen Wetterdiensts. Er ist zwar nur in Teilen auf Englisch (und garnicht auf Deutsch) verfügbar, bietet aber (meines Erachtens) die mit Abstand besten Wettervorhersagen - auch mit eigenen Vorhersagen für echt kleine Dörfer. Neben etlichen Detailinfos bietet YR eine sehr schicke 48h-Vorhersage-Grafik. Diese kann sehr einfach via weblink iframe in den 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 "Hour by hour", wo sich die besagte Grafik findet. Hier kopiert man sich einfach die URL der Grafik.

Die Einbindung in den fhem sieht dann bspw. wie folgt aus:

define Wetter_yr_Vorhersage weblink iframe http://www.yr.no/place/Germany/Berlin/Berlin/meteogram.png
attr Wetter_yr_Vorhersage group Wettervorhersage (yr)
attr Wetter_yr_Vorhersage htmlattr width="100%" height="300" frameborder="0" marginheight="0" marginwidth="0"
attr Wetter_yr_Vorhersage room Wettervorhersage,Start

Wetter von Weather Underground

Hinweis: Dieses Vorgehen ist etwas anspruchsvoller und somit eher für erfahrene fhem-user geeignet.

Weather Underground ist 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.

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 bspw. http://api.wunderground.com/weatherstation/WXDailyHistory.asp?ID=IBERLIN15&format=XML.

Auswerten der XML-Daten

Die Auswertung der XML-Daten erfolgt via HTTPMOD (vgl. auch Geräte mit Web-Interface). Da dies nicht ganz trivial sind im Folgenden zuerst die wesentlichen Konfigurationen 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

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.

Links

Beispiel in Blog(de)

Geräte mit Web-Interface