Hallo Henk
Henk hat geschrieben:6. Variablen wurden gefüllt siehe Bild
Häääääää????
Das gibt's doch nicht. Das Script ist richtig; die Variablen sind es ja auch (immmerhin werden sie ja richtig auf der Konsole ausgegeben).
In die Systemvariablen werden die Strings offensichtlich auch reingeschrieben.
Da könne keine alten Werte mehr drin sein, nachdem Du die halbe CCU platt gemacht und alles neu angelegt hast.
Nachdem Dein Script bei mir funktionierte, kann es eigentlich dann fast nur noch daran liegen, dass deine Homematic WebUI irgend einen anderen Zeichensaztz verwendet und die Umlaute selbst nicht darstellen kann.
Kann Su mal versuchen aus der Telnet Konsole den Text mit den Umlauten in die Zwischenablage zu kopieren und dann per Programm eine Systemvariable einfach mal direkt mit diesem String befüllen:
Aktivität: Systemzustand, con1, sofort, String in das Feld reinkopieren
Wenn Du dann den Wert dieser Variable anschaust: Ist da ein vernünftiger Umlaut drin?
Ich hab jetzt nochmal Dein abgespecktes Programm genommen und bei mir ausgeführt
.
Guckst Du:
Ich habe es sogar noch mehr abgespeckt und nur con1 gefüllt:
Code: Alles auswählen
#!/bin/tclsh
load tclrega.so
#
# Read weather data
#
set url http://api.wunderground.com/api/9036febf6bf53427/forecast/lang:DL/q/germany/kalkar.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 w1 = dom.GetObject('con1');"
append rega_cmd "w1.State('$day1_text');"
rega_script $rega_cmd
Das Dings funktioniert!!
Kannst Du mal einen anderen Browser probieren?
Gruss Ralf