DWD_OpenData

Aus FHEMWiki


Info blue.png
Versionsänderung: Die Vorhersagedaten wurden Mitte September 2018 von CSV auf KML umgestellt. Diese Umstellung ist inkompatibel: das DWD_OpenData-Modul muss aktualisiert werden, einige Reading-Namen haben sich geändert und der Weblink muss deinstalliert und neu installiert werden (siehe diesen Beitrag im Forum).



DWD_OpenData
Zweck / Funktion
Daten vom DWD OpenData Server abrufen
Allgemein
Typ Gerätemodul
Details
Dokumentation EN / DE
Support (Forum) Unterstützende Dienste/Wettermodule
Modulname 55_DWD_OpenData.pm
Ersteller JensB (Forum /Wiki)
Wichtig: sofern vorhanden, gilt im Zweifel immer die (englische) Beschreibung in der commandref!


Der Deutsche Wetterdienst (DWD) stellt Wetterdaten über den Open Data Server zur Verfügung. Die Verwendung dieses Dienstes und der vom DWD zur Verfügung gestellten Daten unterliegt den auf der OpenData Webseite beschriebenen Bedingungen. Einen Überblick über die verfügbaren Daten findet man in der Tabelle OpenData_weather_content.xls.


Anwendung

Aufgrund der unterschiedlichen vom DWD bereitgestellten Datenformate benötigt das Modul zur Dekodierung je nach gewünschtem Funktionsumfang zusätzliche Perl-Module, die nicht standardmäßig vorinstalliert sind und je nach Systemkonfiguration nachinstalliert werden müssen. Außerdem unterstützt das Modul Zeitzonen, um z.B. die Wettervorhersage internationaler Stationen in Ortszeit darstellen zu können. Hierfür sind je nach Systemkonfiguration weitere Einstellungen erforderlich. Auch die Sprache der Wochentage für die Wettervorhersage ist frei wählbar. Je nach Systemkonfiguration ist aber die Standardsprache u.U. auf Englisch eingestellt, was weitere Anpassungen der Systemkonfiguration erforderlich macht.

Vorbereitung

Im folgenden wird z.T. von einem System mit Rasbian oder Debian mit System-V Startsystem ausgegangen. Auf anderen Betriebssystemen und auf Systemen mit System-D müssen die Installationsschritte ggf. angepasst werden.


1. Für die Wettervorhersage und die Wetterwarnungen: Installation des Perl-Moduls XML::LibXML über die System-Kommandozeile mit

 sudo apt-get install libxml-libxml-perl

oder mit CPAN.


2. Falls man einen eigenen Internet-Proxy nutzt: Die Konfiguration des Proxies für FHEM erfolgt z.B. durch Eintrag von

 attr global proxy <myProxyHost>:<myProxyPort>

in die Konfiguration, wobei myProxyHost durch den Namen oder die IP-Adresse des Proxy-Servers ersetzt werden muss und für myProxyPort der Port des Proxy-Servers eingetragen werden muss (oft 3128).


3. FHEM Uhrzeit und Zeitzone: Durch Eingabe von

 {localtime()}

in die FHEM-Kommandozeile überprüfen, ob die FHEM-Uhrzeit plausibel ist. Ist dies nicht der Fall sollten die Uhrzeit auf Systemebene überprüft werden und ggf. die Systemeinstellungen angepasst werden. Ermitteln der Bezeichnung der eigenen Zeitzone über die System-Kommandozeile mit

  tzselect

und diese Bezeichnung in die Datei /etc/timezone eintragen und

 export TZ=`cat /etc/timezone`

der Datei /etc/profile hinzufügen und dann das System neu starten. Nun muss die Zeitanzeige in FHEM korrekt sein.


4. FHEM Sprache: Durch Eingabe von

 {localtime()}

in die FHEM-Kommandozeile überprüfen, in welcher Sprache der Wochentag angezeigt wird. Stimmt die Sprache nicht, dann auf der System-Kommandozeile

 dpkg-reconfigure locales

eingeben und aus der Liste z.B. de_DE.UTF-8 zusätzlich auswählen. Dieser Befehl gilt für Debian-basierte Betriebssysteme - für andere Betriebssysteme ist eine analoge Funktion zu verwenden. Mit Eingabe von

 locale -a

auf der System-Kommandozeile überprüfen, ob die ausgewählte Sprache nun zur Verfügung steht. Durch Hinzufügen von z.B.

 export LANG=de_DE.UTF-8

in die Datei /etc/init.d/fhem (irgendwo zwischen start und perl) und anschließendem Neustart von FHEM wird die Sprache für FHEM eingestellt. Nun muss die Wochentagsanzeige in FHEM korrekt sein.


5. Nur für den Weblink erforderlich: Installation des Perl-Moduls DateTime über die System-Kommandozeile mit

 sudo apt-get install libdatetime-perl

oder mit CPAN.


Define

siehe Commandref.

Attributes

siehe Commandref.

Anwendungsbeispiele

Beispiel zur Modul-Einrichtung

  • Wettervorhersage

Für die Wettervorhersage muss der Stationscode ermittelt werden. Dazu den MOSMIX Stationskatalog herunterladen, öffnen und die gewünschte Station heraussuchen. Einen Teil der deutschen Stationen kann man auch der Bodenmessnetzkarte entnehmen. Den ermittelten Stationscode kann man dann entweder für eine Einzelabfrage als Parameter für das Kommando get forecast verwenden oder für die automatische Aktualisierung als Attribut forecastStation hinterlegen. Insgesamt werden vom DWD mehr als 70 Merkmale zur Verfügung gestellt. Eine Auflistung findet sich im Dokument MetElementDefinition. Nur ein kleiner Teil der Merkmale wird in der Standardeinstellung des Moduls als Reading zur Verfügung gestellt. Wer andere Merkmale benötigt muss sie mit Komma getrennt dem Attribut forecastProperties zuweisen. Es empfiehlt sich zur Performance-Optimierung sowohl das Attribut forecastDays als auch das Attribut forecastProperties auf den tatsächlichen Bedarf einzustellen.

  • Wetterwarnungen

Für die Wetterwarnungen muss die Warnzelle ermittelt werden. Dazu Warnzellen-ID Katalog herunterladen, öffnen und die gewünschte Warnzelle heraussuchen. Unterstützt werden Gemeinden (beginnen mit 8), Landkreise (beginnen mit 1 oder 9) oder Küste (beginnen mit 5). Die Warnzellen-ID kann man dann entweder für eine Einzelabfrage als Parameter für das Kommando get alerts verwenden oder für die automatische Aktualisierung als Attribut alertArea hinterlegen. Die Warnzellen-ID ist ab der 2. Stelle identisch mit den ersten Ziffern des amtlichen Gemeindeschlüssels. Man kann z.B. den Namen von Gemeinde oder Landkreis bei den Statistischen Ämtern des Bundes und der Länder eingeben, den amtlichen Gemeindeschlüssels ermitteln und dann mit vorangestellter 1, 8 oder 9 im Warnzellen-ID Katalog des DWD nach einem Eintrag mit exakter oder weitgehender Übereinstimmung suchen. Wem das zu kompliziert vorkommt, kann bei mehrdeutigen Gemeinde- bzw. Landkreisbezeichnungen auch versuchen auszuprobieren, welche die richtige Wanrzellen-ID ist.

Um das Modul mit automatisch Aktualisierung von Vorhersage und Wetterwarnungen zu nutzen, kann z.B. folgendes in die Konfiguration eingetragen werden:

 define DWD DWD_OpenData
 attr DWD alertArea 111000000
 attr DWD forecastStation 99810
 attr DWD forecastDays 3
 attr DWD forecastWW2Text 1
  • Performance

Das DWD_OpenData-Modul ist ein Datenmodul mit relativ vielen Readings. In der Standardkonfiguration wird, wie bei jedem anderen FHEM Modul, bei jeder Änderung jedes Readings ein FHEM internes Ereignis erzeugt, damit andere FHEM Devices auf diese Änderungen reagieren können. Diese Ereignisse sorgen auch dafür, dass man Änderungen in der Weboberfläche sofort angezeigt bekommt, ohne die Webseite neu aufzurufen. Interessiert sich aber kein FHEM Device für die Änderungsbenachrichtung bestimmter Readings, entsteht unnötiger Verarbeitsoverhead, der je nach FHEM Konfiguration und verfügbarer CPU-Leistung auch mehrere Sekunden benötigen kann und in dieser Zeit andere Abläufe blockiert. Um die Performance zu optimieren, empfiehlt es sich, mit event-on-update-reading für eine angepasste und dadurch effizientere Verarbeitung sorgen, indem man nur für die Readings Ereignisse zulässt, die man für die Weiterverarbeitung braucht. Der DWD_OpenData_Weblink braucht z.B. gar keine Ereignisse, um zu funktionieren. Hier eine minimalistische Beispielkonfiguration:

 attr DWD event-on-update-reading state,fc_state,a_state

Weitere Details zur Installation und Konfiguration des Moduls finden sich in der Commandref.

Beispiel für die Einrichtung eines Weblinks

Zur graphischen Darstellung der Vorhersage und der Wetterwarnungen steht das Modul 55_DWD_OpenData_Weblink.pm zur Verfügung.

Zunächst die Moduldatei herunterladen und in das Modulverzeichnis fhem/FHEM kopieren. Entweder die Datei direkt auf den FHEM-Server herunterladen (z.B. mit wget) oder beim indirekten Herunterladen darauf achten, dass dabei das Encoding nicht verändert wird (also z.B. bei WinSCP den Binär-Modus und nicht den Text-Modus verwenden). Ansonsten werden später z.B. Sonderzeichen wie °C falsch angezeigt.

Anschließend kann in die Konfiguration z.B. folgendes eingetragen werden:

 define DWD_Weblink_Generator DWD_OpenData_Weblink
 attr DWD_Weblink_Generator IODev DWD
 attr DWD_Weblink_Generator forecastDays 4
 # refreshRate nur dann setzten, wenn der Browser Java-Script beherrscht:
 attr DWD_Weblink_Generator refreshRate 900
 
 define DWD_Weblink weblink htmlCode { DWD_OpenData_Weblink::AsHtmlH("DWD_Weblink_Generator") } 

Damit legt man das Weblink-Generator-Device an und verknüpft es mit dem DWD_OpenData-Device. Außerdem wird der weblink selbst angelegt, der seinerseits mit dem Weblink-Generator-Device verknüpft wird. Der Weblink benötigt für seine Funktion eine bestimmte Auswahl der Vorhersage-Merkmale. Wer das Attribut forecastProperties des DWD_OpenData-Moduls anpassen will, muss diese Merkmale auf jeden Fall mit berücksichtigen.

Wenn vom Weblink nichts im Browser zu sehen ist, kann das daran liegen, dass der Browser kein aktuelles JavaScript verwendet oder JavaScript deaktiviert ist. Dann sollte das Attribut refreshRate auf 0 Sekunden eingestellt oder gelöscht werden. Mit aktiviertem Refresh werden die Daten auch ohne Seitenneuaufbau regelmäßig und bei Tab-Wechsel aktualisiert.

Die Liste der erforderlichen Vorhersage-Merkmale finden sich zusammen mit allen weitere Details zur Installation und Konfiguration in der Modulhilfe von 99_DWD_OpenData_Weblink.pm, die man z.B. nach dem Anlegen des Weblink-Generator-Devices über die Weboberfläche abrufen kann.

Hier ein Ausschnitt aus der Darstellung des Weblinks mit FHEMWEB:

DWDODweblink.png