DWD OpenData: Unterschied zwischen den Versionen
JensB (Diskussion | Beiträge) K (Installationshinweise ergänzt) |
JensB (Diskussion | Beiträge) (Hinweis zur Performance-Optimierung) |
||
Zeile 106: | Zeile 106: | ||
</pre> | </pre> | ||
Weitere Details zur Installation und Konfiguration finden sich in der [https://fhem.de/commandref.html#DWD_OpenData Commandref]. | * 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: | |||
<pre> | |||
attr DWD event-on-update-reading state,fc_state,a_state | |||
</pre> | |||
Weitere Details zur Installation und Konfiguration des Moduls finden sich in der [https://fhem.de/commandref.html#DWD_OpenData Commandref]. | |||
=== Beispiel für die Einrichtung eines Weblinks === | === Beispiel für die Einrichtung eines Weblinks === |
Version vom 16. Dezember 2018, 21:18 Uhr
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 |
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 99_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: