Unwetterwarnung

20 07 2011

So this time in Deutsch. Der Deutsche Wetterdienst gibt auf seiner Homepage relativ zeitnah Unwetterwarnungen heraus. Um mir die Arbeit zu ersparen, dort des Öfteren nachsehen zu müssen, und trotzdem bescheid zu wissen wann ein größeres Gewitter o.ä. aufzieht hab ich mir das folgende Skript erdacht.

Es holt sich von der Homepage die Warnungen für den festgelegten Landkreis. Dieser String wird bei Vorhandensein einer Warnung im untigen Fall an notify-send übergeben und erscheint somit als kleines Popup, wie es auch andere Programme verwenden. Zudem wird dann noch die Timeline-Grafik (für die Dauer der Warnung) heruntergeladen und kurzzeitig mit einem image_viewer angezeigt.
Vom Prinzip her ist das Meiste glaub ich selbsterklärend. Auch im Panel erscheint ein Warnsymbol.

Die Landkreise entsprechen (meiner Erkenntnis nach) den entsprechenden amtlichen Kennzeichen, bei Bedarf mit ‘X’en auf drei Buchstaben erweitert (BXX – Berlin , KIX – Kiel, COE – Coesfeld). Zur Sicherheit einfach mal auf der DWD-Seite nachschaun. Hierzu auf der Warnkarte den gewünschen Kreis anklicken und in der URL das entsprechende Kürzel suchen (Ausnahmen z.B. WUE statt WÜX für Würzburg – macht ja auch Sinn).

[edit: normalerweise wird der Standard-Landkreis gecheckt, bei übergebener Variable der alternative Kreis]
usage:
$ wetterdienst [LKR]

#!/bin/bash
# display weather warnings using notify-send
## settings
notify_header="Wetterwarnungen für Berlin"
popup_icon=~/Bilder/Wetterwarnung.png
landkreis=BXX
image_viewer=display # must be able to handle URLs
## check for alternative location
if [ "$1" != "" ] 
then landkreis=$1
     notify_header="Wetterwarnungen für "$landkreis
fi
## get warnings
textstring=$(wget 'http://www.dwd.de/dyn/app/ws/html/reports/'${landkreis}'_warning_de.html' -O -  | grep -i "warnung vor" | sed s/\<\\/p\>//g ) 
## check warnings
if [ "$textstring" = ""  ]  
## if there's no warning
# then exit 0;
then notify-send --icon=$popup_icon """$notify_header""" "keine Warnungen vorhanden"
## if there are warnings
# do funny things
else notify-send --icon=$popup_icon """$notify_header""" """$textstring"""
# do some acoustic output
#espeak -v de """$textstring"""
# set a notification in the taskbar
zenity --notification --text="""$textstring""" &
# display the warning timeline for some seconds
 $image_viewer http://www.dwd.de/dyn/app/ws/maps/${landkreis}_timeline.png &
 sleep 4
 kill $!
fi


Natürlich kann man den Warn-String beliebig anderweitig weiterverarbeiten, sich einen cronjob anlegen, der alle 30 Minuten nachschaut ob’s was neues gibt (hierbei nicht vergessen das DISPLAY zu definieren) und sich nur bei vorhandener rührt, ansonsten abbricht.

Grundsätzlich könnte man auch die Timeline über imagemagick mit dem Desktop-Hintergrund oder einem sonstigen Element verwursten…das jedoch obliegt den Anforderungen und dem Ideenreichtum jedes Einzelnen. Viel Freude!

Advertisements

Actions

Information

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s




%d bloggers like this: