Seite 1 von 23

Aktuelles Wetter über wunderground.com

Verfasst: 21.09.2012, 12:59
von grmpf
Ich fasse mal die Aktivitäten aus dem Thread (Google Weatherserver down) hier zusammen:

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

Re: Aktuelles Wetter über wunderground.com

Verfasst: 04.10.2012, 20:26
von macklcat
Habe alles wie beschrieben angelegt. Es wird bei mir aber nur eine leer wetteraktuell.xml beim ausführen des Scriptes angelegt. Die URL habe ich auch überprüft (set url http://api.wunderground.com/api/<123456 ... a/Imst.xml). Woran könnte es noch liegen, dass die wetteraktuell.xml nur eine leere Seite liefert.

Aufgerufen wird mein TCL-Script mit
string stdout;
string stderr;
system.Exec("tclsh /usr/local/addons/wetter/wetteraktuell.tcl", &stdout, &stderr);

Re: AW: Aktuelles Wetter über wunderground.com

Verfasst: 04.10.2012, 20:29
von grmpf
Den Link mal im Browser probiert?

Gesendet von meinem GT-P1000 mit Tapatalk 2

Re: Aktuelles Wetter über wunderground.com

Verfasst: 05.10.2012, 06:48
von macklcat
Ja, im Browser funktioniert er.
kann es sein, weil ich meine homematic auf port 443 umgeleitet habe?

Re: Aktuelles Wetter über wunderground.com

Verfasst: 08.10.2012, 12:16
von grmpf
Der Ausgabepfad für die Datei wetteraktuell.xml stimmt auch? Die Datei ist nach einer Abfrage auch da?

Re: Aktuelles Wetter über wunderground.com

Verfasst: 08.10.2012, 14:10
von macklcat
ja die Datei wetteraktuell.xml wird in usr/local/addons/wetter/ jedesmal angelegt bzw geändert wenn man sie nicht löscht, aber eben ohne Inhalt.

Re: Aktuelles Wetter über wunderground.com

Verfasst: 08.10.2012, 15:01
von grmpf
Was heißt ohne Inhalt? Vollkommen leere Datei?? Dann würde irgenwas mit der url nicht stimmen!
Was hat denn die tcl-Datei bei Dir für Berechtigungen? 755?

Re: Aktuelles Wetter über wunderground.com

Verfasst: 08.10.2012, 15:24
von macklcat
Ja die Datei hat einen leeren Inhalt. Die url hab ich aber getestet die funkioniert. Die tcl-Datei hat die Berrechtigung 755

Re: Aktuelles Wetter über wunderground.com

Verfasst: 08.10.2012, 15:30
von grmpf
Dann kopiere doch mal einfach deine beiden Zeilen die dem entsprechen:

set url http://api.wunderground.com/api/<KEY>/c ... /<ORT>.xml
exec /usr/bin/wget -q -O /usr/local/addons/wetter/wetteraktuell.xml $url

hierher.

Re: Aktuelles Wetter über wunderground.com

Verfasst: 08.10.2012, 16:38
von macklcat
set url http://api.wunderground.com/api/<meinke ... a/imst.xml
exec /usr/bin/wget -q -O /usr/local/addons/wetterauskunft/wetteraktuell.xml $url