1) Bei wunderground.com anmelden, Wetterstation in der Nähe suchen und den KEY generieren
2) Im tcl-Skript (in der url) Ort und Key eintragen
3) Die Url aus dem Skript erst im Browser testen ob die korrekte Antwort geliefert wird
4) Alle Variablen in der homematic definieren
5) Im Addons-Verzeichnis ein Verzeichnis anlegen "wetter" (z. B.)
6) Skript als .tcl in oben angelegtes Verzeichnis kopieren
7) Periodischen Aufruf des Skripts (z. B. stündlich) in der gewohnten Art anlegen.
Hier ist das Skript:
Code: Alles auswählen
load tclrega.so
#
# Read weather data <Ort>
# Update der Daten auf wunderground erfolgt immer zur vollen Stunde
# Variablen:
# Wetter-Aktualisierung Zeichenkette
# Wetter-Bedingungen Zeichenkette
# Wetter-Temperatur Zahl (°C)
# Wetter-Windgeschwindigkeit Zahl (km/h)
# Wetter-Windboeen Zahl (km/h)
# Wetter-Windrichtung Zeichenkette
# Wetter-Windbedingungen Zeichenkette
# Wetter-Luftdruck Zahl (mb)
# Wetter-Luftdrucktrend Zeichenkette
# Wetter-Luftfeuchte Zeichenkette
#
set url http://api.wunderground.com/api/<KEY>/conditions/lang:DL/q/Germany/<ORT>.xml
exec /usr/bin/wget -q -O /usr/local/addons/wetter/wetteraktuell.xml $url
set f [open "/usr/local/addons/wetter/wetteraktuell.xml"]
set input [read $f]
close $f
#
# goto section with current observation
#
regexp "<current_observation>(.*?)</current_observation>" $input dummy current ; #get current observation
#
regexp "<observation_time>Last Updated on (.*?)</observation_time>" $current dummy observation_time ; # letzter update
regexp "<weather>(.*?)</weather>" $current dummy weather ; # wetterbedingungen
regexp "<temp_c>(.*?)</temp_c>" $current dummy temp_c ; # temperatur # ZAHL
regexp "<wind_kph>(.*?)</wind_kph>" $current dummy wind_kph ; # Windgeschwindigkeit # ZAHL
regexp "<wind_gust_kph>(.*?)</wind_gust_kph>" $current dummy wind_gust_kph ; # Windboeengeschwindigkeit # ZAHL
regexp "<wind_dir>(.*?)</wind_dir>" $current dummy wind_dir ; # windrichtung
regexp "<wind_string>(.*?)</wind_string>" $current dummy wind_string ; # windbedingungen
regexp "<pressure_mb>(.*?)</pressure_mb>" $current dummy pressure_mb ; # Luftdruck #ZAHL
regexp "<pressure_trend>(.*?)</pressure_trend>" $current dummy pressure_trend ; # Luftdrucktrend
regexp "<relative_humidity>(.*?)</relative_humidity>" $current dummy relative_humidity ; # Luftfeuchte
# Umlaute korrigieren
switch $wind_dir {
"Südwest" {set wind_dir "Südwest"}
"Südost" {set wind_dir "Südost"}
"West-Südwest" {set wind_dir "West-Südwest"}
"Süd-Südwest" {set wind_dir "Süd-Südwest"}
"Ost-Südost" {set wind_dir "Ost-Südost"}
"Süd-Südost" {set wind_dir "Süd-Südost"}
}
#
# set ReGaHss variables
#
set rega_cmd ""
append rega_cmd "var c0 = dom.GetObject('Wetter-Aktualisierung');"
append rega_cmd "var c1 = dom.GetObject('Wetter-Bedingungen');"
append rega_cmd "var c2 = dom.GetObject('Wetter-Temperatur');"
append rega_cmd "var c3 = dom.GetObject('Wetter-Windgeschwindigkeit');"
append rega_cmd "var c4 = dom.GetObject('Wetter-Windboeen');"
append rega_cmd "var c5 = dom.GetObject('Wetter-Windrichtung');"
append rega_cmd "var c6 = dom.GetObject('Wetter-Windbedingungen');"
append rega_cmd "var c7 = dom.GetObject('Wetter-Luftdruck');"
append rega_cmd "var c8 = dom.GetObject('Wetter-Luftdrucktrend');"
append rega_cmd "var c9 = dom.GetObject('Wetter-Luftfeuchte');"
append rega_cmd "c0.State('$observation_time');"
append rega_cmd "c1.State('$weather');"
append rega_cmd "c2.State('$temp_c');"
append rega_cmd "c3.State('$wind_kph');"
append rega_cmd "c4.State('$wind_gust_kph');"
append rega_cmd "c5.State('$wind_dir');"
append rega_cmd "c6.State('$wind_string');"
append rega_cmd "c7.State('$pressure_mb');"
append rega_cmd "c8.State('$pressure_trend');"
append rega_cmd "c9.State('$relative_humidity');"
rega_script $rega_cmd