Unwetterwarnung ohne E-Mail

Phase I – Erzeugung der Meldung

Wenn Ihr Euch bisher die Karten gelegt habt um aus der E-Mail DWD-Wetterwarnung eine vorgelesene Datei zu bekommen, für den stelle ich hier ein Bash-Script zur Verfügung, welches auf der Wetterwarnseite des DWD den Meldungstext extrahiert und anschließend auf einem Marys-TTS Server Eurer Wahl eine WAV-Datei erzeugt. Diese wird dann in den Warnwetter-Mechanismus kopiert (s. Adis Wetterwarnung) und von svxlink vorgelesen. Damit erspart man sich die Einrichtung von Postfix und Procmail. Diese Übung ist auch für diejenigen gedacht, die noch nicht so firm sind mit dem Umgang eines Linuxsystems und darauf dann mit ihren eigenen Modifikationen aufsetzen können.

Voraussetzungen, Ablauf:

  • Man benötigt das Bashscript dwd welches regelmäßig nachschaut, ob eine neue Meldung vorliegt. Es kann von hier heruntegeladen werden, und gehört unter /home/svxlink/Wetter gespeichert,
  • einfügen der Parameter in das dwd.sh Script
    call,
    PFAD,
    LK
    (der gewünschte Landkreis, für den die Warnung zutrifft; s.a. Legende DWD, z.B.Freiburg/Breisgau= FRX),
    server (Vorgabe ist marytts.phonetik.uni-muenchen.de),
    (Standard)port=“59125″,
    sowie die Stimmenauswahl voice,
  • einen cronjob einrichten der das Bashscript regelmäßig aufruft. Der Eintrag beim Befehlt „crontab -e“ kann z.B. so aussehen (läuft zu jeder 20. Minute einer Stunde und schreibt eine Logdatei dwd.log nach /tmp):
    */20 * * * * /home/svxlink/Wetter/dwd.sh >> /tmp/dwd.log 2>&1
  • die beiden TCL-Dateien  vom oben erwähnten Hauptprojekt Unwetterwarnung sind zu kopieren:
    WeatherInfo.tcl nach /usr/share/svxlink/events.d und
    ModuleWeatherInfo.tcl nach /usr/share/svxlink/modules.d
  • genügend Platz im /tmp – Verzeichnis des Rechners (mind. 10 MB).

Phase II – weitere Ergänzungen

Mit diesen beiden Scripten wird bei Vorhandensein von Wetterwarnungen die Anzahl der Meldungen regelmäßig nach einer im Script vordefinierten Zeit (hier alle 20 Minuten) ausgegeben, bis der in der ModuleWeatherModule.conf (zu finden unter /etc/svxlink/svxlink.d) definierte Parameter DELETE_AFTER erreicht ist. Damit wird man später nochmals informiert, falls man den Alarm bzw. die Erstinfomation verpasst hat.
Folgendes Script Wetter.tcl unter /usr/share/svxlink/events.d/local ablegen:

 namespace eval Logic {

 Logic::addTimerTickSubscriber WarnWetter;
 #Wetterwarnung periodisch ausgeben
 #
 proc WarnWetter {} {

 global logic_name;
   if {$logic_name == "SimplexLogic"} {
     source "/home/svxlink/WarnWetter.tcl";
   }
 }
# end of namespace
}
#
# This file has not been truncated
#
#

 

Folgendes Script WarnWetter.tcl   unter /home/svxlink/ ablegen:

# /home/svxlink/WarnWetter.tcl
# aktuelle Uhrzeit ermitteln
set now [clock seconds];
set hour [clock format $now -format "%H"];
set minute [clock format $now -format "%M"];

# das hier macht aus "08" Minuten "8" Minuten
scan $hour %d hour;
scan $minute %d minute;

# eigene Ausgabezeiten definieren:
# zur 20. Minute einer ohne Teilungsrest durch 6 
# teilbaren Stunde erfolgen, also um 0:20, 0:40,1 :00 etc.
set interval 20;

# hier prüfen ob Ausgabekriterium erreicht ist
if {($minute % $interval) == 0 } {

   set dir "/usr/share/svxlink/sounds/de_DE/WeatherInfo/archive"
   set file_list [glob -nocomplain "$dir/*"]

   if {[llength $file_list] != 0} {

     # puts "Ausgabe Wetterwarnung-> Minute: $minute , Interval: $interval";
     set iterations 20;
     set base 2;
     set max [expr {pow($base, $iterations)}];
     for {set i $iterations} {$i>0} {set i [expr $i - 1]} {
       playTone 440 [expr {round(pow($base, $i) * 150 / $max)}] 100;
       playTone 510 [expr {round(pow($base, $i) * 150 / $max)}] 100;
     }
     
     WeatherInfo::getNumberOfRecords;
     } else {
     # puts "nix neues vom Wetter..."
   }
 }

 

Und ja, ich habe mir die Bashbefehle in den vergangenen Tagen angelesen. Man kann es bestimmt „besser“ oder schlanker programmieren ….

Viel Spaß beim Ausprobieren!

One Response to Unwetterwarnung ohne E-Mail

  1. Pingback: Unwetterwarnung ohne E-Mail (Version DL7ATA) | SvxLink.de

Comments are closed.