Daten vom Deutschen Wetterdienst (DWD) herunterladen und für WeeWX aufbereiten
Diese Daten können mit den Programmen vom DWD bezogen werden:
- vorberechnete Wettervorhersagen auf Stunden-, 3-Stunden- und
Tagesbasis
für die nächsten 10 Tage für
fast 6000 Orte überall auf der Welt (
dwd-mosmix
) - Warnmeldungen für Landkreise und Orte in Deutschland
(
dwd-warnings
unddwd-cap-warnings
) - Wetterkarten (
wget-dwd
)
Die Daten werden aufbereitet als:
- HTML-Dateien (
*.inc
) zum Einbinden in Skins mittels#include
- JSON-Dateien (
*.json
) zur maschinellen Weiterverarbeitung, z.B. mittels JavaScript im Browser forecast.json
zur direkten Verwendung mit der Belchertown-Skin
Wenn Sie Fehler melden wollen oder Hilfe benötigen, geben Sie bitte immer folgende Informationen mit an:
- die komplette Zeile, mit der Sie das Programm aufgerufen haben
- alles, was das Programm ausgegeben hat
- den Abschnitt
[DeutscherWetterdienst]
ausweewx.conf
, wenn es den gibt - Rufen Sie das Programm noch einmal auf und geben Sie dabei zusätzlich
den Parameter
--verbose
an. (Nicht beiwget-dwd
)
Alle Dateien müssen in die jeweiligen Verzeichnisse kopiert und mit chmod +x Dateiname
ausführbar gemacht werden.
Die Icons (Symbole) können beim DWD heruntergeladen werden:
Dieses Script lädt die Wetterkarten sowie die nötigen Dateien für dwd-warnings
vom Webserver des DWD herunter und speichert sie. Dabei wird eine Log-Datei unter /var/log/ abgelegt, aus der man ersehen kann, ob es geklappt hat.
Dieses Python-Script bereitet die JSONP-Datei des DWD mit den Wetterwarnungen auf und erzeugt daraus HTML-Texte.
Dazu müssen die gewünschten Landkreise in der vom DWD benutzten Schreibweise
in weewx.conf
eingetragen werden. Um herauszufinden, wie der Landkreis korrekt geschrieben werden muß, öffnet man die Datei warnings.json
, die von wget-dwd
heruntergeladen wurde, mit einem Browser, der JSON-Dateien anzeigen kann (z.B. Firefox). Dort kann man dann den gewünschten Landkreis suchen und sehen, wie er geschrieben wurde. Beachte: Wenn der Landkreis keine Warnungen hat, kommt er in der Datei gar nicht vor. Dann muß man warten, bis es wieder Warnungen gibt.
Namen der Landkreise in der Schreibweise des Deutschen Wetterdienstes
Dieses Python-Script ist eine Alternative zu dwd-warnings
. Im Gegensatz
zu diesem wertet es die CAP-Dateien des DWD aus, die nicht nur in einer
Auflösung auf Landkreisbasis sondern auch auf Gemeindebasis verfügbar
sind. dwd-cap-warnings
ist nicht auf einen vorherigen Aufruf von
wget-dwd
angewiesen. Es erzeugt dieselben Dateien wie dwd-warnings
.
Um es zu nutzen, muß der Aufruf von dwd-warnings
in /etc/cron.hourly/dwd
durch dwd-cap-warnings --weewx --resolution=city Z_CAP_C_EDZW_LATEST_PVW_STATUS_PREMIUMCELLS_COMMUNEUNION_DE.zip
ersetzt werden.
dwd-cap-warnings
kennt die folgenden Optionen:
Usage: dwd-cap-warnings [options] [zip_file_name [CAP_file_name]]
Without an option from the commands group HTML and JSON files are
created and saved according to the configuration.
Options:
-h, --help show this help message and exit
--config=CONFIG_FILE Use configuration file CONFIG_FILE.
--weewx Read config from weewx.conf.
--diff Use diff files instead of status files.
--resolution=VALUE Overwrite configuration setting for resolution.
Possible values are 'county' and 'city'.
--lang=ISO639 Alert language. Default 'de'
Output and logging options:
--dry-run Print what would happen but do not do it. Default is
False.
--log-tags Log tags while parsing the XML file.
-v, --verbose Verbose output
Commands:
--get-warncellids Download warn cell ids file.
--list-ii List defined II event codes
--list-zip Download and display zip file list
--list-cap List CAP files within a zip file. Requires zip file
name as argument
--print-cap Convert one CAP file to JSON and print the result.
Requires zip file name and CAP file name as arguments
Dieses Python-Script erzeugt eine Wettervorhersage in Tabellenform und eine JSON-Datei mit den Inhalten der Wettervorhersage.
Zur Darstellung sind folgende Ressourcen nötig:
- Wetter-Icons der Belchertown Skin oder des DWD
- Wetter-Icons von Erik Flowers
- zusätzliche CSS-Eintragungen
dwd-mosmix
kennt die folgenden Optionen:
Usage: dwd-mosmix [options] [station]
Options:
-h, --help show this help message and exit
--config=CONFIG_FILE Use configuration file CONFIG_FILE.
--weewx Read config from weewx.conf.
--orientation=H,V HTML table orientation horizontal, vertial, or both
--icon-set=SET icon set to use, default is 'belchertown', possible
values are 'dwd', 'belchertown', and 'aeris'
--lang=ISO639 Forecast language. Default 'de'
--aqi-source=PROVIDER Provider for Belchertown AQI section
--hide-placemark No placemark caption over forecast table
Output and logging options:
--dry-run Print what would happen but do not do it. Default is
False.
--log-tags Log tags while parsing the KML file.
-v, --verbose Verbose output
Commands:
--print-icons-ww Print which icons are connected to which ww weather
code
--html Write HTML .inc file
--json Write JSON file
--belchertown Write Belchertown style forecast file
--database Write database file
--print-uba=CMD download data from UBA
Intervals:
--all Output all details in HTML
--hourly output hourly forecast
--daily output daily forecast (the default)
Es können mehrere der unter "Commands" aufgeführten Optionen gleichzeitig benutzt werden.
Der DWD bietet eine Liste der Stationscodes zum Herunterladen an. Nur für die dort aufgeführten Orte sind Vorhersagen beim DWD verfügbar. Als Code ist der Wert aus der Spalte "id" zu verwenden.
Die HTML-Datei enthält, wenn nicht anders konfiguriert, zwei Tabellen,
eine mit waagerechter Ausrichtung für PC-Bildschirme und eine in
senkrechter Ausrichtung für Telefone. Durch die HTML-Klassenzuordnung
hidden-xs
und visible-xs-block
ist immer nur eine davon sichtbar.
Mit der Option --orientation
kann aber auch eine von beiden fest
ausgewählt werden. Die möglichen Werte sind h
oder v
(kann auch
ausgeschrieben werden).
Die Option --icon-set
gibt an, für welchen Wettersymbolsatz die
Dateien erzeugt werden sollen, den der Belchertown-Skin oder den
des Deutschen Wetterdienstes.
Die Spracheinstellung betrifft nur die Wochentage, bei Englisch auch
die Tooltips der Wettersymbole. Verfügbar ist de
, en
, fr
, it
und cz
.
Dieses Script sorgt dafür, daß die beiden Scripte wget-dwd
und dwd-warnings
regelmäßig aufgerufen werden.
Der Aufruf von dwd-warnings
kann auch durch
/usr/local/bin/dwd-cap-warnings --weewx --resolution=city
bzw.
/usr/local/bin/dwd-cap-warnings --weewx --resolution=county
ersetzt werden.
Soll dwd-mosmix
benutzt werden, muß dafür in der Datei die Zeile
/usr/local/bin/dwd-mosmix --weewx Station
hinzugefügt werden. Wenn die Vorhersage für mehrere Stationen benötigt wird, ist für jede Station ein Aufruf einzutragen.
Die Warnungen in der JSONP-Datei warnings.json
ist nach Landkreisen gegliedert. Manche Landkreise sind dann noch weiter nach Landschaftsmerkmalen wie etwa Bergland und Tiefland unterteilt. Andere Dateien sind nach Bundesländern gegliedert. Im Wiki sind die vom Deutschen Wetterdienst verwendeten Bezeichnungen und Abkürzungen beschrieben:
Im Verzeichnis der Visualisierung (skin), wo die Meldungen des DWD
angezeigt werden sollen, muß ein Unterverzeichnis (Ordner) dwd
angelegt
werden. (Es sind auch andere Namen möglich.) In das Skript wget-dwd
sowie die Konfigurationsdatei weewx.conf
(siehe unten) muß der
komplette Pfad dieses Verzeichnisses eingetragen werden.
Beispiel:
cd /etc/weewx/skins/Belchertown
mkdir dwd
Belchertown
im Beispiel ist durch den zutreffenden Namen zu ersetzen.
In dieses Verzeichnis speichern die Scripte die erzeugten Warn- und Vorhersage-Dateien.
Die Eintragungen in weewx.conf müssen mit der Hand vorgenommen werden. Es gibt gegenwärtig kein Installationsprogramm dafür.
Beispiel:
[DeutscherWetterdienst]
path='/etc/weewx/skins/Belchertown/dwd'
[[warning]]
icons='../dwd/warn_icons_50x50'
states='Sachsen','Thüringen'
[[[counties]]]
'Kreis Mittelsachsen - Tiefland'='DL'
'Stadt Leipzig'='L'
'Stadt Jena'='J'
'Stadt Dresden'='DD'
[[[cities]]]
'Stadt Döbeln'='DL'
'Stadt Waldheim'='DL'
'Leipzig-Mitte'='L'
'Stadt Jena'='J'
'Dresden-Altstadt'='DD'
[[forecast]]
icons='../images'
orientation=h,v
#show_obs_symbols = True # optional
#show_obs_description = False # optional
#show_placemark = True # optional
Der Eintrag path
muß auf das im ersten Schritt angelegte Verzeichnis
zeigen.
Die Pfade, Bundesländer und Landkreise sind den Erfordernissen bzw. tatsächlichen Verhältnissen entsprechend einzutragen. Die Bezeichnungen sind der Datei warncellids.csv zu entnehmen, die beim DWD heruntergeladen werden kann.
Beachte: Der Pfad bei icons
bezieht sich auf den Web-Server.
Er darf nicht mit /
beginnen.
Für jeden Landkreis, für den Warnungen angezeigt werden sollen, muß ein Eintrag unter "counties" vorhanden sein. Das Kürzel hinter dem Gleichheitszeichen fasst die Meldungen in Dateien zusammen, für jedes Kürzel eine. Ansonsten kann das Kürzel frei gewählt werden.
Bei Nutzung von dwd-cap-warnings
können statt Landkreisen auch
Gemeinden ausgewählt werden, die unter "cities" einzutragen sind.
Ob die Warnungen auf Landkreis- oder Gemeindebasis angezeigt werden,
wird mit der Option --resolution
beim Aufruf von dwd-cap-warnings
eingestellt. Alternativ kann die Option auch in die Konfigurationsdatei
eingetragen werden.
Hier ist schon vorgesehen, daß zusätzliche Abschnitte eingefügt werden. Dazu muß einfach eine Datei unter einem der folgenden Namen erstellt werden. Sie wird automatisch eingebunden, wenn sie existiert:
index_hook_after_station_info.inc
index_hook_after_forecast.inc
index_hook_after_snapshot.inc
index_hook_after_charts.inc
Der Name bezeichnet schon die Einfügestelle auf der Startseite.
Wenn es keine solchen vorbereiteten Einfügestellen gibt, müssen die
Beispiele in eine der Dateien mit der Endung .html.tmpl
eingefügt werden.
Bitte "DWLG" im folgenden Beispiel durch die Abkürzung des gewünschten Bundeslandes aus Spalte "VHDL" ersetzen.
<div class="col-sm-12" style="margin-bottom:1em">
#if os.path.exists("dwd/VHDL50_DWLG_LATEST.html")
#include raw "dwd/VHDL50_DWLG_LATEST.html"
[Quelle:
<a
href="https://www.dwd.de/DE/wetter/wetterundklima_vorort/sachsen/sac_node.html"
target="_blank">DWD</a>]
#end if
</div>
Bitte "DL" durch den jeweiligen Gebietscode ersetzen wie in /usr/local/bin/dwd-warnings
definiert.
<div class="col-sm-6">
<p style="font-size:110%">Wetterwarnungen</p>
#include raw "dwd/warn-DL.inc"
</div>
Beispiel für eine Wetterwarnung:
Bitte "P0291" durch den gewünschten Stationscode ersetzen.
<div class="col-sm-8">
<p style="font-size:110%">Wettervorhersage</p>
#include raw "dwd/forecast-P0291.inc"
</div>
Dazu muß die Stylesheet-Datei ergänzt werden, bei der Belchertown-Skin
wäre das custom.css
:
.dwdforecasttable {
line-height: 1.0;
}
.dwdforecasttable td {
text-align: center;
padding-left: 3px;
padding-right: 3px;
line-height: 1.2;
}
.dwdforecasttable .icons td {
padding-top: 5px;
padding-bottom: 0px;
}
.dwdforecasttable .topdist td {
padding-top: 5px;
}
.light .dwdforecasttable td.weekend {
background-color: #ffe;
}
.dark .dwdforecasttable td.weekend {
background-color: #333;
}
Beispiel für eine Wettervorhersage:
Mit der speziellen Option --belchertown
erzeugt dwd-mosmix
die
forecast.json
-Datei für die Belchertown-Skin. Damit kann die
Wettervorhersage des DWD in die Belchertown-Skin integriert werden,
ohne daß Eingriffe in den Code nötig sind. Nur die Konfigurationsoption
forecast_stale
muß geändert werden, entweder in skin.conf
oder im Abschnitt der
Skin in weewx.conf
. Die Vorhersage muß natürlich auch grundsätzlich
eingeschaltet sein.
forecast_enabled = 1
forecast_stale = 86400
forecast_alert_enabled = 1
Außerdem muß der Abschnitt des Deutschen Wetterdienstes in weewx.conf
ergänzt werden:
[DeutscherWetterdienst]
...
[[Belchertown]]
section = "Belchertown"
warnings = DL
forecast = P0291
#include_advance_warnings = 0 # optional
#aqi_source = None # optional
#compass_lang = 'en' # optional, alternative 'de','fr','cz'
Der Schlüssel section
muß den Namen des Abschnittes der Belchertown-Skin
unter [StdReport]
angeben. Der Schlüssel warnings
gibt das Kürzel der
zu verwendenden Warn-Datei aus dem Abschnitt [[warning]]
an.
Der Schlüssel forecast
gibt das Kürzel der Station an, deren Vorhersage
verwendet werden soll.
Mit dem optionalen Schlüssel include_advance_warnings
kann man eine Zeitspanne
in Sekunden vorgeben. Es werden dann neben den aktiven Warnungen auch
Warnungen angezeigt, die bis zu der angegebenen Zahl Sekunden in der
Zukunft aktiv werden.
Mit aqi_source
kann man einen Provider angeben, von dem AQI-Daten
bezogen werden sollen. Momentan mögliche Werte sind aeris
und ubaXXXX
,
wobei XXXX durch die Nummer der Station zu ersetzen ist, deren
Werte abgerufen werden sollen.
Beachte: Bei Aeris ist die Anzahl der Anfragen pro Tag limitiert. Es ist darüber hinaus ein Account nötig.
Eine Liste der Luftqualitätsmeßstationen des deutschen Umweltbundesamtes (UBA) erhält man mit
usr/local/bin/dwd-mosmix --print-uba=meta,measure
Beim Aufruf der Programme muß dwd-cap-warnings
ungedingt vor dwd-mosmix
aufgerufen werden, sonst werden unter Umständen veraltete Warnungen
verarbeitet.
In /etc/cron.hourly/dwd
ist dann die folgende Zeile hinzufügen:
/usr/local/bin/dwd-mosmix --weewx --belchertown Stationsname
Soll das Programm zu Testzwecken von der Kommandozeile aufgerufen werden,
ist sudo
nötig:
sudo /usr/local/bin/dwd-mosmix --weewx --belchertown Stationsname
Mit der Option --database
wird eine SQLITE-Datenbankdatei erzeugt,
die von WeeWX zur Anzeige von Diagrammen genutzt werden kann. Die
Datei wird in das durch SQLITE_ROOT
definierte Verzeichnis
geschrieben und erhält den Namen dwd-forecast-Stationscode.sdb
.
Die Werte sind grundsätzlich stündlich.
Um damit Diagramme darstellen zu können, muß die Datenbank in
weewx.conf
hinzugefügt werden:
[DataBindings]
...
[dwd_binding]
database = dwd_sqlite
table_name = forecast
manager = weewx.manager.Manager
schema = schemas.dwd.schema
[Databases]
...
[dwd_sqlite]
database_name = dwd-forecast-Stationscode.sdb
database_type = SQLite
In das Verzeichnis schemas
muß eine Datei dwd.py
geschrieben
werden, die folgenden Inhalt hat:
schema = [('dateTime','INTEGER NOT NULL PRIMARY KEY'),
('usUnits','INTEGER NOT NULL'),
('interval','INTEGER NOT NULL')]
In extension.py
sind ggf. die fehlenden Meßgrößen zu definieren:
import weewx.units
weewx.units.obs_group_dict['pop'] = 'group_percent'
weewx.units.obs_group_dict['cloudcover'] = 'group_percent'
weewx.units.obs_group_dict['sunshineDur'] = 'group_deltatime'
weewx.units.obs_group_dict['rainDur'] = 'group_deltatime'
Vorhersagegrößen:
outTemp
: Lufttemperatur 2mdewpoint
: Taupunkt 2mwindDir
: WindrichtungwindSpeed
: WindgeschwindigkeitwindGust
: Böengeschwindigkeitpop
: Regenwahrscheinlichkeitcloudcover
: Wolkenbedeckungbarometer
: Luftdruckrain
: RegenmengerainDur
: Regendauer innerhalb der letzten StundesunshineDur
: Sonnenscheindauer innerhalb der letzten Stunde
Beispielkonfiguration in graphs.conf
für Belchertown-Skin:
[[forecast]]
tooltip_date_format = "dddd LLL"
gapsize = 3600 # 1 hour in seconds
credits = "© DWD"
data_binding = dwd_binding
time_length = all
[[[outTemp]]]
[[[dewpoint]]]
Beispielkonfiguration in skin.conf
:
[ImageGenerator]
...
[[day_images]]
...
[[[forecast]]]
data_binding = dwd_binding
line_gap_fraction = 0.04
time_length = 950400
x_label_format = %d.%m.
[[[[outTemp]]]]
[[[[dewpoint]]]]
Der Pfad, hier dwd
, ist entsprechend der eigenen Konfiguration anzupassen. Das Anhängsel mit getmtime
ist notwendig, damit der Browser keine veralteten Karten anzeigt. Damit wird der Cache beim Nutzer überlistet.
<div class="col-sm-12 snapshot-records-text">
Wetterkarte (Luftdruck am Boden)
</div>
<div class="col-sm-12">
<img src="$relative_url/dwd/bwk_bodendruck_na_ana.png?v=<%=os.path.getmtime("/etc/weewx/skins/Belchertown-de/dwd/bwk_bodendruck_na_ana.png")%>" />
</div>
Damit die Wetterkarte auch mit auf den Server hochgeladen wird, muß sie in skin.conf
ergänzt werden:
[CopyGenerator]
...
copy_always = ...,dwd/bwk_bodendruck_na_ana.png
Anstelle von bwk_bodendruck_na_ana.png
(Europa-Nordatlantik) kann in den obigen Beispielen
auch bwk_bodendruck_weu_ana.png
(West-Mittel-Europa) verwendet werden. Beide Karten werden
von wget-dwd
heruntergeladen.
- WeeWX Homepage - WeeWX Wiki
- Seite "Homepagewetter" des Deutschen Wetterdienstes
- Warnicons
- Seite "Wetter und Klima vor Ort" des Deutschen Wetterdienstes mit Unterseiten für die Bundesländer
- Seite "Warnlagebericht" des Deutschen Wetterdienstes mit Unterseiten für die Bundesländer
- gesprochene Wetterberichte mit Python