ich habe ein Problem mit einem TCL Script.
Es geht um eine Wettervorhersage siehe http://homematic-forum.de/forum/viewtop ... =19&t=9867. Das Script an sich funktioniert soweit, nur bei der Übergabe der Werte werden keine Sonderzeichen übermittelt zB Regen möglich wird ohne ö in die Varible geschrieben.
Wenn ich das Script über Telnet starte und ich mir das Ergebnis in der Konsole anzeigen lasse, stehen die korrekten Werte da.
Ebenfalls werden Sonderzeichen in der Variablen angezeigt, wenn ich sie über die WEBUI direkt befülle.
Hier mal das Script und ein paar Screenshots
Code: Alles auswählen
#!/bin/tclsh
load tclrega.so
#
# Read weather data
#
set url http://api.wunderground.com/api/xxxxx/forecast/lang:DL/q/germany/xxxxx.xml
exec /usr/bin/wget -q -O /usr/local/addons/wettervorhersage/wetterwunderground.xml $url
set f [open "/usr/local/addons/wettervorhersage/wetterwunderground.xml"]
set input [read $f]
close $f
#
# goto section with forecast
#
regexp "<simpleforecast>(.*?)</simpleforecast>" $input dummy text ; #get second forecast section
regexp "<forecastday>(.*?)</forecastday>.*?<forecastday>(.*?)</forecastday>.*?<forecastday>(.*?)</forecastday>.*?<forecastday>(.*?)</forecastday>" $text -> day0 day1 day2 day3 ; #split days
#day0
regexp "<high>(.*?)</high>" $day0 dummy temp ; #get high values
regexp "<celsius>(.*?)</celsius>" $temp dummy max0 ; #get deg Celsius
regexp "<low>(.*?)</low>" $day0 dummy temp ; #get low values
regexp "<celsius>(.*?)</celsius>" $temp dummy min0 ; #get deg Celsius
regexp "<conditions>(.*?)</conditions>" $day0 dummy conditions0 ; #get conditions
#day1
regexp "<high>(.*?)</high>" $day1 dummy temp ; #get high values
regexp "<celsius>(.*?)</celsius>" $temp dummy max1 ; #get deg Celsius
regexp "<low>(.*?)</low>" $day1 dummy temp ; #get high values
regexp "<celsius>(.*?)</celsius>" $temp dummy min1 ; #get deg Celsius
regexp "<conditions>(.*?)</conditions>" $day1 dummy conditions1 ; #get conditions
#day2
regexp "<high>(.*?)</high>" $day2 dummy temp ; #get high values
regexp "<celsius>(.*?)</celsius>" $temp dummy max2 ; #get deg Celsius
regexp "<low>(.*?)</low>" $day2 dummy temp ; #get high values
regexp "<celsius>(.*?)</celsius>" $temp dummy min2 ; #get deg Celsius
regexp "<conditions>(.*?)</conditions>" $day2 dummy conditions2 ; #get conditions
#day3
regexp "<high>(.*?)</high>" $day3 dummy temp ; #get high values
regexp "<celsius>(.*?)</celsius>" $temp dummy max3 ; #get deg Celsius
regexp "<low>(.*?)</low>" $day3 dummy temp ; #get high values
regexp "<celsius>(.*?)</celsius>" $temp dummy min3 ; #get deg Celsius
regexp "<conditions>(.*?)</conditions>" $day3 dummy conditions3 ; #get conditions
set day0_text "$min0 bis $max0 °C $conditions0"
set day1_text "$min1 bis $max1 °C $conditions1"
set day2_text "$min2 bis $max2 °C $conditions2"
set day3_text "$min3 bis $max3 °C $conditions3"
set day0_text [string map {"ü" "ü" "ö" "ö" "°" "°"} $day0_text]
set day1_text [string map {"ü" "ü" "ö" "ö" "°" "°"} $day1_text]
set day2_text [string map {"ü" "ü" "ö" "ö" "°" "°"} $day2_text]
set day3_text [string map {"ü" "ü" "ö" "ö" "°" "°"} $day3_text]
puts $day0_text
puts $day1_text
puts $day2_text
puts $day3_text
#
# set ReGaHss variables
#
set rega_cmd ""
append rega_cmd "var w0 = dom.GetObject('con0');"
append rega_cmd "var w1 = dom.GetObject('con1');"
append rega_cmd "var w2 = dom.GetObject('con2');"
append rega_cmd "var w3 = dom.GetObject('con3');"
append rega_cmd "w0.State('$day0_text');"
append rega_cmd "w1.State('$day1_text');"
append rega_cmd "w2.State('$day2_text');"
append rega_cmd "w3.State('$day3_text');"
rega_script $rega_cmd
Hat jemand eine Idee was da schief läuft?
Gruß
Henk