Google Wetterserver down?

Allgemeines zur HomeMatic Haussteuerung

Moderator: Co-Administratoren

derrapf
Beiträge: 815
Registriert: 17.12.2012, 22:29

Re: Google Wetterserver down?

Beitrag von derrapf » 03.02.2013, 21:11

Henk hat geschrieben: Zur Sicherheit habe ich die erste Varible gelöscht und neu angelegt, um zu schauen ob sie mit einem Wert gefüllt wird.
Das wird sie, aber wieder ohne äüö usw.
Noch ne Frage: Wie rufst Du das Programm auf? Also wie befüllst Du die Variable?
Hast Du das in der Telnet session gemacht oder ein Programm auf der CCU aufgerufen?
Kannst Du sicherstellen, dass das CCU Script auch wirklich das richtige TCL script aufruft?
Du hast nicht zufällig mehrere auf der CCU rumliegen und rufst immer das Falsche auf?

Gruss Ralf

Henk
Beiträge: 115
Registriert: 17.06.2012, 16:07

Re: Google Wetterserver down?

Beitrag von Henk » 06.02.2013, 10:53

Hallo Ralf,

sorry aber ich war die letzten 2 Tage beruflich viel unterwegs und hatte deshalb keine Zeit.
Heute werde ich noch mal schauen...

Gruß
Henk

Henk
Beiträge: 115
Registriert: 17.06.2012, 16:07

Re: Google Wetterserver down?

Beitrag von Henk » 06.02.2013, 15:00

Sooo,

zum testen habe ich das Script in der telnet Session ausgeführt.

Code: Alles auswählen

tclsh /usr/local/addons/wettervorhersage/wettervorhersage_v0.0.4.tcl
Das gibt im Terminal die richtige Ausgabe!

In der CCU wird das Script so aufgerufen:

Code: Alles auswählen

dom.GetObject("CUxD.CUX2801001:1.CMD_EXEC").State("tclsh /usr/local/addons/wettervorhersage/wettervorhersage_v0.0.4.tcl");
Die Variablen sind alle vom Typ Zeichenkette (siehe Bild)

derrapf
Beiträge: 815
Registriert: 17.12.2012, 22:29

Re: Google Wetterserver down?

Beitrag von derrapf » 06.02.2013, 15:18

Hi Henk

Mach' s mal in zwei Schritten. Erstmal nur das Prgramm in der Telnet session aufrufen und dann in der CCU prüfen ob die Variablen richtig gesetzt werden.
Am besten auf dem Startscreen anzeigen lassen.
Erst wenn das klappt, dann kümmerst Du Dich um das Script in der CCU.

Hast Du mal geprüft ob, wenn Du das Script in der Telnet Session aufrufst, die Variablen gesetzt werden?
Wenn nicht dann sind die rega Kommandos falsch.

Knips doch mal einen Screenshot Deiner System-Variablen
Henk hat geschrieben: In der CCU wird das Script so aufgerufen:

Code: Alles auswählen

dom.GetObject("CUxD.CUX2801001:1.CMD_EXEC").State("tclsh /usr/local/addons/wettervorhersage/wettervorhersage_v0.0.4.tcl");
Probier mal statt dessen

Code: Alles auswählen

    string stdout;
    string stderr;
    system.Exec("tclsh /usr/local/addons/wettervorhersage/wettervorhersage_v0.0.4.tcl", &stdout, &stderr);
Gruss Ralf

Henk
Beiträge: 115
Registriert: 17.06.2012, 16:07

Re: Google Wetterserver down?

Beitrag von Henk » 06.02.2013, 16:29

hrmf...

Ich habe folgendes gemacht.

1. das Script aufs nötige reduziert

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 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
2. alle Variblen gelöscht

3. alle Scripte bis auf das benötigte von der CCU entfernt

4. nötige Variablen con0, 1, 2, 3 angelegt
Bild

5.das Script nur per telnet ausgeführt

Bild

6. Variablen wurden gefüllt siehe Bild

derrapf
Beiträge: 815
Registriert: 17.12.2012, 22:29

Re: Google Wetterserver down?

Beitrag von derrapf » 06.02.2013, 16:51

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:
Bild
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

Henk
Beiträge: 115
Registriert: 17.06.2012, 16:07

Re: Google Wetterserver down?

Beitrag von Henk » 06.02.2013, 18:29

derrapf hat geschrieben: 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

Ahh...

das geht, con1 zeigt Sonderzeichen an.

Am Browser liegt es nicht.

Gruß
Henk

derrapf
Beiträge: 815
Registriert: 17.12.2012, 22:29

Re: Google Wetterserver down?

Beitrag von derrapf » 06.02.2013, 19:26

Hi Henk
Henk hat geschrieben: das geht, con1 zeigt Sonderzeichen an.
Am Browser liegt es nicht.
Dann fällt mir nichts mehr ein. Bei mir läuft Dein Script, wie Du am Screenshot gesehen hast. Keine Ahnung was bei Dir anders ist.
Vielleicht hat jemand anders noch ne Idee...

Gruss Ralf

Henk
Beiträge: 115
Registriert: 17.06.2012, 16:07

Re: Google Wetterserver down?

Beitrag von Henk » 06.02.2013, 20:01

Ich danke dir Ralf!!!

Du warst mir trotzdem eine riesen Hilfe.
Ich habe wieder viel gelernt dabei und du hoffentlich nicht zu viele Nerven durch mich verloren. :D

Ich werde mal einen neuen Fred aufmachen.

Gruß
Henk

derrapf
Beiträge: 815
Registriert: 17.12.2012, 22:29

Re: Google Wetterserver down?

Beitrag von derrapf » 06.02.2013, 20:48

Hallo Henk
Henk hat geschrieben:Du warst mir trotzdem eine riesen Hilfe.
Ich habe wieder viel gelernt dabei und du hoffentlich nicht zu viele Nerven durch mich verloren. :D
Passt schon.
Wenn Du gar nicht mehr weiterkommst und Dir sonst niemand helfen kann, dann schick mir mal ne PM.
Vielleicht können wir eine Remote Session aufmachen (Teamviewer) und ich auf Deine Kiste gucken.
4 Augen sehen mehr als zwei.

Gruss Ralf

Antworten

Zurück zu „HomeMatic allgemein“