Raspberry-PI Unwetter-Warner

Mit Hilfe eines Raspberry PI und zwei LEDs (rot und grün) soll ein Unwetter-Warner gebaut werden. Droht ein Unwetter, leuchtet die rote LED. Gibt es keine Unwetterwarnung, leuchtet die grüne LED. Als Datenquelle dienen die Unwetterwarnungen des Deutschen Wetterdienstes (DWD).

DSCN3098

Zunächst der Elektronik-Teil. 2 LEDs (rot und grün) werden über je einen Vorwiderstand an die GPIO-Pins 14 und 15 angeschlossen.

dwd_warner_Steckplatine

dwd_warner_Schaltplan

Nun muss zunächst die passende Warn-Seite für die eigene Region gefunden werden. Auf der Webseite des Deutschen Wetterdienstes gibt es eine Karte mit den aktuellen Warnungen für Deutschland unter: http://www.dwd.de/warnungen. Auf der Karte kann man nun seine Region und anschließend seinen Landkreis anklicken und kommt so auf die Warn-Seite für den jeweiligen Landkreis. Für Hamburg ist es zum Beispiel diese Adresse: http://www.dwd.de/dyn/app/ws/html/reports/HHX_warning_de.html. Diese URL wird später vom Raspberry-PI abgefragt und ausgewertet.

Nun zum Python-Script:

dwd_warner.py

#!/usr/bin/python
import urllib2
import RPi.GPIO as GPIO

URL="www.dwd.de/dyn/app/ws/html/reports/HHX_warning_de.html"
LEDS = {"red":14,"green":15}

def init():
    GPIO.setmode(GPIO.BCM)
    GPIO.setwarnings(False)
    for color in LEDS:
        GPIO.setup(LEDS[color],GPIO.OUT)
        GPIO.output(LEDS[led],GPIO.LOW)

def displayWarnLevel(isWarning):
    for led in LEDS:
        GPIO.output(LEDS[led],GPIO.LOW)
    color = "red" if isWarning else "green"
    GPIO.output(LEDS[color],GPIO.HIGH)

def getWarnLevel():
    response = urllib2.urlopen(URL)
    html = response.read()
    return "ws_warning_content" in html

init()
isWarning = getWarnLevel()
displayWarnLevel(isWarning)

Damit das ganze alle 15 Minuten ausgeführt wird, kommt ein entsprechender Eintrag in die crontab:

/etc/crontab

*/15 * * * * root /home/pi/wetter/dwd_warner.py

Danach noch „sudo /etc/init.d/cron restart“ und fertig ist der Unwetter-Warner. Zur Zeit ist in Hamburg alles grün:

DSCN3099

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.