-
Notifications
You must be signed in to change notification settings - Fork 4
Wettervorhersage im Wohnmobil
Diese Anleitung entstammt einem praktischen Beispiel aus Disussion #30. Wenn die Wetterstation auf einem Fahrzeug angebracht ist, ändert sich regelmäßig der Standort. Der Nutzer möchte hier automatisch die Wettervorhersage für seinen momentanen Aufenthaltsort und/oder das Tagesziel in die Website aufgenommen haben.
Für diesen Zweck ist es natürlich erforderlich, daß WeeWX den Aufenthaltsort kennt. Für die folgenden Beispiele nehmen wir an, daß dieser Aufenthaltsort als $current.latitude
und $current.longitude
zur Verfügung steht. Hierzu eignet sich ein GPS-Empfänger, der die Koordinaten per MQTT versendet. Die Erweiterung MQTTSubscribe kann die Koordinaten dann in WeeWX einlesen und zur Verfügung stellen.
Da der Aufenthaltsort beliebige Koordinaten haben kann, funktioniert das nur mit den Vorhersagen von Open-Meteo, bei denen der gewünschte Ort nicht als Codierung sondern als Koordinaten übergeben wird. Open-Meteo sucht dann den nächstliegenden Gitterpunkt heraus, für den eine Vorhersage vorliegt.
Das Programm dwd-mosmix
kann nicht direkt auf Werte in WeeWX zugreifen. Stattdessen wird mit den Mitteln, mit denen WeeWX die Webseiten erzeugt, ein Shell-Script geschrieben, das den Programmaufruf mit den passenden Parametern inklusive der aktuellen Koordinaten enthält. Dieses Script wird in einem zweiten Schritt durch ein weiteres Script ausführbar gemacht und mittels crontab aufgerufen.
Für die folgende Anleitung nehmen wir an, daß WeeWX in die folgenden Verzeichnisse installiert ist:
-
SKIN_ROOT
=/etc/weewx/skins
-
SQLITE_ROOT
=/var/lib/weewx
Wenn Sie WeeWX in andere Verzeichnisse installiert haben, passen Sie die Verzeichnisnamen entsprechend an.
Erzeugen Sie im Skin-Verzeichnis von WeeWX ein Unterverzeichnis namens open-meteo-forecast
:
mkdir /etc/weewx/skins/open-meteo-forecast
In diesem Verzeichnis erstellen Sie eine Datei namens dwd-mosmix-call.sh.tmpl
mit folgendem Inhalt:
#!/bin/bash
/usr/local/bin/dwd-mosmix --weewx --belchertown --html --daily --hourly --open-meteo=icon_global $current.latitude.raw,$current.longitude.raw
#set $inc_pth=$os.path.join($SKIN_ROOT,$skin,'dwd')
mv $(os.path.join($inc_pth,'dwd-forecast-openmeteo-%s-%s-icon_global.inc' % ($current.latitude.raw,$current.longitude.raw))) $(os.path.join($inc_pth,'forecast-where-I-am.inc'))
Von den Optionen --belchertown
, --html
, --daily
und --hourly
sind nur die wirklich benötigten anzugeben. Die anderen sind wegzulassen.
Die Zeilen #set
und mv
werden nur benötigt, wenn die Option --html
genutzt wird, anderenfalls entfallen sie.
In weewx.conf
ergänzen Sie im Abschnitt [StdReport]
:
[[open-meteo-forecast]]
skin = open-meteo-forecast
HTML_ROOT = /var/lib/weewx
[[[CheetahGenerator]]]
[[[[ToDate]]]]
[[[[[shellscript]]]]]
template = dwd-mosmix-call.sh.tmpl
[[[Generators]]]
generator_list = weewx.cheetahgenerator.CheetahGenerator,
Erstellen Sie im Verzeichnis /usr/local/bin
eine Datei mobile-forecast
mit folgendem Inhalt:
#!/bin/bash
/bin/chmod +x /var/lib/weewx/dwd-mosmix-call.sh
/var/lib/weewx/dwd-mosmix-call.sh
Machen Sie die Datei anschließend ausführbar:
sudo chmod +x /usr/local/bin/mobile-forecast
Damit die Vorhersage regelmäßig berechnet wird, ergänzen Sie folgende Zeile in /etc/crontab
:
3,8,13,18,23,28,33,38,43,48,53,58 * * * * root /usr/local/bin/mobile-forecast >/var/log/mobile-forecast.log 2>&1
Wenn es Ihnen genügt, daß die Vorhersage stündlich berechnet wird, können Sie die Datei mobile-forecast
auch nach /etc/cron.hourly
speichern und /etc/crontab
unverändert lassen.
Sie können die erzeugten Vorhersagen in jede Visualisierung (Skin) einbinden, die Sie installiert haben.
Die Option --belchertown
bewirkt, daß die Datei forecast.json
erzeugt wird, die die Belchertown-Skin zur Darstellung der Wettervorhersage verwendet. Dazu muß in weewx.conf
der Unterabschnitt [[Belchertown]]
im Abschnitt [WeatherServices]
wie in Konfiguration in weewx.conf
beschrieben konfiguriert werden.
Wird die Option --html
genutzt, werden CheetahGenerator-Include-Dateien (*.inc
) erzeugt, die in den Templates Ihrer Visualisierung (Skin) mittels #include
eingefügt werden.
Beispiel:
<div class="col-sm-8">
<p style="font-size:110%">Wettervorhersage</p>
#include raw "dwd/forecast-where-I-am.inc"
</div>