GDS
GDS | |
---|---|
Zweck / Funktion | |
Herunterladen und Auswerten von Daten des Deutschen Wetterdienstes | |
Allgemein | |
Typ | Gerätemodul |
Details | |
Dokumentation | EN / DE Thema |
Support (Forum) | Unterstuetzende Dienste |
Modulname | 55_GDS.pm |
Ersteller | betateilchen |
Wichtig: sofern vorhanden, gilt im Zweifel immer die (englische) Beschreibung in der commandref! |
GDS ist ein Modul, mit dessen Hilfe man sich die Daten des Deutschen Wetterdienstes herunterladen kann und dann Wetterlage, diverse Wetterkarten und/oder Unwettermeldungen anzeigen/auswerten kann.
Voraussetzungen
Anmeldung beim DWD
Als erstes muss man sich beim Deutschen Wetterdienst zur Grundversorgung kostenlos anmelden.
Installation der benötigten Perl-Module
GDS benötigt die Perl-Module Net::FTP, List::MoreUtils, XML::Simple, Text::CSV.
Für Ubuntu und Raspi sollte funktionieren:
apt-get install libnet-lite-ftp-perl liblist-moreutils-perl libxml-simple-perl libtext-csv-perl
Das ftp-Modul verursacht manchmal Probleme bei der Installation. Teilweise ist es wohl auch schon in der Grundinstallation vorhanden, ansonsten kann man versuchen:
apt-get install libnet-ftp-perl
oder
apt-get install libwww-perl
Anwendung
Define
define [gdsName] GDS [gdsUsername] [gdsPasswort]
[gdsUsername] und [gdsPasswort] gibt es nach Anmeldung vom DWD.
Attribute
Die vollständige Liste der Attribute ist in der commandref.
Station setzen, für die beim fhem-Start die Daten eingelesen werden sollen:
attr [gdsName] gdsSetCond [Station]
Hilfreich kann u.a. sein, wenn man hinter eine Firewall sitzt und der Datenabruf nicht funktioniert:
attr [gdsName] gdsPassiveFtp 1
Anwendung
Liste der verfügbaren Wetterstationen abrufen
get [gdsName] list stations
Liste der verfügbaren Zellen für Warnungen abrufen
get [gdsName] list capstations
Manuelle Aktualisierung der Daten
Aktuelle Daten vom Server abrufen
set [gdsName] rereadcfg
Readings aus abgerufenen Daten aktualisieren
set [gdsName] update
Station setzen für automatischen, periodischen Abruf
set [gdsName] conditions [Station]
Automatisch abgerufen (alle 20 Minuten) werden nur die mit c_ beginnenden Readings. Die a_ Readings (Warnungen, etc.) müssen manuell aktualisiert werden.
Unwetterwarnungen nach Region aus gelesenen Daten raussuchen
set [gdsName] warnings [Region]
z.B.: set gds warn Nordrhein-Westfalen
Die Region kann ausgeschrieben oder mit den offiziellen Abkürzungen bezeichnet werden.
Unwetterwarnungen granularer nach Kreis aus gelesenenen Daten raussuchen
set [gdsName] alerts [Warncell-ID]
Die passende Warncell-ID kann man sich über get [gdsName] list capstations
heraussuchen.
Ob es passende Warnmeldungen gibt, kann dann über das Reading a_valid
abgefragt werden. Wenn a_valid
1 ist, gibt a_count
die Anzahl der vorhandenen Warnmeldungen an. Die Warnungen stehen dann in den Readings a_X_...
, wobei X ab 0 hochzählt. D.h. wenn a_count
2 ist, gibt es a_0_... und a_1_... Ein praktisches Reading ist z.B. a_X_headline
, das die Zusammenfassung der jeweiligen Warnung als kurze Textzusammenfassung enthält.
Alle eingelesenen Warnmeldungen kann man sich über die Funktion gdsHeadlines()
ausgeben lassen. Z.B. einfach in der Befehlszeile von fhem eingeben:
{gdsHeadlines([gdsName])}
Wer möchte, kann auch das Trennzeichen bei mehreren Meldungen konfigurieren:
{gdsHeadlines([gdsName],'[Trennzeichen]')}
Z.B. also
{gdsHeadlines(gds, '***')}
Standard für das Trennzeichen ist der senkrechte Strich.
Jedenfalls nach attr [gdsName] gdsLong 1
werden in a_X_description die Langmeldungen zu den Warnungen ausgegeben.
Aktuelles Wetter abrufen
get [gdsName] conditions [Station]
Karten abrufen
Wetterlage: get [gdsName] conditionsmap [Station]
Vorhersage: get [gdsName] forecastsmap [Station]
Warnungen: get [gdsName] warningsmap [Station]
Radar: get [gdsName] radarmap [Station]
Anwendungsbeispiele
Für GDS sollten die Daten regelmäßig aktualisiert werden. Dafür richtet man am besten zwei zeitlich nacheinander laufende ats ein:
Einen zum Holen aktualisierter Daten vom Server:
define readGDS at +*00:10:00 get [gdsName] rereadcfg attr readGDS alignTime 22:30:05
Einen zweiten, der danach läuft, der aus den aktualisierten Serverdaten dann die Readings aktualisiert; z.B. für die Alerts:
define checkGDS at +*00:10:00 get [gdsName] alerts [Region] attr checkGDS alignTime 22:35:05
Wichtig ist, dass beide at zeitlich auseinander liegen, im vorstehenden Beispiel durch die unterschiedlichen "alignTime" Attribute um 5 Minuten.
Karten regelmäßig vom Server neu laden
define Karten at +*00:30:00 get [gdsName] radarmap Nordost; get [gdsName] conditionsmap Nordost; get [gdsName] warningsmap Berlin
Hinweis: Die vorstehende Schreibweise ist die Schreibweise im Editiermodus der Weboberfläche von fhem. Wer die Zeile per copy & paste direkt in die Kommandozeile eintragen will, muss die Semikolons verdoppeln, sonst geht alles nach dem ersten Semikolon verloren.
Also:
define Karten at +*00:30:00 get [gdsName] radarmap Nordost;; get [gdsName] conditionsmap Nordost;; get [gdsName] warningsmap Berlin