Wetterdaten von Wunderground

Wetterdaten von Wunderground
wunderground.com

Auf der Suche nach einer Lösung extern ermittelte Wetterdaten in HomeMatic-Programmen zu verwenden, bin ich im Homematic-Forum fündig geworden. Der Beitrag von Dr. Eugen Stall (funkleuchtturm) beschreibt sehr anschaulich, wie man mittels HomeMatic-Script eine XML-Datei von wunderground.com parsen und gefundene Inhalte in Systemvariablen schreiben kann. Ich habe sein Script um zwei Systemvariablen erweitert und zusätzlich die von wunderground.com gelieferten Wochentage und Monate ins Deutsche übersetzt. Dadurch konnte ich meine HomeMatic Installation mit Wetterdaten von Wunderground zur Steuerung meiner Komponenten ergänzen.

Update 25.11.21: Wunderground hat die API-Schnittstelle deaktiviert, eine Alternative bietet Wunderground leider nicht an.

Update 30.07.18: Wunderground vergibt inzwischen keine API-Keys mehr.

Wunderground schreibt dazu auf der Website: „To improve our services and enhance our relationship with our users, we will no longer provide free weather API keys as part of our program. If you have been directed to download our Weather Underground free API key by a third party provider, please contact your vendor for resolution.“

Update 05.04.17: Die korrekte Darstellung vom „ü“ in den Systemvariablen W_Windrichtung und W_Windbedingungen erledige ich jetzt per Suchen & Ersetzen.

Wer sich ein bisschen in HomeMatic-Script eingelesen hat, kann sehr einfach auch weitere Daten aus dem XML-File in Systemvariable schreiben oder evtl. auch an der Datenaufbereitung „schrauben“ um die Wetterdaten von Wunderground für die Steuerung von HomeMatic-Komponenten zu nutzen.

Hinweis: Ich gehe davon aus, dass du CUxD bereits installierst hast! Falls dies noch nicht geschehen ist, findest du hier eine Anleitung.

Hier in aller Kürze, wie du das Script zum Laufen bringst:

  • Einen Account bei wunderground.com anlegen und einen API-Key erstellen, eine detaillierte Anleitung dazu findest du hier.
  • Alle 16 Systemvariablen anlegen, Schreibweise und Feldtyp bitte beachten. Achtung: Beim kleinsten Schreibfehler, oder wenn du eine Systemvariable vergisst anzulegen, läuft das Script NICHT!
  • Im Script deinen API-Key und die von dir präferierte Wetterstation in der URL-Zeile eintragen. Am besten dir zusammengebaute URL zum Test direkt im Browser ausprobieren. Hast du alles richtig gemacht, erscheint beim Testen ein kompletter XML-File mit den Wetterdaten von Wunderground deiner präferierten Wetterstation im Browser.
  • Anschliessend ein Programm (siehe unten) erstellen und das Script an entsprechende Stelle kopieren, um die Wetterdaten von Wunderground in Systemvariablen zu schreiben.
! Wetterdaten von wunderground.com holen

!Stand 03.04.2014  https://homematic-forum.de/forum/viewtopic.php?f=31&t=17209
        !zuerst folgende Systemvariablen anlegen
        !Achtung: keine vergessen und exakte Schreibweise mit Copy & Paste

        !W_Station                        Zeichenkette
        !W_Aktualisierung             Zeichenkette
        !W_Bedingungen               Zeichenkette
        !W_Temperatur                  Zahl                     °C
        !W_Luftfeuchte                  Zahl                      %
        !W_Windbedingungen       Zeichenkette
        !W_Windrichtung               Zeichenkette
        !W_Windrichtg                   Zahl                       °
        !W_Windgeschwindigkeit   Zahl                     km/h
        !W_Windboeen                  Zahl                     km/h
        !W_Luftdruck                      Zahl                      mb
        !W_Luftdrucktrend             Zeichenkette
        !W_Taupunkt                      Zahl                     °C
        !W_UV                                Zahl
        !Aussentemperatur         Zeichenkette  (Erweiterung E.Simdorn)
        !Luftfeuchtigkeit         Zeichenkette  (Erweiterung E.Simdorn)
 
        ! Weiter Ergaenzungen durch E.Simdorn
        ! Uebersetzung der Monate und Wochentage
        ! Temperatur und Luftfeuchtigkeit jeweils in einen Text-String umwandeln und formatieren
        ! Temperatur und Luftfeuchtigkeit jeweils in einen Text-String umwandeln und formatieren
        ! Umlaut ü aus W_Windrichtung und W_Windbedingungen per Suchen & Ersetzen umgesetzt

        var url = "http://api.wunderground.com/api/hier_deinen_API-Key_eintragen/conditions/lang:DL/q/pws:IHESSENG16.xml";

        !hier ist die Abfrage mit CUxD
        dom.GetObject("CUxD.CUX2801001:1.CMD_SETS").State("wget -q -O - '"#url#"'");
        dom.GetObject("CUxD.CUX2801001:1.CMD_QUERY_RET").State(1);
        string wetter_xml = dom.GetObject("CUxD.CUX2801001:1.CMD_RETS").State();
 
        !hier ist die Abfrage mit system.Exec
        !string stdout;
        !string stderr;
        !system.Exec("wget -q -O - '"#url#"'", &stdout, &stderr);
        !WriteLine(stdout);
        !string wetter_xml = stdout;
        !WriteLine(wetter_xml);
 
        !Beim XML-File den ueberfluessigen Header entfernen
        integer laenge = wetter_xml.Length();
        integer wort_position = wetter_xml.Find("observation_location");
        wetter_xml = wetter_xml.Substr(wort_position, (laenge - wort_position));
        !WriteLine(wetter_xml);
 
        !Daten mit Suchworten aus XML-File ausfiltern:
 
        !string word = "full";
        string word = "city";
        integer word_laenge = word.Length();
        integer word_position = wetter_xml.Find(word);
        string daten = wetter_xml.Substr((word_position + word_laenge +1), 100);
        integer word_position = daten.Find(word);
        daten = daten.Substr(0, (word_position -2));
        daten = daten;
        dom.GetObject("W_Station").State(daten);
 
        !string word = "observation_time";
        string word = "observation_time_rfc822";
        integer word_laenge = word.Length();
        integer word_position = wetter_xml.Find(word);
        string daten = wetter_xml.Substr((word_position + word_laenge +1), 100);
        integer word_position = daten.Find(word);
        !daten = daten.Substr(0, (word_position -2));
        daten = daten.Substr(0, (word_position -11));

string Text01=daten.StrValueByIndex(" ", 0);
string Text02=daten.StrValueByIndex(" ", 1);
string Text03=daten.StrValueByIndex(" ", 2);
string Text04=daten.StrValueByIndex(" ", 3);
string Text05=daten.StrValueByIndex(" ", 4);

string wochentag = "";
if (Text01 == "Mon,") {wochentag = "Montag" ;}
if (Text01 == "Tue,") {wochentag = "Dienstag" ;}
if (Text01 == "Wed,") {wochentag = "Mittwoch" ;}
if (Text01 == "Thu,") {wochentag = "Donnerstag" ;}
if (Text01 == "Fri,") {wochentag = "Freitag" ;}
if (Text01 == "Sat,") {wochentag = "Samstag" ;}
if (Text01 == "Sun,") {wochentag = "Sonntag" ;}

if(Text03=="Jan") {Text03 = "Januar" ;}
if(Text03=="Feb") {Text03 = "Februar" ;}
if(Text03=="Mar") {Text03 = "März" ;}
if(Text03=="Apr") {Text03 = "April" ;}
if(Text03=="May") {Text03 = "Mai" ;}
if(Text03=="Jun") {Text03 = "Juni" ;}
if(Text03=="Jul") {Text03 = "Juli" ;}
if(Text03=="Aug") {Text03 = "August" ;}
if(Text03=="Sep") {Text03 = "September" ;}
if(Text03=="Oct") {Text03 = "Oktober" ;}
if(Text03=="Nov") {Text03 = "November" ;}
if(Text03=="Dec") {Text03 = "Dezember" ;}

string outText= wochentag # ", " # Text02 # ". " # Text03 # " " # Text04 # " / " # Text05 # " Uhr";
daten = outText;

        dom.GetObject("W_Aktualisierung").State(daten);
 
        string word = "weather";
        integer word_laenge = word.Length();
        integer word_position = wetter_xml.Find(word);
        string daten = wetter_xml.Substr((word_position + word_laenge +1), 100);
        integer word_position = daten.Find(word);
        daten = daten.Substr(0, (word_position -2));
        dom.GetObject("W_Bedingungen").State(daten);
 
        string word = "temp_c";
        integer word_laenge = word.Length();
        integer word_position = wetter_xml.Find(word);
        string daten = wetter_xml.Substr((word_position + word_laenge +1), 100);
        integer word_position = daten.Find(word);
        daten = daten.Substr(0, (word_position -2));
        real zahl = daten.ToFloat();
        dom.GetObject("W_Temperatur").State(zahl);
! *****
! Temperatur real in string umwandeln und anschliessen den Dezimalpunkt gegen ein Komma austauschen
string TextTemp = zahl.ToString(2);
integer TPunkt = TextTemp.Find(".");
string TextTemp1 = TextTemp.Substr(0, TPunkt);
TextTemp1 = TextTemp1 # ","# TextTemp.Substr(TPunkt +1, 2) # " Grad Celsius";
TextTemp = TextTemp1;
dom.GetObject('Aussentemperatur').Variable(TextTemp);
WriteLine(dom.GetObject('Aussentemperatur').Variable());
! *****
        string word = "relative_humidity";
        integer word_laenge = word.Length();
        integer word_position = wetter_xml.Find(word);
        string daten = wetter_xml.Substr((word_position + word_laenge +1), 100);
        integer word_position = daten.Find(word);
        daten = daten.Substr(0, (word_position -2));
        integer zahl = daten.ToFloat();
        dom.GetObject("W_Luftfeuchte").State(zahl);
! *****
string TextHumi = zahl.ToString(1);
integer TPunkt = TextHumi.Find(".");
string TextHumi1 = TextHumi.Substr(0, TPunkt);
TextHumi1 = TextHumi1 # ","# TextHumi.Substr(TPunkt +1, 2) # " %";
TextHumi = TextHumi1;
dom.GetObject('Luftfeuchtigkeit').Variable(TextHumi);
WriteLine(dom.GetObject('Luftfeuchtigkeit').Variable());
! ***** 
        string word = "wind_string";
        integer word_laenge = word.Length();
        integer word_position = wetter_xml.Find(word);
        string daten = wetter_xml.Substr((word_position + word_laenge +1), 100);
        integer word_position = daten.Find(word);
        daten = daten.Substr(0, (word_position -2));
        ! Umlaute korrigieren
        string textuml = daten;
        string textneu = "ü";
        string teilstr;
        integer teilstr_laenge;
        foreach (teilstr, textuml.Split("ü"))
        {
               if (textneu == "ü")
               {
                     textneu = teilstr;
               } else {
                     teilstr_laenge = teilstr.Length(); 
                     teilstr = teilstr.Substr(1,teilstr_laenge-1);
                     textneu = textneu # "ü" # teilstr;
               }
        }
        daten = textneu;
        if (daten == "Calm") {daten = "Windstill" ;}
        dom.GetObject("W_Windbedingungen").State(daten);
 
        string word = "wind_dir";
        integer word_laenge = word.Length();
        integer word_position = wetter_xml.Find(word);
        string daten = wetter_xml.Substr((word_position + word_laenge +1), 100);
        integer word_position = daten.Find(word);
        daten = daten.Substr(0, (word_position -2));
        ! Umlaute korrigieren
        string textuml = daten;
        string textneu = "ü";
        string teilstr;
        integer teilstr_laenge;
        foreach (teilstr, textuml.Split("ü"))
        {
               if (textneu == "ü")
               {
                     textneu = teilstr;
               } else {
                     teilstr_laenge = teilstr.Length(); 
                     teilstr = teilstr.Substr(1,teilstr_laenge-1);
                     textneu = textneu # "ü" # teilstr;
               }
        }
        daten = textneu;

        dom.GetObject("W_Windrichtung").State(daten);
 
        string word = "wind_degrees";
        integer word_laenge = word.Length();
        integer word_position = wetter_xml.Find(word);
        string daten = wetter_xml.Substr((word_position + word_laenge +1), 100);
        integer word_position = daten.Find(word);
        daten = daten.Substr(0, (word_position -2));
        if (daten ==  -9999) {
            daten = "0";
        }
        integer zahl = daten.ToFloat();
        dom.GetObject("W_Windrichtg").State(zahl);
 
        string word = "wind_kph";
        integer word_laenge = word.Length();
        integer word_position = wetter_xml.Find(word);
        string daten = wetter_xml.Substr((word_position + word_laenge +1), 100);
        integer word_position = daten.Find(word);
        daten = daten.Substr(0, (word_position -2));
        integer zahl = daten.ToFloat();
        dom.GetObject("W_Windgeschwindigkeit").State(zahl);
 
        string word = "wind_gust_kph";
        integer word_laenge = word.Length();
        integer word_position = wetter_xml.Find(word);
        string daten = wetter_xml.Substr((word_position + word_laenge +1), 100);
        integer word_position = daten.Find(word);
        daten = daten.Substr(0, (word_position -2));
        integer zahl = daten.ToFloat();
        dom.GetObject("W_Windboeen").State(zahl);
 
        string word = "pressure_mb";
        integer word_laenge = word.Length();
        integer word_position = wetter_xml.Find(word);
        string daten = wetter_xml.Substr((word_position + word_laenge +1), 100);
        integer word_position = daten.Find(word);
        daten = daten.Substr(0, (word_position -2));
        integer zahl = daten.ToFloat();
        dom.GetObject("W_Luftdruck").State(zahl);
 
        string word = "pressure_trend";
        integer word_laenge = word.Length();
        integer word_position = wetter_xml.Find(word);
        string daten = wetter_xml.Substr((word_position + word_laenge +1), 100);
        integer word_position = daten.Find(word);
        daten = daten.Substr(0, (word_position -2));
        dom.GetObject("W_Luftdrucktrend").State(daten);
 
        string word = "dewpoint_c";
        integer word_laenge = word.Length();
        integer word_position = wetter_xml.Find(word);
        string daten = wetter_xml.Substr((word_position + word_laenge +1), 100);
        integer word_position = daten.Find(word);
        daten = daten.Substr(0, (word_position -2));
        real zahl = daten.ToFloat();
        dom.GetObject("W_Taupunkt").State(zahl);
 
        string word = "UV";
        integer word_laenge = word.Length();
        integer word_position = wetter_xml.Find(word);
        string daten = wetter_xml.Substr((word_position + word_laenge +1), 100);
        integer word_position = daten.Find(word);
        daten = daten.Substr(0, (word_position -2));
        integer zahl = daten.ToFloat();
        dom.GetObject("W_UV").State(zahl);

Wetterdaten von Wunderground holen

wetterdaten06

Falls du weitere Werte aus dem XML-Datenstrom der Wetterdaten von Wunderground für deine HomeMatic-Installation nutzen willst, lies bitte auch die Kommentare. Hier habe ich schon für einige Leser Erweiterungen beschrieben.

In den Kommentaren gab es die Frage nach Wettervorhersagedaten, ich habe deshalb einen Beitrag zur Wettervorhersage mit Wunderground erstellt.

Autor: Erhard Simdorn

Am 1. September 2014 habe ich mir meine erste CCU2 gekauft und war von den Möglichkeiten der Hausautomation sofort begeistert. Am 22. November 2014 folgte dann die zweite CCU2 für einen weiteren Standort und bis heute sind es schon acht CCU2 für die ich der "Auslöser" war.

115 Gedanken zu „Wetterdaten von Wunderground“

  1. Hallo Erhard,
    du hast das Script um 2 Variablen erweitert. Alle Variblen fängen mit W_ an, ausser den beide. Für den späteren Überblick wäre es vielleicht besser auch die 2 mit einem W_ anfangen zu lassen.

    Was ich auch ganz gut fände ist, wenn bei den Variablen Zahl der Wertebereich angegeben wäre.

    Gruß Karsten

    1. Hallo Karsten, ich habe diese beiden zusätzlichen Systemvariablen extra ohne „w_“ angelegt. Diese beiden Systemvariablen enthalten die von wunderground.com ermittelten Daten aufbereitet für meine Favoriten auf der CCU2-Startseite. Da macht sich ein „w_“ nicht ganz so gut … 🙂

      Gruß Erhard

    1. Hallo Karsten,

      danke für den Hinweis. Mit dem Befehl dem „WriteLine“ lasse ich mir bei der Script-Entwicklung unter HQ WebUI den Inhalt von Variablen zur Kontrolle ausgeben, bei der späteren Ausführung des Scripts stören diese Ausgaben nicht wirklich. Aber der guten Ordnung halber habe ich die beiden Zeilen auskommentiert. 😉

      Liebe Grüße Erhard

  2. Hallo Erhard
    habe folgendes Problem alle meine Werte werden mit 0.00 ausgegeben. Wenn Ich das skript Teste im HQ WebUI bekomme Ich die Meldung ExecError: Execution failed
    Und unten Rechts steht
    wochentag Freitag
    TextHumi1
    TextTemp
    url http://api.wunderground.com/api/mein Key/conditions/lang:DL/q/mein Ort.xml
    word observation_time_rfc822
    outText Freitag, 14. Oktober 2016 / 08:18 Uhr
    TPunkt 0
    Text01 Fri,
    anfangsbuchstabe
    Text02 14
    daten_history_url http://www.wunderground.com/weatherstation/WXDailyHistory.asp?ID=mein Ort
    Text03 Oktober
    wort_position 755
    word_position 33
    Text04 2016
    Text05 08:18
    USER_ID 1004
    hier geht es noch weiter habe es aber weg gelassen
    hoffe du kannst mir helfen
    Gruß Ralf

    1. Hallo Ralf,

      hast du die Systemvariablen W_Station, W_Aktualisierung, W_Bedingungen, W_Temperatur, W_Luftfeuchte, W_Windbedingungen, W_Windrichtung, W_Windrichtg, W_Windgeschwindigkeit, W_Windboeen, W_Luftdruck, W_Luftdrucktrend, W_Taupunkt, W_UV, Aussentemperatur, Luftfeuchtigkeit angelegt?

      Dabei unbedingt auf die genaue Schreibweise achten.

      Gruß Erhard

  3. voll Stolz hab ich das geschafft!
    jetzt möchte ich gern, wenn die Temperatur < 6 Grad dann soll HM-Sec-Win (ist schon eingebunden) das Fenster schließen;
    sonst Fenster auf.
    Wie kann ich (Leihe) das realsisieren.
    Die Wetterdaten habe ich, die HM-SEC-Win ist einbunden.
    Vermutlich brauche ich hierzu ein kleines Script? Lieben Dank für Unterstützung.

    1. Hallo Hermann, Gratulation zum erfolgreichen Einstieg in die HomeMatic-Welt!

      Die Systemvariable W_Temperatur ist eine Ganzzahl, die du in HomeMatic-Programmen auswerten kannst.
      Die Logik dabei ist ziemlich einfach:

      Bedingung: Wenn…
      [Systemzustand] W_Temperatur im Wertebereich kleiner gleich 6.00 C [bei Änderung auslösen]
      Aktivität: Dann…
      [Geräteauswahl] HM-Sec-Win [sofort] …

      Ich habe leider (noch) keine HM-Sec-Win und weiß deshalb nicht mit welcher Aktion der Aktivitätenzweig weiter gehen könnte.

      Falls du noch Fragen hast, bitte einfach melden.

      Gruß Erhard

  4. Lieber Erhard,

    Wir haben nun auch unsere Wetterstation erfolgreich mit deinem Skript eingebunden!
    Super!
    Uns fehlen allerdings noch ein paar Daten. Der aktuelle Regen, die Regen menge mm/h und die Helligkeit in W/m2.
    Kannst du uns bei der einbindung dieser Parameter helfen?

    Des Weiteren haben wir ein sehr merkwürdigs Problem festgestellt. Die Daten, die die Wetterstation ausgibt sind dieselsben, die auch in Homematic übernommen werden. ABER die Daten für den luftdruck, die von der Wetterstation ausgegeben werden sind nicht die, die unser Display anzeigt und auch die, die unsere Wetterstation im internet liefert sind dieselben wie im Display, nicht die direkten Daten der Wetterstation.

    Auch zeigt die Wetterstation eine sehr merkwürdige Örtlichkeit an bei dem Paramerter Display Location. Hier steht eine falsche Höhe und ein falscher Namen. Wir konnten nicht herausfinden, wo diese zu ändern sind. Das sind zwar keine Probleme mit dem tollen Skript, aber vielleicht weißt du trotzdem Rat.

    vielen Dank und liebe Grüße
    Anna und Jörg

    1. Guten Abend Anna & Jörg,

      in der Funk-Wetterstation WDC 7000 könnt Ihr durch das Berühren der Fläche „CFG” das Konfigurationsmenü öffnen und durch wiederholtes Berühren der Fläche „NEXT” zum Hauptmenüpunkt „SYSTEM” navigieren und dort die Option „ALTITUDE” anwählen. Durch das Berühren der Flächen „+” bzw. „-” könnt Ihr die geografische Höhe Eures Standorts über dem Meeresspiegel (Höhe ü. NN) in Metern einstellen. Wartet einige Sekunden, danach erscheinen die korrigierten Daten für den relativen Luftdruck im Display. Habt Ihr auch die Position Eures Standorts über den Hauptmenüpunkt „POSITION” eingestellt?

      Gruß Erhard

      1. Lieber Erhardt,
        Wir haben nicht die WDC7000 sondern eine Frogit.
        Ja, wir haben die Höhe und den Ort korrekt eingestellt. Bei unserer Wetterstation wird der selbst eingestellte Ort angezeigt und eben auch der falsche Ort, von dem wir nicht wissen, wo er herkommt.
        Aber das ist auch nicht ganz so entscheidend. Meinst du, du kannst uns beim Einbinden den fehlenden Daten helfen?

        Danke und Gruß
        Anna und Jörg

        1. Guten Abend Anna & Jörg,

          ihr habt also eine Froggit-Wetterstation und übermittelt die Daten an wunderground.com. Diese fragt ihr dann mit dem Skript ab und möchtet jetzt auch die Parameter für aktuelle Regen, die Regen menge mm/h und die Helligkeit in W/m2. Wenn ihr mir eure öffentliche Station-ID mitteilt, kann ich mir den Datenstrom anschauen und euch die notwendigen Skript-Erweiterungen schicken.

          Gruß Erhard

          P.S.: Die Idee mit der Froggit-Wetterstation ist klasse, scheint viel günstiger als die ELV-Wetterstation. Für welchen Typ von Frogit habt ihr euch entschieden, was waren die Kriterien?

  5. Hallo Erhard,

    Vielen Dank für deine Hilfe. Wir nutzen die Froggit seit zwei Jahren und sind sehr zufrieden damit, es ist das Modell HP1000 und ein zusätzliches zweites Display HP1003. Der stationscode lautet XXXXXXXXXXX. Es wäre super wenn du mal schauen könntest. Bitte den Code nicht veröffentlichen.
    Vielen Dank und herzliche Grüße

    Anna und Jörg

    1. Guten Abend Anna & Jörg,

      für die Regenmenge der letzten Stunde bitte eine weitere Systemvariable vom Typ Zahl mit dem Namen W_Regen in der CCU2 anlegen und anschliessend folgenden Code am Ende des Skripts einfügen:

      string word = "precip_1hr_in";
      integer word_laenge = word.Length();
      integer word_position = wetter_xml.Find(word);
      string daten = wetter_xml.Substr((word_position + word_laenge +1), 100);
      integer word_position = daten.Find(word);
      daten = daten.Substr(0, (word_position -2));
      real zahl = daten.ToFloat();
      dom.GetObject("W_Regen").State(zahl);

      Für die Helligkeit in der CCU2 eine Systemvariable vom Typ Zahl mit dem Namen W_Solar anlegen und an das Ende des Skripts folgenden Code einfügen:

      string word = "solarradiation";
      integer word_laenge = word.Length();
      integer word_position = wetter_xml.Find(word);
      string daten = wetter_xml.Substr((word_position + word_laenge +1), 100);
      integer word_position = daten.Find(word);
      daten = daten.Substr(0, (word_position -2));
      real zahl = daten.ToFloat();
      dom.GetObject("W_Solar").State(zahl);

      Vielen Dank für den Tipp mit der Froggit HP1000, ich werde mir diese wahrscheinlich statt der HomeMatic-Wetterstation zulegen.

      Ich hoffe ich konnte euch weiterhelfen.

      Gruß Erhard

  6. Super vielen Dank,

    Kann ich daraus auch ein Diagramm erstellen, wir sind erst am Anfang bei Homematic. Aber inzwischen klappt es durch solch guten Support schon ganz gut. Wir wollten erst die Homematic kaufen obwohl wir die Froggit schon zwei Jahre haben weil wir dachten das wir sie nicht einbinden können.

    Grüße Anna und Jörg

    1. Guten Abend Anna & Jörg,

      leider lassen sich mit der CCU2 nur Diagramme von HomeMatic-Komponenten erstellen.

      Ich habe deshalb einen Raspberry in Betrieb genommen und CCU-Historian darauf installiert. Damit werden die Daten der HomeMatic-Komponenten sowie die Werte der Systemvariablen aufgezeichnet und in Diagrammen darstellen.
      Eine Anleitung wie ihr einen Raspberry einrichtet und wie ihr darauf CCU-Historian installiert habe ich im Detail beschrieben.

      Gruß Erhard

  7. Hallo Erhard.
    Danke für das Script und die anderen tollen Anleitungen. Ich habe die CCU2 seit 2 Wochen und bin schon gut fortgeschritten in der Automatisierung. Läuft alles.

    Leider bekomme ich bei dem Wetterscript trotz korrekter Systemvariablen und der korrekten Einbindung von API und Wetterstation nur 0-Werte….

    Woran kann das liegen?

    1. Guten Abend Tommy,
      bitte schicke mir mal die Kennung der Wunderground-Station die du versuchst abzufragen.
      Wenn du möchtest, werde ich diese vor der Veröffentlichung deines Beitrages unkenntlich machen.
      Gruß Erhard

  8. Hallo Erhard, ich habe das komplette Script kopiert. Bitte die Kennung unkenntlich machen. Danke fürs helfen.

    1. Hallo Tommy,

      danke für das Posting des kompletten Scripts. Ich habe es auf deinen Wunsch aus deinem Post entfernt.

      Der Fehler lag tatsächlich in meinem Script, hat sich wohl beim Aktualisieren eingeschlichen.

      Durch den Abbruch des Scriptes konnten die Systemvariablen nicht gefüllt werden!

      Ich habe den Fehler korrigiert und das Script erneut ohne Fehler getestet. Bitte kopiere das aktualisierte Script nochmal in deine CCU2 und ergänze deinen API-Key und deine Wetterstation.

      Freue mich über eine Rückmeldung, es sollte jetzt klappen!

      Gruß Erhard

  9. Hallo Erhard,

    leider das gleiche Problem bei mir – Null Werte und ??? als Antwort…
    Haben die bei Weatherunderground was an der Ausgabe geändert?

    Gruß
    Andreas

    1. Hallo Andreas,

      nein, die der XML-Feed von Wunderground funktioniert einwandfrei!
      Bitte überprüfe dein Script in der HomeMatic-Oberfläche auf Fehler, indem du im Fenster „Skript bearbeiten“ den Button „Fehlerprüfung“ klickst.
      Falls kein Syntax-Fehler vorliegt, erscheint im unteren Fenster „Kein Fehler“. Sollte eine Fehlermeldung erscheinen, schicke mir bitte dein geändertes Script. Ich werde es vor Freischaltung deines Kommentars löschen.

      Gruß Erhard

      1. Hallo Erhard,

        Fehlerprüfung habe ich durchgeführt – kein Fehler…

        Der Link im Browser bringt auch vernünftige Ergebnisse zurück.

        Mein Script sieht wie folgt aus (siehe unten) – Dankes schon im Vorfeld für die Hilfe.
        Noch eine Frage zu den angelegten Variablen mit Zahl – da ist der Wertebereich von 0 bis 65000 eingestellt. Ist hier eine Änderung notwendig, z.B. -30 bis 50?

        Gruß
        Andreas

        Anhang durch Admin gelöscht!

        1. Hallo Andreas,

          in mein Script hat sich ein Fehler eingeschlichen, bitte versuche es mit dem von mir vorgestern auf der Website korrigierten Script!

          Nach der Korrektur des Scripts konnte ich die Daten der von dir abgefragten Wetterstation ohne Fehler in meine Variablen lesen.

          Dein Hinweis auf den Wertebereich der Systemvariablen ist vollkommen richtig.

          Falls du trotz der Verwendung des aktuellen Script weiterhin Hilfe benötigst, bitte einfach melden.

          Gruß Erhard

          P.S.: Ich gehe davon aus, dass du das HomeMatic-Plugin CUxD auf deiner CCU2 installiert hast. Sonst kann das Script nicht auf wunderground.com zugreifen und die Systemvariablen füllen.

        2. Hallo Andreas,

          läuft das Skript inzwischen? Falls es immer noch nicht läuft und du die Installation vom CUxD nach meiner Anleitung durchgeführt hast, liegt der Fehler bei mir. In meinem Beitrag hatte ich eine kleine Wichtigkeit vergessen. Jedes neue CUxD-Gerät erscheint zunächst im Posteingang der CCU2 und muss dort fertiggestellt werden. Danach muss die CCU2 neu gestartet werden. Ich habe meine Installationsanleitung für den CUxD dahingehend ergänzt.

          Gruß Erhard

          1. Hallo Erhard,

            muss ich mir heute Abend nochmals anschauen – sorry, war in den Schulferien mit den Kiddis unterwegs, Schlittenfahren macht auch Spass 🙂
            Habe eben auch deine Doku mit der HUE gesehen – TOP! Da spare ich mir den Umweg über IFTTT…

            Gruß
            Andreas

          2. Hallo Andreas,

            ich habe über das Wochenende auch an einer Statusrückmeldung der Philips Hue Lampen in der CCU2 gearbeitet. Funktioniert einwandfrei und wird in den kommenden Tagen als Schritt-für-Schritt Anleitung veröffentlich.

            Gruß Erhard

            Update: Inzwischen habe ich eine Schritt für Schritt Anleitung für die Abfrage des Hue-Lampenstatus erstellt.

          3. Hallo Erhard,

            das CUxD Gerät hat in der Tat gefehlt – Danke für den Tipp!
            Habe jetzt gute Werte bis auf 2 Variablen:
            W_Windrichtg: -9999.00
            W_Windgeschwindigkeit: -16088.40 km/h

            Hab ich da noch was falsch bei den Variablen definiert?

            Gruß
            Andreas

          4. Hallo Andreas,

            bitte rufe die XML-Daten von wunderground per http-Befehl im Browser ab und kontrolliere im Ergebnis für W_Windrichtg den Wert in und für W_Windgeschwindigkeit den Wert in . Wenn dort ähnlich „komische“ Werte stehen, liegt es an der Wetterstation.

            Ich wüsste nicht, was du an den Systemvariablen falsch gemacht haben könntest.

            Gruß Erhard

  10. Lieber Erhard, leider kommen immer noch nur 0-Werte. Zumindest jedoch beim Skript testen jetzt 2 Ausgaben:
    0,00 Grad Celsius
    0,0 %
    Vorher kam da gar nix.

    Der CUxD Syslog zeigt folgendes an:
    Jan 4 07:26:32 homematic-ccu2 daemon.info cuxd[18433]: pclose(wget -q -O – ‚http://api.wunderground.com/api/hier meine API/conditions/lang:DL/q/pws:IGOSLAR5.xml‘) exit(4) 0s

  11. Tausend Dank lieber Erhard, es waren die Netzwerkeinstellungen, die das Problem verursachten.

    Du bist Spitze!!!!

    1. Hallo Thomas,

      das freut mich!

      Viel Spaß weiterhin mit deiner CCU2 und den Hausautomationsprojekten.

      Hausautomation ist wie früher Modelleisenbahn: nimmt viel Zeit in Anspruch, bereitet viel Spaß und wird ständig ausgebaut.

      Liebe Grüße Erhard

    1. Hallo Benni,

      hast du CUxD nach meiner Anleitung installiert? Falls ja, liegt der Fehler wahrscheinlich bei mir. In meinem Beitrag hatte ich eine kleine Wichtigkeit vergessen. Jedes neue CUxD-Gerät erscheint zunächst im Posteingang der CCU2 und muss dort fertiggestellt werden. Danach muss die CCU2 neu gestartet werden, ich habe meine Installationsanleitung für den CUxD dahingehend ergänzt. Falls kein CUxD-Gerät im Posteingang zum Fertigstellen liegt, schicke mir bitte einen ScreenShot vom CUxD-Syslog. Den CUxD-Syslog erreichst du in der Web-Oberfläche der CCU2 über „Einstellungen/Systemsteuerung/Zusatzsoftware/CUx-Daemon/Einstellen“ und dann im CUxD „Info/Full Syslog“.

      Gruß Erhard

  12. Hallo Erhard, ich habe es auch nach Deiner Anleitung versucht. Auch die Meldung im Posteingang funktioniert. Ich habe auch eine feste Station eingegeben.

    Alle Systemvariablen sind exakt erstellt. Ich bekomme keine Daten

    Gruß
    Stefan

    1. Hallo Stefan,

      deine CCU2 hat anscheinend keinen Zugriff auf einen DNS-Server um die URL von Wunderground in eine IP-Adresse aufzulösen.
      Darauf deutet auch die Fehlermeldung „Try to get time from ntp.homematic.com“ im CUxD-Log hin.

      Wahrscheinlich blinkt bei deiner CCU2 die LED Internet.

      Wie hast du die IP-Adresse der CCU2 vergeben? Per DHCP-Server oder manuell?
      Hast du evtl. unter „Einstellungen/Systemsteuerung/Netzwerkeinstellungen/IP-Einstellungen“ den Haken gesetzt und keinen „Bevorzugter DNS-Server“ angegeben?
      Ich empfehle die IP-Adresse der CCU2 und den genutzten DNS-Server in deinem Internet-Router (z.B. deiner Fritz!Box) zu ermitteln und diese Daten dann fest in der CCU2 einzutragen.

      Nach der Korrektur der Netzwerkeinstellungen sollte das Skript ohne Probleme die Systemvariablen füllen.

      Gruß Erhard

      1. Hallo Erhard, meine CCU 2 (XXX.1.99) hängt auf dem Dachboden und ist über ein DLAN -> NETGEAR WNR 2200 (XXX.1.22) -> Fritzbox (XXX.1.1) verbunden.

        Die Internetdiode blinkt NICHT !

        Ich habe meiner HM die IP 192.XXX.1.99 vergeben.
        Das Gateway liegt bei 192.XXX.1.1
        Bevorzugter DNS-Server: 192.XXX.0.1

        Die IP der CCU2 wird mir in der Fritz.box NICHT angezeigt, jedoch im nachgeschalteten WNR 2200 (192.XXX.1.22) Dort kann ich die IP der HM auch ablesen.

        Gruß Stefan

        1. Hallo Stefan,

          der interne DNS-Server ist in der Regel der Internet-Router, also deine Fritz!Box.

          Deine Fritzbox hat die IP-Adresse 192.XXX.1.1 und als DNS-Server hast du die 192.XXX.0.1 angegeben.

          Du hättest somit zwei IP-Subnetze in deinem Netzwerk!

          Wenn du dir nicht sicher bist, kannst du zum Test auch die beiden öffentlichen Google DNS-Server verwenden:
          8.8.8.8 und 8.8.4.4

          Mit einem oder beiden diese DNS-Server sollte die Namensauflösung in deiner CCU2 klappen. Danach sollte die Fehlermeldung „Try to get Time from …“ im CUxD-Syslog verschwinden und des wunderground-Skript die Systemvariablen mit Daten füllen.

          Gruß Erhard

          1. Also ich bin völlig verwirrt … ich komme hier gar nicht mehr weiter … keinerlei Veränderung … per Email könnte ich wenigstens Bilder anhängen …

          2. Hallo Stefan,

            ich gehe davon aus, dass du einen Windows Rechner benutzt. Unter Windows 7/8 kannst du über [Start]/[Ausführen]/[cmd] in das Terminal gelangen.
            Gibt dort bitte den Befehl ipconifg /all ein. Anschliessend erscheint die IP-Konfiguration deiner Netzwerkschnittstellen LAN/WLAN. Dabei wird auch die IP-Adresse deines Gateways angegeben, diese IP-Adresse in der Netzwerkkonfiguration deiner CCU2 eintragen.

            Gruß Erhard

  13. Hallo,

    erstmal vielen, vielen Dank für die Anleitung. Ich habe alle Systemvariablen eingeplegt und im Programm auch das komplette Script mit meiner API eingepflegt. Die CuxDaeomon ist auch entsprechend der Anleitung auf der Seite eingerichtet. Aber ich erhalte nur Null-Werte und ??? in der Statusanzeige.
    Ich wäre für eine kurze Hilfestellung sehr dankbar.
    Vielen Dank im Voraus

    1. Hallo Maurice,

      bist du sicher, dass du das angelegte CUxD-Gerät im Posteingang der CCU2 bestätigt hast? Anschliessend musst du unbedingt die CCU2 einmal neu starten, sonst steht das neue CUxD-Gerät nicht in allen Funktionen zur Verfügung.
      Falls du beide Punkte beachtet hast, schaue bitte im CUxD-Syslog nach der Fehlermeldung und schicke mir diese evtl. einfach zu.

      Gruß Erhard

      1. Hallo Erhard,

        ich hatte das angelegte CuxD im Posteingang und bestätigt. Anschließend auch die CCU2 noch mal neu gestartet. Mein Syslog sieht wie folgt aus:

        [Syslog durch Admin gelöscht]

        1. Hallo Maurice,

          bitte rufe das HomeMatic-Programm von Hand OHNE Wenn-Bedingung auf und kopiere anschliessend den CUxD-Syslog. In dem von dir übersandten Syslog war keine Fehlermeldung bzgl. des CUxD-Aufrufs drin.

          Gruß Erhard

          1. Hallo Erhard,
            die WENN-Funktion wurde nun von mir gelöscht und über „Status und Bedienung in der CCU2 gestart. Hier ist das Ergebnis der Syslog:

            Jan 29 21:39:50 homematic-ccu2 local0.err ReGaHss: Error: IseXmlRpc::CallGetValue: CallXmlrpcMethod failed [../Platform/DOM/iseXmlRpc.cpp (1447)]

            [Rest vom Syslog durch Admin gelöscht]

            Ich danke schon mal herzlichst,
            Maurice

          2. Guten Abend Maurice,

            die häufig auftretende Fehlermeldung deutet auf ein Skript hin, dass Amok läuft. In welcher Frequenz rufst du denn das Wunderground-Skript auf. Als ob das Skript die Systemvariablen nicht füllen kann, da es gerade schon wieder gestartet wird! Bitte deaktiviere das Wunderground-Skript, indem du das Häkchen unter „Programme/Verknüpfungen“ bei „Aktion“ weg nimmst. Dann warte eine kurze Zeit und schaue wieder in das CUxD-Syslog, ob du neue Fehlermeldungen laut Zeitstempel findest.

            Gruß Erhard

  14. Hallo Erhard,
    sorry, jetzt habe ich noch mehr Fehlermeldungen. Ich glaube ich mache alles noch mal neu. Also das Gerät bei CUx-Daemon neu installieren und das Programm mit dem Skript neu schreiben. Nur die Systemvariablen lasse ich drin, hier liegt aus meiner Sicht nämlich kein Fehler vor. Anbei der neue Syslog-Auszug:

    >…
    Jan 30 21:22:07 homematic-ccu2 local0.err ReGaHss: Error: IseESP::SyntaxError= Error 1 at row 2 col 20 near ^ ! Wetterdaten Datteln – Temperatur ermitteln !Stand 03.04.2014 http://homema^M [../Platform/DOM/iseESP.cpp (1067)]
    Jan 30 21:22:07 homematic-ccu2 local0.err ReGaHss: Error: ParseProgram: SyntaxError= ! Wetterdaten Datteln – Temperatur ermitteln
    >…
    [Rest vom Syslog durch Admin entfernt]

    Herzlichen Dank noch mal,
    Maurice

    1. Hallo Maurice,

      ich würde das wunderground HomeMatic-Programm, inkl. Skript, von der CCU2 löschen und anschliessend die CCU2 durchstarten. Einen kleinen Moment warten und anschliessend in den CUxD-Syslog schauen. Wenn jetzt die Fehlermeldungen aufhören, ist es tatsächlich das wunderground Programm.
      Ich habe heute mein Skript von meinem Blog kopiert und ausprobiert, funktioniert einwandfrei.
      Wie kopierst du das Skript von meinem Blog? Bitte direkt über die Zwischenablage und nicht über einen Text-Editor.

      Gruß Erhard

  15. Hallo Erhard,

    genau, ich habe es direkt und komplett rauskopiert, allerdings ohne die Bezifferung der Zeilen. Habe ausßer meiner API und der Wetterstation nichts verändert. Die url funktioniert im Browser auch super. Habe nun alles, bis auf die 16 einzelnen Systemvariablen, gelöscht und beginne von vorne. Irgendwo habe ich da wohl einen Fehler drin… Ich gebe gleich auf jeden Fall mal eine Info.

    Herzlichen Dank,
    Maurice

    1. Hallo Maurice,

      bitte nutze zum Kopieren des Skripts unbedingt die Kopierfunktion oben rechts aus der Titelleiste des Skript-Fensters. Dann werden die Zeilennummern automatisch ausgeblendet und du kopierst dir keine ungültigen Zeichen in dein Skipt.

      Gruß Erhard

      1. Hallo Erhard,

        leider nichts zu machen. CuxDaemon noch upgedatet und alles neu formatiert und das Skript wie beschrieben rauskopiert. Immer noch werden die Fragezeichen und Nullen als Werte ausgegeben.

        Viele Grüße
        Maurice

          1. Hallo Erhard,

            leider immer noch diese Fehlermeldungen. Ich bin zwischenzeitlich auch mit meinen Ideen am Ende. Selbst die Systemvariablen habe ich noch mal neu eingegeben, um Fehler zu vermeiden. Auf einer Internetseite habe ich gelesen, dass das Problem von dom.GetObject in Skripten erzeugt werden kann, wenn es keine passende ID findet. Halte ich aber für unwahrscheinlich, da das Skript bei allen anderen läuft.
            Hier der Auszug:
            Jan 31 22:41:01 homematic-ccu2 local0.err ReGaHss: Error: IseESP::ExecError= Execution failed: [-1] 0 0x00 [0] 145 0x91 [1] 0 0x00 [2] 102 0x66 [3] 0 0x00 [4] 0 0x00 [../Platform/DOM/iseESPexec.cpp (11622)]
            Jan 31 22:41:45 homematic-ccu2 local0.err ReGaHss: Error: IseESP::ExecError= Execution failed: [-1] 0 0x00 [0] 145 0x91 [1] 0 0x00 [2] 102 0x66 [3] 0 0x00 [4] 0 0x00 [../Platform/DOM/iseESPexec.cpp (11622)]

            Übrigens, ich habe auch das Cux Geräte im KEY|EXEC_TIMEOUT von 10 auf 2 Minuten gestellt. Aber auch erfolglos.

            Viele Grüße
            Maurice

          2. Hallo Maurice,

            deine CCU2 kann anscheinend den DNS Namen nicht auflösen. Kann es sein, dass die Internet-LED an deiner CCU2 blinkt?
            Bitte schicke mir mal einen Screen-Shot von „Einstellungen/Systemsteuerung/Netzwerkeinstellung“ an erhard@simdorn.net.

            Welche AddOns hast du auf deiner CCU2 instatlliert?

            Gruß Erhard

  16. Hallo Erhard,
    den Screenshot habe ich dir auf deine Mailadresse geschickt. Die Internet-LED leuchtet, blickt aber nicht. Zudem funktioniert die CCU2 sonst einwandfrei.
    Außer CuXDeamon und meine-homematic laufen keine weiteren Addons.

    Viele Grüße
    Maurice

  17. Guten Morgen Erhard,
    kein Problem! Ich lasse meine Eingaben mal im Sytem hinterlegt und probiere weiter. Sollte ich eine Lösung finden, melde ich mich bei dir und werde berichten.
    Besten Dank auf jeden Fall,
    Maurice

  18. Hallo Erhard,
    ich habe gelesen, dass die System.Exec manchmal probleme macht. Im Handbuch von CuxD habe ich auf Rat folgende Passage gefunden:
    5.8.2 System.Exec (16 Kanäle)
    Dieses Gerät dient als Ersatz der undokumentierten und fehleranfälligen system.exec() Funktion auf der CCU. Die Funktionalität wird über das Lesen bzw. Schreiben von Daten- punkten eines HM-Gerätes abgebildet. Damit existiert eine einfache Möglichkeit zum direkten Ausführen von Systembefehlen aus der WebUI bzw. der CCU-Logikschicht. Die konfigurierte Befehlszeile wird mittels C-Funktion system() bzw. popen() als überwachter Hintergrundprozess ausgeführt. Die Überwachung kann verhindert werden, wenn am Ende der Befehlszeile ein & Zeichen steht.

    Was aber nicht, wo ich „&“ Zeichen einfügen soll.

    Viele Grüße
    Maurice

    1. Hallo Maurice,

      das &-Zeichen muss folgendermaßen an die Befehlszeile angehängt werden:

      !hier ist die Abfrage mit CUxD
      dom.GetObject("CUxD.CUX2801001:1.CMD_SETS").State("wget -q -O - '"#url#"'&");

      Bitte nicht bei den einfachen und doppelten Anführungszeichen durcheinander kommen, 😉

      Gruß Erhard

  19. Hallo Erhard

    Vielen Dank für Deine grosse Arbeit, funktioniert „fasst“ alles… Nur eben die Umlaute nicht…

    W_Windrichtung: Südost

    Muss ich irgend etwas noch anpassen?

    1. Hallo Claudio,

      einfach folgenden Abschnitt im Script austauschen:

      ! S # Süd ***
      if (anfangsbuchstabe == "S") {
      ! 4 # Süd
      if (word_laenge == 4) {daten = "Süd";}
      ! 7 ä Südost
      if (word_laenge == 7) {daten = "Süd-Ost";}
      ! 8 # Südwest
      if (word_laenge == 8) {daten = "Süd-West";}
      ! 12 # Süd-Südost
      if (word_laenge == 12) {daten = "Süd-Süd-Ost" ;}
      ! 13
      if (word_laenge == 13) {daten = "Süd-Süd-West" ;}
      }

      oder folgende Zeilen ergänzen:

      ! 7 ä Südost
      if (word_laenge == 7) {daten = "Süd-Ost";}

      Gruß Erhard

  20. Hallo Erhard, vielen Dank für dieses tolle Manual, hat auf anhieb alles geklappt. Super vielen Dank
    Peter

  21. Lieber Erhard,

    erstmal Glückwunsch zu deiner guten Website.
    Leider habe ich es nach mehrstündiger Installation und Syntaxüberprüfung nicht geschafft den Wetterdatenabruf zum Laufen zu bekommen.
    Habe alle Hilfestellungen aus den Kommentaren ausprobiert, die CCU mehrfach neu gestartet, die Scriptprüfung läuft fehlerfrei, etc…
    Aber immer wenn ich das Programm starte dreht sich für 2 Sekunden die Eieruhr, es erfolgt aber keine Ausgabe von Daten. (der XML-Script im Browser sieht aber gut aus….)

    Was mach ich falsch ?

    Gruß Mike

    Mar 14 21:33:01 homematic-ccu2 local0.err ReGaHss: Error: IseESP::ExecError= Execution failed: [-1] 0 0x00 [0] 97 0x61 [1] 0 0x00 [2] 99 0x63 [3] 0 0x00 [4] 100 0x64 [../Platform/DOM/iseESPexec.cpp (11622)]

  22. Hallo Erhard,

    danke für Deine prima Seite mit vielen Anregungen.

    Ich beschäftige mich schon seit einigen Jahren mit der Homematic, aber über einfache Wenn/Dann Programme bin ich nie hinausgekommen. Viele Komponenten habe ich mit PocketControl HM bedient und gesteuert.

    Deine Ausführungen und Beispiele haben in mir den Wunsch geweckt, mehr aus der Hausautomation zu machen.

    Angefangen habe ich mit WU Script und die Daten meiner Wetterstation in meiner Homematic zu verwenden. Ich habe mich schon immer geärgert, dass ich die Werte meiner Davis Vantage Pro nicht einlesen konnte. Der Weg über WU ist genial, danke.

    Ein schönes Wochenende aus dem Münsterland
    Andreas

    1. Hallo Andreas,

      ich freue mich, wenn mein Blog dir einige Anregungen gebracht hat. Das Hobby HomeMatic ist fast unerschöpflich, es gibt immer wieder neue Möglichkeiten seiner Kreativität freien Lauf zu lassen.

      Gruß Erhard

  23. Hallo Erhard ,
    Ersteinmal finde ich deine Beiträge enorm. Ich habe schon einige Projekte auf meiner Ccu2 umgesetzt.was mir besonders am Herzen liegt ist das Wetter.ich betreibe eine Davis Vantage pro2 mit Meteohub die ja auch eine xml liefert.wie kann ich die Daten in meiner ccu einbinden? Könntest du mir dabei helfen, ich bin ebnet nicht so ein Programmierer der das alleine schaffen könnte.ich brauche nur ein Beispiel zB die Temperatur auszulesen.ich wäre dir sehr dankbar.
    Mit freundlichen Grüßen , Michael Engelhardt

    1. Hallo Michael,

      ich kenne die Davis Vantage pro2 leider nicht, aber mit Hilfe von Meteohub sollte eine Übertragung zu wunderground.com einfach möglich sein. Sicherlich kann man auch die xml-Datei der Davis Vantage pro2 direkt durch die CCU2 abrufen und verarbeiten. Um dazu eine Anleitung schreiben zu können, fehlt mir allerdings die Wetterstation. Ich habe einen Windsensor im Einsatz, der ebenfalls direkt xml-Daten liefert die ich direkt über die CCU2 abrufe und auswerte. Hast du evtl. eine Anleitung wie du die xml-Daten im Browser abrufen kannst? Wenn ja, benötige ich diesen Aufruf und eine xml-Datei als Beispiel. Solltest du beides liefern können, nehme ich dir Herausforderung gerne an.

      Gruß Erhard

      1. Hallo Erhard, danke für die Antwort.
        Also zunächst einmal habe ich die Wetterstation Davis Vantage Pro2 die ihre Daten per Funk auf meinem kleinen Wetterserver (Meteohub)in einem Verzeichnis eine Datei ablegt die jede Minute aktuallisiert wird (allsensors.xml)Der Meteohub-Server läuft 24/7h und befindet sich in meinem Netzwerk (192.168.XXX.XXX) Dies allsensors.xml wertet alle Sensoren meiner Davis aus. Über dem Brauser gebe ich die IP-Adresse von diesem Verzeichnis ein ,(http://192.168.XXX.XXX/meteograph.cgi?text=all) und dann werden mir alle Sensoren (Variabelen)mit den aktuellen Werten dargestellt.zB:
        actual_th0_temp_c 2.7
        actual_th0_temp_f 36.9
        actual_th0_hum_rel 93
        actual_th0_hum_abs 5.4
        actual_th0_dew_c 1.7
        actual_th0_dew_f 35.1
        actual_th0_heatindex_c 2.7
        actual_th0_heatindex_f 36.9
        actual_th0_humidex_c 1.0
        actual_th0_humidex_f 33.8
        So habe ich die Möglichkeit hunderte von Sensoren , Variablen darzustellen.
        Also die Variable für zB. Temperatur actual_th0_temp_c
        im Browser :http://192.168.X.X/meteograph.cgi?text=actual_th0_temp_c
        enter und als Wert wird mir 2,7 angezeigt.
        Ich hoffe ich habe mich einigermaßen verständlich ausgedrückt.

        1. Hallo Michael,

          die Aufgabe klingt simple, ich benötige allerdings den kompletten im Browser dargestellten Quelltext. Je nachdem welchen Browser du verwendest, gelangst du entweder über das Menü [Ansicht]/[Quelltext] oder über den rechten Maustastendialog zum Quelltext des gelieferten Ergebnis. Bitte kopiere mir diesen Quelltext, dann kann ich dir am Wochenende ein entsprechendes Programm erstellen.

          Gruß Erhard

  24. Hallo Erhard, habe gerade versucht dir den Qellcode zu senden , aber hat nicht funktioniert. Ist wohl etwas zu groß für die Kommentar spalte .
    Aber ich war auch nicht ganz untätig ,
    var url = „http://192.168.X.X/meteograph.cgi?text=actual_th0_temp_c“;
    dom.GetObject(„CUxD.CUX2801001:2.CMD_SETS“).State(„wget -q -O – ‚“#url#“‚“);
    dom.GetObject(„CUxD.CUX2801001:2.CMD_QUERY_RET“).State(1);
    string srueck = dom.GetObject(„CUxD.CUX2801001:2.CMD_RETS“).State();
    WriteLine(srueck);
    dom.GetObject(ID_SYSTEM_VARIABLES).Get(„Davis Aussentemperatur“).State(srueck);
    (ist aber nicht auf meinem Mist gewachsen)

    Funktioniert !! (Freu) Aber vielleicht sollten wir trotzdem weiter machen , mit einem Projekt . Die Davis Wetterstation ist glaube ich ziemlich verbreitet und sie gehört auch zu den Profistationen , was mir gelungen ist , ist ja für EUCH Profis kein Problem. Ich weis noch nicht einmal wie ich dir den Quellcode zukommen lassen soll.
    Was habe ich gemacht , zuerst eine Variable erstellt mit dem Typ Zeichenkette,
    dann ein Program
    Bedingung: Wenn…
    Periodisch Ganztägig beginnend am 22.03.2017
    Aktivität: Dann…Vor dem Ausführen alle laufenden Verzögerungen für diese Aktivitäten beenden (z.B. Retriggern).
    var url = „http://192.168.X.X/meteograph.cgi?text=actual_th…

    Aktivität: Vor dem Ausführen alle laufenden Verzögerungen für diese Aktivitäten beenden (z.B. Retriggern).

    Ich finde das passt ganz klasse in deiner Schritt für Schritt Anleitung !!

    1. Hallo Michael,

      prima, da kannst du wirklich stolz sein! Du scheinst das Prinzip des wget-Aufrufs verstanden zu haben, damit kannst du jetzt weitere Daten in deine CCU2 einbinden. Ich habe einen professionellen Wettersensor (Windrichtung, Windgeschwindigkeit) für den Neubau meiner Tochter besorgt. Er besitzt eine Schnittstelle, die ebenfalls per wget Daten zu Verfügung stellt. Sobald ich die Zeit für dieses Projekt finde, werde ich dazu eine Schritt für Schritt Anleitung dazu erstellen.

      Gruß Erhard

  25. Hallo Herr Simdorn,
    mit Interesse verfolge ich Ihre Arbeit, das Projekt „wunderground“ läuft in Ihrer Variante störungsfrei und absolut zuverlässig.
    Einen kleinen Schönheitsfehler bekomme ich allerdings nicht weg:
    Während bei der „W_Windrichtung“ „Süd-West“ korrekt umgewandelt wird, klappt das bei „W_Windbedingungen“ nicht.
    Haben Sie eine Lösung ?

    Beste Grüße und „Weiter so“
    Thomas Flächsig

      1. Hallo Erhard,

        Danke für die schnelle Antwort (y)
        Bisher ist mir das nur bei „Süd-West“ aufgefallen, und NUR in den „W_Windbedingungen“, bei „W_Windrichtung“ ist es korrekt.
        Ansonsten ist bei uns gerade Windstille, so dass ich auf Wechsel-Winde zur Beobachtung hoffen muß 🙂

        Danke vorab und Beste Grüße

        Thomas

        1. Hallo Thomas,

          ich habe bei keiner Wunderground-Wetterstation in den Windbedingungen eine Himmelsrichtung genannt bekommen. Bitte nenne mir die Stationskennung der Wunderground-Station, die du abfragst. Ich werde die Stationskennung anschliessend in deinem Beitrag unkenntlich machen.

          Gruß Erhard

      2. Hallo Erhard,
        aktuell ist mir lediglich „Südwest“ bei den „Windebedingungen“ aufgefallen – Vielen Dank vorab (y)

        Gruß Thomas

        1. Hallo Thomas,

          die korrekte Darstellung vom „ü“ in den Systemvariablen W_Windrichtung und W_Windbedingungen erledige ich jetzt per Suchen & Ersetzen. Bitte die entsprechenden Code-Zeilen austauschen bzw. ergänzen

          Gruß Erhard

  26. Hallo Erhard,

    ich bin auch ein Bewunderer, der Dich um Dein Wissen im Umgang mit Skripten beneidet. Ich habe auch die Wetterdaten von Wunderground in meine HomeMatic eingebunden. Da ich Skripte nicht „wirklich“ verstehe, schreibe ich sie immer ab und deshalb war ich sehr glücklich, als die Daten von Wunderground tatsächlich bei mir angezeigt wurden.
    Ohne ein „Aber“ geht es leider auch bei mir nicht. Deine nachgereichten Skriptzeilen für W_Regen und W_Solar habe ich auch wie beschrieben, ans Ende des Skriptes kopiert. Natürlich habe ich auch 2 neue Systemvariable vom Typ Zahl angelegt.
    Das Ergebnis ist aber gleich 0 und das in Wirklichkeit. In der Anzeige steht 0.0 obwohl auf der Webseite Werte angezeigt werden. Ich kann mir keinen Grund dafür vorstellen, deshalb hier mein Hilferuf an Dich. Die Fehlerprüfung im Skriptfenster ist auch i.O.
    Vieleicht hast Du eine Idee.
    Tschüß erst einmal
    Heiko

    1. Hallo Heiko,

      vielleicht eine dumme Frage: Heissen die beiden neuen Variablen auch wirklich „W_Regen“ und „W_Solar“? Und wenn ja, sind die Variablennamen genauso geschrieben (groß/klein)?

      Eine Variable mit dem Wert 0 deutet immer darauf hin, dass sie nicht vom Programm angesprochen wurde.

      Bitte nenne mir die Kennung der Wunderground-Station, die du abfragst. Ich werde den Stationsnamen anschliessend unkenntlich machen.

      Gruß Erhard

      1. Hallo Erhard,

        was ich beim Umgang mit einem PC (und den Problemen) gelernt habe, es gibt keine dumme Fragen. Die Schreibweise ist immer ein Problem, deshalb benutze ich immer drag and drop. Ich denke auch, dass das Programm mit der Skriptzeile nicht zurecht kommt-aber warum?

        Meine Seite ist:https://www.wunderground.com/personal-weather-station/dashboard?ID=xxxxxxxx#history

        Ich würde Dir gern ein paar Screenshots schicken, aber dieses Kommentarfenster will das nicht.

        Tschüß Heiko

  27. Frohe Ostern!
    Ich versuche einen Forecast für die Regenmenge der nächsten drei Tage zu bekommen; schaffe es aber nicht, das XML-File, das ich von der API mit /forecast/ bekomme, zu parsen.
    Kann mir hier jemand helfen?
    Gruß Axel.

    1. Hallo Axel,

      den XML-File für den Forecast kannte ich noch nicht, welche Werte möchtest du aus dem XML-File auslesen?

      Ich erstelle dazu gerne eine separate Anleitung.

      Gruß Erhard

  28. Hallo Ehrhard,
    zunächst einmal vielen Dank, dass du dein Wissen an uns weiter gibst. Ich konnte schon viel daraus lernen, zumal ich hier noch ein Newkommer bin.
    Nun zur eigentlichen Frage. Der o.a. Script funktionier bei mir einwandfrei. Aber ich hatte vergessen den richtigen Ort einzugeben. Ich wohne in Diemarden, die Wetterdaten kann ich auch im Internet abfragen, aber ich habe keine Ahnung, wie ich den Ort korrekt benennen muss. ….|Hessen16.xml läuft wie gesagt, aber gebe ich Diemarden, ein Ort in Gleichen, anstatt Hessen16 ein, klappt es nicht mehr. Auch der Versuch mit Göttingen blieb erfolglos. Kannst du mir einen Tip geben?
    Vielen Dank und liebe Grüße
    Rüdiger

    1. Hallo Rüdiger,

      rufe im Web-Browser http://www.wunderground.com auf und gebe im Suchschlitz Diemarden ein. Es erscheint eine Wetterstation in Diemarden. Jetzt klickst du unter Diemarden auf Gleichen, es erscheint der Name der Wetterstation „IBSKLEIN3“. Damit sollte es auch bei dir klappen!

      Liebe Grüße Erhard

      1. Hallo Erhard,
        vielen Dank für die Antwort.
        Habe es auch gleich abgeändert und läuft.
        Danke
        Liebe Grüße Rüdiger

  29. Hallo, ich hab das tatsächlich dank der super Anleitung hingekriegt. Frage: Die Browserversion bei wunderground gibt auch die Regenmenge aus. Da gibt es im Script aber keine Variable dafür oder hab ich das übersehen?
    Danke für die Mühe

    1. Hallo Carlo,

      das Script kann jederzeit auch um die Regenmenge erweiterter werden, ich melde mich später dazu.

      Gruß Erhard

  30. Hallo Erhard,
    habe mich endlich auch wieder intensiver mit der CCU2 auseinandersetzen können und dein Wetterscript ausprobiert. Nach ein paar dummen Fehlern – Kleinigkeiten, gehört wohl dazu 😉 – läuft alles einwandfrei. Danke dafür!
    Leider bieten nicht alle Wetterstationen alle Informationen, aber dafür kann ja dein Script nichts.

    Bemerkenswert finde ich noch deine Geduld, mit der du hier Leuten hilfst. Chapeau!

    Danke Dir und Dir weiterhin so viel Spaß mit der Automatisierung wie dem Rest dieser Runde! 🙂

    Grüße,
    Thomas.

    1. Hallo Thomas,

      im Moment passiert nicht viel auf meinem Blog, aber die Hausautomation geht bei mir in die nächste Runde. Ich habe in den letzten Wochen ioBroker auf einem Cubiboard aufgebaut und werde meine Erfahrungen in den kommenden Wochen hier niederschreiben. Es bleibt spannend!

      Gruß Erhard

  31. Vielen lieben Dank für Ihre tolle Arbeit. Mit dieser Hilfe ist es mir gelungen, Wetter- und Astrodaten einzubinden. Sie erwähnen auch, dass Sie ein Script für die Forecast Meldungen erstellen wollen.
    Ich habe mich vergeblich daran ausprobiert. Die Variablen wie „title“ und fcttext_metric“ kommen ja mehrfach vor und ich finde in der Scriptbeschreibung keine richtige Schleife. Sie haben erwähnt, dass Sie dazu mal was machen wollten – kann aber auf Ihrer Seite nicht finden.

    Hilfe wäre toll.

  32. Hallo wie kann ich die Wetterdaten in CUxD Gerätetyp 90 (Wetter Kombisensor) einfügen das ich die Wetterdaten in PockedControl HM als Gerät (außerhalb) vom haus sehe ???

    1. Hallo Eddi,

      mit diesem Thema habe ich mich bisher nicht weiter beschäftigt. Ich bin inzwischen zur Steuerung und Visualisierung meiner Hausautomation auf ioBroker umgestellt. PockedControl HM nutze ich zwar weiterhin, mehr zur Bedienung meiner Hausautomation von unterwegs. Da aber inzwischen Komponenten weiterer Hersteller in meine Hausautomation „eingezogen“ sind, reicht mir PocketControl HM leider nicht mehr aus.

      Liebe Grüße Erhard

  33. Guten Tag Herr Simdorn,
    ich hatte vor 4 wochen schon einen ersten kontakt hier aufgenommen
    und hatte den api key an sie geschickt…
    aber die beiträge die ich hier angezeigt bekomme gehen nur bis 8,7,2017

    === Beitrag gekürzt durch Admin ===

    1. Hallo Herr Kerber,

      ich war die letzten Wochen sehr beschäftigt und kam deshalb nicht zur Beantwortung der Fragen… Sorry!

      Schön, dass Sie inzwischen die Lösung selbst gefunden haben. Dank für das Feedback.

      Liebe Grüße Erhard Simdorn

  34. herr simdorn
    ich habe meinen fehler gefunden
    es lag einzig und allein bei wunderground
    die wetterstation und der api key sind verbunden
    i8ch muss die wetterstation als Favorite Cites so abgespeichert haben
    ausserdem ist bei der auswahl des staionsnamens vorsicht geboten
    der angezeigte namen Z.B. Am Wegesrand wird bei der eingabe im broswer
    umgewandelt in „Am%20Wegesrand“ das habe ich dann auch so im script eingegeben
    danke trotzdem
    mfg
    norbert kerber

  35. Hallo Erhard,
    ich bin begeistert von Deinen Seiten – ohne die vielen Anregungen wäre es mir nicht möglich gewesen, die vielen Möglichkeiten der homematic so schnell zu nutzen.
    Die Wetterdaten meiner Froggit HP1000 Wetterstation stehen nun auch in der homematic zur Verfügung. Alles hat auf Anhieb geklappt.
    Vielen Dank für Deinen Blog

    Andreas

  36. Hallo Herr Simdorn,
    bei der Fehlerprüfung im Scripteditor der CCU2 trat der nachfolgende Fehler auf:
    Error 1 at row 27 col 9 near ^

    ! Wetterdaten von wunderground.com holen

    !Stand 03.04.2014 http://homemat
    Parse following code failed:
    !W_Station Zeichenkette
    !W_Aktualisierung Zeichenkette
    !W_Bedingungen Zeichenkette
    !W_Temperatur Zahl °C
    !W_Luftfeuchte Zahl %
    !W_Windbedingungen Zeichenkette
    !W_Windrichtung Zeichenkette
    !W_Windrichtg Zahl °
    !W_Windgeschwindigkeit Zahl km/h
    !W_Windboeen Zahl km/h
    !W_Luftdruck Zahl mb
    !W_Luftdrucktrend Zeichenkette
    !W_Taupunkt Zahl °C
    !W_UV Zahl
    !Aussentemperatur Zeichenkette (Erweiterung E.Simdorn)
    !Luftfeuchtigkeit Zeichenkette (Erweiterung E.Simdorn)

    === Script gekürzt durch Admin ===

    Außerdem möchte ich mir die Inhalte der Variablen anzeigen lassen. Kann ich das mit dem CUxD Gerät90 (Universial Wrapper Device) realisieren? Haben Sie ggf. eine Scriptcodeerweiterung?

    Vielen Dank im Voraus.

    1. Hallo Tobias,

      da der Fehler noch in dem Kommentarteil des Scripts angezeigt wird, handelt es sich bestimmt um einen Kopierfehler! Bitte kopiere das Script nochmal aus meinem Beitrag über die Kopierfunktion rechts oben im Script-Fenster. Dann sollte das Problem behoben sein.

      Die entsprechenden Werte werden in normale Systemvariablen geschrieben und somit kannst du Sie ganz normal anzeigen lassen!

      Gruß Erhard

    1. Hallo Patrick,

      vielen Dank für deinen Hinweis, ich habe meinen Artikel entsprechend ergänzt. Es gibt verschiedene andere Wetterdienste, die schaue ich mir bei Gelegenheit mal genauer an und schreibe dann dazu eine kurze Anleitung.

      Gruß Erhard

  37. Hallo Erhard,

    ich hab vorhin das Skript für die Wettervorhersage (https://homematic.simdorn.net/wettervorhersage-von-wunderground/) von Wunderground angelegt und es funktioniert auch Super.

    Jetzt wollte ich noch die Wetterdaten einfügen und habe das entsprechende Skript von oben hinterlegt. Leider bleiben die Systemvariablen leer. Der api key und die CUxD sind identisch zum anderen Skript.

    Kann ich beides nicht gleichzeitig ausführen?

    Gruß
    Michael

  38. Hallo Erhard,

    Seit ein paar Tagen bekommen wir plötzlich keine Daten mehr von Wonderground. Auf der Homepage haben wir festgestellt, dass kein API Key mehr eingetragen war.
    Wir haben daraufhin einen neuen generiert, der ist jetzt deutlich länger. Leider funktioniert der Abruf der Daten trotzdem nicht, es kommt immer der Fehler „Key not found“.
    Hast du eine Idee zur Lösung des Problems?

    Danke und Gruß,
    Jörg und Anna

  39. Hallo Erhard,
    wer eine eigene Wetterstation hat und die Daten an wunderground sendet, kann weiterhin seine eigenen Wetterdaten per api (kostenlos) beziehen.
    Anbei das angepasste Skrip. Basis dafür war Dein Skript.

    Wenn Du möchtest, kannst Du es gerne veröffentlichen (ich habe nicht so eine schöne Webpage)

    Gruß
    Andreas
    ***************************************************************************

    ! Wetterdaten von wunderground.com holen – eigene Wetterstation erforderlich, die Daten an wunderground sendet
    !Stand 14.04.2019

    !zuerst folgende Systemvariablen anlegen
    !Achtung: keine vergessen und exakte Schreibweise mit Copy & Paste

    !W_Station Zeichenkette
    !W_Aktualisierung Zeichenkette
    !W_Temperatur Zahl °C
    !W_Luftfeuchte Zahl %
    !W_Windrichtg Zahl °
    !W_Windgeschwindigkeit Zahl km/h
    !W_Windboeen Zahl km/h
    !W_Luftdruck Zahl mbar
    !W_Taupunkt Zahl °C
    !W_UV Zahl
    !W_Solar Zahl Watt
    !W_Regenrate Zahl mm/h
    !W_Regensumme Zahl mm am Tag
    !W_Hitzeindex Zahl °C
    !W_Temp_gefuehlt Zahl °C
    !Aussentemperatur Zeichenkette (Erweiterung E.Simdorn)
    !Luftfeuchtigkeit Zeichenkette (Erweiterung E.Simdorn)

    ! Weiter Ergaenzungen durch E.Simdorn
    ! Temperatur und Luftfeuchtigkeit jeweils in einen Text-String umwandeln und formatieren
    ! Temperatur und Luftfeuchtigkeit jeweils in einen Text-String umwandeln und formatieren

    ! Wetter api: stationID=Deine Wetterstation, apiKey=Dein apiKey der Wetterstation, units: m (metrisch) oder e(englisch), format: xml (gibt es auch als json)
    var url =“https://api.weather.com/v2/pws/observations/current?stationId=IHESSENG39&format=xml&units=m&apiKey=Dein_apiKey“;

    !Abfrage mit CUxD

    dom.GetObject(„CUxD.CUX2801001:1.CMD_SETS“).State(„wget –no-check-certificate -q -O – ‚“#url#“‚“);
    dom.GetObject(„CUxD.CUX2801001:1.CMD_QUERY_RET“).State(1);
    string wetter_xml = dom.GetObject(„CUxD.CUX2801001:1.CMD_RETS“).State();

    !Daten mit Suchworten aus XML-File ausfiltern:

    string word = „neighborhood“;
    integer word_laenge = word.Length();
    integer word_position = wetter_xml.Find(word);
    string daten = wetter_xml.Substr((word_position + word_laenge +1), 100);
    integer word_position = daten.Find(word);
    daten = daten.Substr(0, (word_position -2));
    daten = daten;
    dom.GetObject(„W_Station“).State(daten);

    string word =“obsTimeLocal“;
    integer word_laenge = word.Length();
    integer word_position = wetter_xml.Find(word);
    string daten = wetter_xml.Substr((word_position + word_laenge +1), 100);
    integer word_position = daten.Find(word);
    daten = daten.Substr(0, (word_position -2));
    !daten = daten.Substr(0, (word_position -11));
    dom.GetObject(„W_Aktualisierung“).State(daten);

    string word = „temp“;
    integer word_laenge = word.Length();
    integer word_position = wetter_xml.Find(word);
    string daten = wetter_xml.Substr((word_position + word_laenge +1), 100);
    integer word_position = daten.Find(word);
    daten = daten.Substr(0, (word_position -2));
    real zahl = daten.ToFloat();
    dom.GetObject(„W_Temperatur“).State(zahl);
    ! *****
    ! Temperatur real in string umwandeln und anschliessen den Dezimalpunkt gegen ein Komma austauschen
    string TextTemp = zahl.ToString(2);
    integer TPunkt = TextTemp.Find(„.“);
    string TextTemp1 = TextTemp.Substr(0, TPunkt);
    TextTemp1 = TextTemp1 # „,“# TextTemp.Substr(TPunkt +1, 2) # “ Grad Celsius“;
    TextTemp = TextTemp1;
    dom.GetObject(‚Aussentemperatur‘).Variable(TextTemp);
    WriteLine(dom.GetObject(‚Aussentemperatur‘).Variable());
    ! *****
    string word = „humidity“;
    integer word_laenge = word.Length();
    integer word_position = wetter_xml.Find(word);
    string daten = wetter_xml.Substr((word_position + word_laenge +1), 100);
    integer word_position = daten.Find(word);
    daten = daten.Substr(0, (word_position -2));
    integer zahl = daten.ToFloat();
    dom.GetObject(„W_Luftfeuchte“).State(zahl);
    ! *****
    string TextHumi = zahl.ToString(1);
    integer TPunkt = TextHumi.Find(„.“);
    string TextHumi1 = TextHumi.Substr(0, TPunkt);
    TextHumi1 = TextHumi1 # „,“# TextHumi.Substr(TPunkt +1, 2) # “ %“;
    TextHumi = TextHumi1;
    dom.GetObject(‚Luftfeuchtigkeit‘).Variable(TextHumi);
    WriteLine(dom.GetObject(‚Luftfeuchtigkeit‘).Variable());
    ! *****

    string word = „winddir“;
    integer word_laenge = word.Length();
    integer word_position = wetter_xml.Find(word);
    string daten = wetter_xml.Substr((word_position + word_laenge +1), 100);
    integer word_position = daten.Find(word);
    daten = daten.Substr(0, (word_position -2));
    if (daten == -9999) {
    daten = „0“;
    }
    integer zahl = daten.ToFloat();
    dom.GetObject(„W_Windrichtg“).State(zahl);

    string word = „windSpeed“;
    integer word_laenge = word.Length();
    integer word_position = wetter_xml.Find(word);
    string daten = wetter_xml.Substr((word_position + word_laenge +1), 100);
    integer word_position = daten.Find(word);
    daten = daten.Substr(0, (word_position -2));
    integer zahl = daten.ToFloat();
    dom.GetObject(„W_Windgeschwindigkeit“).State(zahl);

    string word = „windGust“;
    integer word_laenge = word.Length();
    integer word_position = wetter_xml.Find(word);
    string daten = wetter_xml.Substr((word_position + word_laenge +1), 100);
    integer word_position = daten.Find(word);
    daten = daten.Substr(0, (word_position -2));
    integer zahl = daten.ToFloat();
    dom.GetObject(„W_Windboeen“).State(zahl);

    string word = „pressure“;
    integer word_laenge = word.Length();
    integer word_position = wetter_xml.Find(word);
    string daten = wetter_xml.Substr((word_position + word_laenge +1), 100);
    integer word_position = daten.Find(word);
    daten = daten.Substr(0, (word_position -2));
    integer zahl = daten.ToFloat();
    dom.GetObject(„W_Luftdruck“).State(zahl);

    string word = „dewpt“;
    integer word_laenge = word.Length();
    integer word_position = wetter_xml.Find(word);
    string daten = wetter_xml.Substr((word_position + word_laenge +1), 100);
    integer word_position = daten.Find(word);
    daten = daten.Substr(0, (word_position -2));
    real zahl = daten.ToFloat();
    dom.GetObject(„W_Taupunkt“).State(zahl);

    string word = „windChill“;
    integer word_laenge = word.Length();
    integer word_position = wetter_xml.Find(word);
    string daten = wetter_xml.Substr((word_position + word_laenge +1), 100);
    integer word_position = daten.Find(word);
    daten = daten.Substr(0, (word_position -2));
    real zahl = daten.ToFloat();
    dom.GetObject(„W_Temp_gefuehlt“).State(zahl);

    string word = „heatIndex“;
    integer word_laenge = word.Length();
    integer word_position = wetter_xml.Find(word);
    string daten = wetter_xml.Substr((word_position + word_laenge +1), 100);
    integer word_position = daten.Find(word);
    daten = daten.Substr(0, (word_position -2));
    real zahl = daten.ToFloat();
    dom.GetObject(„W_Hitzeindex“).State(zahl);

    string word = „uv“;
    integer word_laenge = word.Length();
    integer word_position = wetter_xml.Find(word);
    string daten = wetter_xml.Substr((word_position + word_laenge +1), 100);
    integer word_position = daten.Find(word);
    daten = daten.Substr(0, (word_position -2));
    integer zahl = daten.ToFloat();
    dom.GetObject(„W_UV“).State(zahl);

    string word = „precipRate“;
    integer word_laenge = word.Length();
    integer word_position = wetter_xml.Find(word);
    string daten = wetter_xml.Substr((word_position + word_laenge +1), 100);
    integer word_position = daten.Find(word);
    daten = daten.Substr(0, (word_position -2));
    real zahl = daten.ToFloat();
    dom.GetObject(„W_Regenrate“).State(zahl);

    string word = „precipTotal“;
    integer word_laenge = word.Length();
    integer word_position = wetter_xml.Find(word);
    string daten = wetter_xml.Substr((word_position + word_laenge +1), 100);
    integer word_position = daten.Find(word);
    daten = daten.Substr(0, (word_position -2));
    real zahl = daten.ToFloat();
    dom.GetObject(„W_Regensumme“).State(zahl);

    string word = „solarRadiation“;
    integer word_laenge = word.Length();
    integer word_position = wetter_xml.Find(word);
    string daten = wetter_xml.Substr((word_position + word_laenge +1), 100);
    integer word_position = daten.Find(word);
    daten = daten.Substr(0, (word_position -2));
    real zahl = daten.ToFloat();
    dom.GetObject(„W_Solar“).State(zahl);

Kommentare sind geschlossen.