Wunderground Wetter mit einfachem HM-Skript holen
Moderator: Co-Administratoren
Re: Wunderground Wetter mit einfachem HM-Skript holen
Hallo, Frage in die Runde:
das Skript läuft prima!
Ich möchte aber gerne 2 Stationen mit Vorhersage abfragen: Wie muss ich das Skript und die Systemvariablen entsprechend anpassen?
Ich hatte schon probiert aus "WD" ein "HWD" zu machen und dies im Skript und den variablen angepasst...Variablen werden aber leider nicht befüllt.
Hat mir jemand einen Tipp bitte.
das Skript läuft prima!
Ich möchte aber gerne 2 Stationen mit Vorhersage abfragen: Wie muss ich das Skript und die Systemvariablen entsprechend anpassen?
Ich hatte schon probiert aus "WD" ein "HWD" zu machen und dies im Skript und den variablen angepasst...Variablen werden aber leider nicht befüllt.
Hat mir jemand einen Tipp bitte.
-
- Beiträge: 12929
- Registriert: 16.01.2009, 18:48
- Wohnort: Steingaden
- Hat sich bedankt: 1604 Mal
- Danksagung erhalten: 222 Mal
Re: Wunderground Wetter mit einfachem HM-Skript holen
und auch zwei anmeldungen verwendet... doch bitte den lösungsansatz von dir hier einstellen sonst ist alles wasserglas lesen
-------
!!! der download der handbüchern auf den seiten von eq3 und das lesen der tips und tricks kann das hm-leben sehr erleichtern - das nutzen der suche nach schlagworten ebenso !!!
wer schreibfehler findet darf sie behalten.
!!! der download der handbüchern auf den seiten von eq3 und das lesen der tips und tricks kann das hm-leben sehr erleichtern - das nutzen der suche nach schlagworten ebenso !!!
wer schreibfehler findet darf sie behalten.
Re: Wunderground Wetter mit einfachem HM-Skript holen
Was meinst du mit zwei Anmeldungen? Benötige ich zwei API-Keys?
Ich habe ein zweites Programm angelegt mit dem Skript unten. Ich habe nur den neuen Variablennamen "HWD" unten eingefügt/ersetzt.
So habe ich auch die Systemvariablen in der CCU benannt - HWD_XXX
Ich habe ein zweites Programm angelegt mit dem Skript unten. Ich habe nur den neuen Variablennamen "HWD" unten eingefügt/ersetzt.
So habe ich auch die Systemvariablen in der CCU benannt - HWD_XXX
Code: Alles auswählen
! Wetter_Vorhersage_holen V1.04
!
! -------------------- Anpassungen ---------------------
! Zugangsdaten Wetterdienst Wunderground.com
var ApiKey = "XXX"; ! (Persoenlicher Api-Key)
!var Wetterstation = "Germany/STUTTGART";! (Hier Ort eintragen oder Wetterstation eintragen)
var Wetterstation = "pws:EDDS"; ! (oder: Wetterstation direkt eintragen)
! ----------------- Ende Anpassungen -------------------
!
! Cutwort,Suchwort,kuerze vorne,kuerze hinten,Datenart,Systemvariable
string F1 = "epoch,weekday ,0,2,1,Tag,";!Zeichenkette
string F2 = "high,celsius,1,2,3,Max_Temperatur,";!Zahl °C
string F3 = "low,celsius,1,2,3,Min_Temperatur,";!Zahl °C
string F4 = "conditions,conditions,1,2,5,Allgemein,";!Zeichenkette
string F5 = "skyicon,pop,1,2,2,Regenrisiko,";!Zahl %
string F6 = "qpf_allday,in,1,2,4,Regen,";!Zahl mm
string F7 = "snow_allday,cm,1,2,3,Schnee,";!Zahl cm
string F8 = "maxwind,kph,1,2,3,Max_Wind,";!Zahl km/h
string F9 = "maxwind,dir,1,2,5,Windrichtung 2,";!Zeichenkette
string F10 = "avewind,kph,1,2,3,Wind,";!Zahl km/h
string F11 = "avewind,dir,1,2,5,Windrichtung 1,";!Zeichenkette
string F12 = "/avewind,avehumidity,1,2,2,Luftfeuchte,";!Zahl %
string ForeCast = F1#F2#F3#F4#F5#F6#F7#F8#F9#F10#F11#F12;
string Umlaut ="ö,ö,ü,ü,ä,ä,";
string URL;
string Wetterdaten;
string Cut;
string Wort;
integer KorV;
integer KorH;
integer Art;
string Variablenname;
integer Wortlaenge;
integer Wortposition;
string Wortdaten;
integer Zaehler1;
integer Zaehler2;
integer Zaehler3;
! URL zusammensetzen und Wetterdaten.xml von Wunderground holen
URL = "http://api.wunderground.com/api/" # ApiKey # "/forecast/lang:DL/q/" # Wetterstation # ".xml";
dom.GetObject("CUxD.CUX2801001:2.CMD_SETS").State("wget -q -O - '" # URL # "'");
dom.GetObject("CUxD.CUX2801001:2.CMD_QUERY_RET").State(1);
Wetterdaten = dom.GetObject("CUxD.CUX2801001:2.CMD_RETS").State();
! Vorhersage kuerzen, Daten ausfiltern und in Systemvariablen speichern
Zaehler1 = 0;
while(Zaehler1 < 4) {;
Zaehler2 = 0;
while(Zaehler2 < 72) {;
Cut = ForeCast.StrValueByIndex(",", Zaehler2);
Wort = ForeCast.StrValueByIndex(",", Zaehler2 + 1);
KorV = ForeCast.StrValueByIndex(",", Zaehler2 + 2);
KorH = ForeCast.StrValueByIndex(",", Zaehler2 + 3);
Art = ForeCast.StrValueByIndex(",", Zaehler2 + 4);
Variablenname = "HWD" # Zaehler1.ToString() # "_" # ForeCast.StrValueByIndex(",", Zaehler2 + 5);
Wortlaenge = Wetterdaten.Length();
Wortposition = Wetterdaten.Find(Cut);
Wetterdaten = Wetterdaten.Substr(Wortposition, (Wortlaenge - Wortposition));
Wortlaenge = Wort.Length();
Wortposition = Wetterdaten.Find(Wort);
Wortdaten = Wetterdaten.Substr((Wortposition + Wortlaenge + KorV.ToInteger()), 100);
Wortposition = Wortdaten.Find(Wort);
Wortdaten = Wortdaten.Substr(0, (Wortposition - KorH.ToInteger()));
if (Art == 1) {string Zahl = Wortdaten;}
if (Art == 2) {integer Zahl = Wortdaten.ToInteger();}
if (Art == 3) {real Zahl = Wortdaten.ToFloat();}
if (Art == 4) {real Zahl = Wortdaten.ToFloat() * 25.4;}
if (Art == 5) {;
Zaehler3 = 0;
while(Zaehler3 < 6) {;
Cut = Umlaut.StrValueByIndex(",", Zaehler3);
Wort = Umlaut.StrValueByIndex(",", Zaehler3 + 1);
Wortposition = Wortdaten.Find(Cut);
if (Wortposition > -1) {Wortdaten = Wortdaten.Substr(0, Wortposition) # Wort # Wortdaten.Substr(Wortposition + 2, (Wortdaten.Length() - Wortposition));
Zaehler3 = -2;}
Zaehler3 = Zaehler3 + 2;}
string Zahl = Wortdaten;}
dom.GetObject(Variablenname).State(Zahl);
Zaehler2 = Zaehler2 + 6;}
Zaehler1 = Zaehler1 + 1;}
quit;
-
- Beiträge: 18
- Registriert: 20.08.2015, 08:24
Re: Wunderground Wetter mit einfachem HM-Skript holen
Hallo zusammen
Ich habe mir den Script von Seite 9 http://homematic-forum.de/forum/viewtop ... 80#p154855 von tibit für forcast geholt und soweit angepasst.
Ich erhalte jedoch bei der Prüfung vom Script diese Fehlermeldung: Denke, es betrifft wahrscheinlich das "Icon".... oder?
Wo liegt der Fehler?
Error 1 at row 94 col 66 near ^ + "\">";
dom.GetObject("WetterFct_Icon").State(daten);
! WriteLi
Mein Script
Ich habe mir den Script von Seite 9 http://homematic-forum.de/forum/viewtop ... 80#p154855 von tibit für forcast geholt und soweit angepasst.
Ich erhalte jedoch bei der Prüfung vom Script diese Fehlermeldung: Denke, es betrifft wahrscheinlich das "Icon".... oder?
Wo liegt der Fehler?
Error 1 at row 94 col 66 near ^ + "\">";
dom.GetObject("WetterFct_Icon").State(daten);
! WriteLi
Mein Script
Code: Alles auswählen
!zuerst folgende Systemvariablen anlegen
!Achtung: keine vergessen und exakte Schreibweise mit Drag&Drop
!WetterFct_Tag Zeichenkette -> Forecast fuer welchen Wochentag
!WetterFct_Condition Zeichenkette -> Forecast Wetterbedingung
!WetterFct_Icon Zeichenkette -> Forecast URL zu Pictogramm (zeigt Bild im Protokoll / Systemvariablen)
!WetterFct_Text Zeichenkette -> Forecast Text (max 200 Zeichen)
!WetterFct_TempMax Zahl °C -> Forecast Maximale Temperatur
!WetterFct_Pop Zahl % -> Forecast Regenwahrscheinlichkeit (probability of precipation)
!WetterFct_Zeit Zeichenkette -> Forecast erstellt um diese Zeit
var url = "http://api.wunderground.com/api/XXX/forecast/lang:EN/q/XXX/XXX.xml";
!Beispiele:
! var url = "http://api.wunderground.com/api/<API-Key>/forecast/lang:EN/q/Switzerland/Neuhausen.xml";
!Sprache: Deutsch
! var url = "http://api.wunderground.com/api/<API-Key>/forecast/lang:DL/q/Switzerland/Neuhausen.xml";
!Spezifische PWS-Wetterstation:
! var url = "http://api.wunderground.com/api/<API-Key>/forecast/lang:EN/q/pws:ISCHAFFH8.xml";
!Spezifische Flughafen-Wetterstation:
! var url = "http://api.wunderground.com/api/<API-Key>/forecast/lang:EN/q/LSZH.xml";
!hier ist die Abfrage mit CUxD (wenn kein CUxD, die 3 Zeilen unten auskommentieren und system.Exec einschalten)
dom.GetObject("CUxD.CUX2801002:1.CMD_SETS").State("wget -q -O - '"#url#"'");
dom.GetObject("CUxD.CUX2801002:1.CMD_QUERY_RET").State(1);
string wetter_xml = dom.GetObject("CUxD.CUX2801001:1.CMD_RETS").State();
!hier ist die Abfrage mit system.Exec (nur ohne CUxD verwenden)
!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 die bereiche "txt_forecast" und "simpleforecast" isolieren
integer laenge = wetter_xml.Length();
!finde Position für "txt_forecast"
integer wort_txt_fcst_position = wetter_xml.Find("txt_forecast");
!finde Position für "simpleforecast"
integer wort_simplefcst_position = wetter_xml.Find("simpleforecast");
!isoliere "txt_forecast"
string wetter_txtfct_xml = wetter_xml.Substr(wort_txt_fcst_position, (wort_simplefcst_position - wort_txt_fcst_position));
!isoliere "simpleforecast"
string wetter_simplefct_xml = wetter_xml.Substr(wort_simplefcst_position, (laenge - wort_simplefcst_position));
!WriteLine("TXT_Forecast:--------------------------");
! WriteLine(wetter_txtfct_xml);
!WriteLine("Simpleforecast:--------------------------");
! WriteLine(wetter_simplefct_xml);
!Daten mit Suchworten aus XML-File ausfiltern:
!Setze WetterFct_Zeit: Suche in txt_forecast nach "date" (einmalig)
string word = "date";
integer word_laenge = word.Length();
integer word_position = wetter_txtfct_xml.Find(word);
string daten = wetter_txtfct_xml.Substr((word_position + word_laenge + 1), 100);
integer word_position = daten.Find(word);
daten = daten.Substr(0, (word_position-2));
dom.GetObject("WetterFct_Zeit").State(daten);
! WriteLine("Zeit:");
! WriteLine(daten);
!Hole Daten aus "txt_forecast"-------------------------
!Setze WetterFct_Tag: Suche in txt_forecast nach "title"
string word = "title";
integer word_laenge = word.Length();
integer word_position = wetter_txtfct_xml.Find(word);
string daten = wetter_txtfct_xml.Substr((word_position + word_laenge + 1), 100);
integer word_position = daten.Find(word);
daten = daten.Substr(0, (word_position-2));
dom.GetObject("WetterFct_Tag").State(daten);
! WriteLine("Tag:");
! WriteLine(daten);
!Setze WetterFct_Condition: Suche in txt_forecast nach "icon"
string word = "icon";
integer word_laenge = word.Length();
integer word_position = wetter_txtfct_xml.Find(word);
string daten = wetter_txtfct_xml.Substr((word_position + word_laenge + 1), 100);
integer word_position = daten.Find(word);
daten = daten.Substr(0, (word_position-2));
dom.GetObject("WetterFct_Condition").State(daten);
! WriteLine("Condition:");
! WriteLine(daten);
!Setze WetterFct_Icon: Suche in txt_forecast nach "icon_url"
string word = "icon_url";
integer word_laenge = word.Length();
integer word_position = wetter_txtfct_xml.Find(word);
string daten = wetter_txtfct_xml.Substr((word_position + word_laenge + 1), 100);
integer word_position = daten.Find(word);
daten = daten.Substr(0, (word_position-2));
daten = "</div><img src=\"" + daten + "\" alt=\"" + daten2 + "\">";
dom.GetObject("WetterFct_Icon").State(daten);
! WriteLine("Icon:");
! WriteLine(daten);
!Setze WetterFct_Text: Suche in txt_forecast nach "fcttext_metric"
string word = "fcttext_metric";
integer word_laenge = word.Length();
integer word_position = wetter_txtfct_xml.Find(word);
string daten = wetter_txtfct_xml.Substr((word_position + word_laenge + 1 + 9), 200);
integer word_position = daten.Find(word);
daten = daten.Substr(0, (word_position-5));
dom.GetObject("WetterFct_Text").State(daten);
! WriteLine("Text:");
! WriteLine(daten);
!Setze WetterFct_Pop: Suche in txt_forecast nach "pop"
string word = "pop";
integer word_laenge = word.Length();
integer word_position = wetter_txtfct_xml.Find(word);
string daten = wetter_txtfct_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("WetterFct_Pop").State(zahl);
! WriteLine("Pop:");
! WriteLine(zahl);
!Hole Daten aus "simpleforecast"-------------------------
!Setze WetterFct_TempMax: Suche in simpleforecast nach "celsius"
string word = "celsius";
integer word_laenge = word.Length();
integer word_position = wetter_simplefct_xml.Find(word);
string daten = wetter_simplefct_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("WetterFct_TempMax").State(zahl);
! WriteLine("TempMax:");
! WriteLine(zahl);
HomeMatic: 1x Zentrale CCU2, 4x Funk-Zwischenstecker HM-LC-Sw1-Pl-DN-R5; 1x Funk-Schaltaktor mis Leistungsmessun HM-ES-PMSw1-Pl; 1x Funk-Schaltaktor 8-fach Kanal Relais Modul 230Volt mit Taster
Re: Wunderground Wetter mit einfachem HM-Skript holen
Hallo CH-HMaticer,CH-HMaticer hat geschrieben: Ich erhalte jedoch bei der Prüfung vom Script diese Fehlermeldung: Denke, es betrifft wahrscheinlich das "Icon".... oder?
Wo liegt der Fehler?
Error 1 at row 94 col 66 near ^ + "\">";
dom.GetObject("WetterFct_Icon").State(daten);
! WriteLi
Mein ScriptCode: Alles auswählen
!Setze WetterFct_Icon: Suche in txt_forecast nach "icon_url" ... daten = "</div><img src=\"" + daten + "\" alt=\"" + daten2 + "\">"; ...
es scheint die Variable "daten2" nicht definiert und gesetzt zu werden.
In die folgende Sektion die Zeile "string daten2 = daten;" hinzufügen, soll also folgendermassen aussehen:
Code: Alles auswählen
!Setze WetterFct_Condition: Suche in txt_forecast nach "icon"
string word = "icon";
integer word_laenge = word.Length();
integer word_position = wetter_txtfct_xml.Find(word);
string daten = wetter_txtfct_xml.Substr((word_position + word_laenge + 1), 100);
integer word_position = daten.Find(word);
daten = daten.Substr(0, (word_position-2));
string daten2 = daten;
dom.GetObject("WetterFct_Condition").State(daten);
! WriteLine("Condition:");
! WriteLine(daten);
Gruss,
tibid
-
- Beiträge: 18
- Registriert: 20.08.2015, 08:24
Re: Wunderground Wetter mit einfachem HM-Skript holen
SUUPER tibid! Genau das war es!
Dann ist aber in Dein Script ein Fehler drin, denn dort fehlt diese Zeile dann auch! Ev. noch einfügen bitte.
Danke Dir nochmals für Deine super Arbeit!
Gruss
CH-HMaticer
Dann ist aber in Dein Script ein Fehler drin, denn dort fehlt diese Zeile dann auch! Ev. noch einfügen bitte.
Danke Dir nochmals für Deine super Arbeit!
Gruss
CH-HMaticer
HomeMatic: 1x Zentrale CCU2, 4x Funk-Zwischenstecker HM-LC-Sw1-Pl-DN-R5; 1x Funk-Schaltaktor mis Leistungsmessun HM-ES-PMSw1-Pl; 1x Funk-Schaltaktor 8-fach Kanal Relais Modul 230Volt mit Taster
- shamen7777
- Beiträge: 79
- Registriert: 01.06.2015, 19:27
- Wohnort: Bergheim, Großraum Köln
Re: Wunderground Wetter mit einfachem HM-Skript holen
Hallo zusammen,
ich weiß nicht, ob ich ein genrelles Problem mit der CCU1 habe und bin auch rest neu in das Thema Homematic eingestiegen. Ich habe von Funkleuchtturm die Skripte genommen, einmal für die Berechnung von Sonnenaufgang und Sonnenuntergang, das Wundergroundskript und zu letzt das Elevations- und Azimutskript.
Das SA und SU Skript läuft alle 2 min ab und die Variablen werden auch in der CCU1 alle 2 min aktualisiert. Wobei hier ein anderer Fehler auftritt, der meine Rollade um 12:02 Uhr wieder runterfahren läßt. Da weiß ich noch nicht wo der Fehler liegen kann. Habe das ausführende Programm, welches die Rollade steuert schon 2 - 3 mal neu programmiert in der WebUI, aber es hat keine Änderung gebracht.
Dann habe ich Sonnenstands-Skript (Elevation und Azimut) genommen, das wird auch alle 5 min gestartet, aber das Programm speichert nicht die Variablen ab, diese bleiben immer nur auf den Stand des ersten Ablauf und werden nicht mehr aktualisiert.
JEtzt komm ich zum Wunderground Skript. Alle Variablen angelegt, aber hier wird gar nicht erst in die Variablen geschrieben. Ich habe es schon mit kopieren aus dem Skript gemacht, das die Variablennamen genau gleich sind. Der API key ist richtig, da mir dieer im Browser alle Werte anzeigt.
Ich verzweifle langsam daran. Kann es an der CCU1 liegen? Aber eigentlich auch nciht, da es auch Nutzer der CCU2 gibt, die Probleme haben. Leider bin ich auf der Abreit und kann das Skript nciht posten mit den dazugehören Variablen. Das kann ich heute Abend machen.
ich weiß nicht, ob ich ein genrelles Problem mit der CCU1 habe und bin auch rest neu in das Thema Homematic eingestiegen. Ich habe von Funkleuchtturm die Skripte genommen, einmal für die Berechnung von Sonnenaufgang und Sonnenuntergang, das Wundergroundskript und zu letzt das Elevations- und Azimutskript.
Das SA und SU Skript läuft alle 2 min ab und die Variablen werden auch in der CCU1 alle 2 min aktualisiert. Wobei hier ein anderer Fehler auftritt, der meine Rollade um 12:02 Uhr wieder runterfahren läßt. Da weiß ich noch nicht wo der Fehler liegen kann. Habe das ausführende Programm, welches die Rollade steuert schon 2 - 3 mal neu programmiert in der WebUI, aber es hat keine Änderung gebracht.
Dann habe ich Sonnenstands-Skript (Elevation und Azimut) genommen, das wird auch alle 5 min gestartet, aber das Programm speichert nicht die Variablen ab, diese bleiben immer nur auf den Stand des ersten Ablauf und werden nicht mehr aktualisiert.
JEtzt komm ich zum Wunderground Skript. Alle Variablen angelegt, aber hier wird gar nicht erst in die Variablen geschrieben. Ich habe es schon mit kopieren aus dem Skript gemacht, das die Variablennamen genau gleich sind. Der API key ist richtig, da mir dieer im Browser alle Werte anzeigt.
Ich verzweifle langsam daran. Kann es an der CCU1 liegen? Aber eigentlich auch nciht, da es auch Nutzer der CCU2 gibt, die Probleme haben. Leider bin ich auf der Abreit und kann das Skript nciht posten mit den dazugehören Variablen. Das kann ich heute Abend machen.
MfG
Mirko
Homematic Komponenten:
CCU2 FW 2.49.18, geplant Homeputer; CUxD 2.3.3; CUxD Highcharts 1.4.5; XML-API 1.20; HQ WebUI 2.5.4; Programme drucken 1.2a; E-Mail 1.6.7c
Mirko
Homematic Komponenten:
CCU2 FW 2.49.18, geplant Homeputer; CUxD 2.3.3; CUxD Highcharts 1.4.5; XML-API 1.20; HQ WebUI 2.5.4; Programme drucken 1.2a; E-Mail 1.6.7c
- shamen7777
- Beiträge: 79
- Registriert: 01.06.2015, 19:27
- Wohnort: Bergheim, Großraum Köln
Re: Wunderground Wetter mit einfachem HM-Skript holen
Hier das Programm und das Skript.
Code: Alles auswählen
!Wunderground Wetterdaten 09.03.2017 http://homematic-forum.de/forum/viewtopic.php?f=31&t=17209
!zuerst folgende Systemvariablen anlegen
!Achtung: keine vergessen und exakte Schreibweise mit Drag&Drop
!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 mbar
!W_Luftdrucktrend Zeichenkette
!W_Taupunkt Zahl °C
!W_UV Zeichenkette
!W_GefühlteLufttemp Zahl °C
!W_Windkühle Zahl °C
!W_Regenmenge Zahl mm
!W_Regenmenge1h Zahl mm
var url = "http://api.wunderground.com/api/xxxxxxx/conditions/lang:DL/q/Germany/stadt.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();
!Beim XML-File den ueberfluessigen Header entfernen
integer laenge = wetter_xml.Length();
integer wort_position = wetter_xml.Find("display_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));
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));
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);
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 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));
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));
word_laenge =daten.Length();
string anfangsbuchstabe = daten.Substr(0,1);
! Umlaute korrigieren
!
! N # Nord ***
if (anfangsbuchstabe == "N") {
!
if (daten == "Nordwest") {daten = "Nord-West" ;}
}
! S # Süd ***
if (anfangsbuchstabe == "S") {
! 4 # Süd
if (word_laenge == 4) {daten = "Süd";}
! 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" ;}
}
! W # Westen
if (anfangsbuchstabe == "W") {
! 13 # West-Südwest
if (word_laenge == 13) {daten = "West-Süd-West" ;}
}
! O # Osten
if (anfangsbuchstabe == "O") {
! 11 # Ost-Südost
if (word_laenge == 11) {daten = "Ost-Süd-Ost" ;}
}
dom.GetObject("W_Windrichtung").State(daten);
!WriteLine(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));
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));
real zahl = daten.ToFloat();
dom.GetObject("W_UV").State(zahl);
string word = "feelslike_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_GefühlteLufttemp").State(zahl);
string word = "windchill_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_Windkühle").State(zahl);
string word = "precip_today_metric";
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_Regenmenge").State(zahl);
string word = "precip_1hr_metric";
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_Regenmenge1h").State(zahl);
MfG
Mirko
Homematic Komponenten:
CCU2 FW 2.49.18, geplant Homeputer; CUxD 2.3.3; CUxD Highcharts 1.4.5; XML-API 1.20; HQ WebUI 2.5.4; Programme drucken 1.2a; E-Mail 1.6.7c
Mirko
Homematic Komponenten:
CCU2 FW 2.49.18, geplant Homeputer; CUxD 2.3.3; CUxD Highcharts 1.4.5; XML-API 1.20; HQ WebUI 2.5.4; Programme drucken 1.2a; E-Mail 1.6.7c
- shamen7777
- Beiträge: 79
- Registriert: 01.06.2015, 19:27
- Wohnort: Bergheim, Großraum Köln
Re: Wunderground Wetter mit einfachem HM-Skript holen
Guten Morgen zusammen,
hat vielleicht jemand das Skript auch auf einer CCU1 laufen? Oder seid ihr alle im Besitz einer CCU2?
hat vielleicht jemand das Skript auch auf einer CCU1 laufen? Oder seid ihr alle im Besitz einer CCU2?
MfG
Mirko
Homematic Komponenten:
CCU2 FW 2.49.18, geplant Homeputer; CUxD 2.3.3; CUxD Highcharts 1.4.5; XML-API 1.20; HQ WebUI 2.5.4; Programme drucken 1.2a; E-Mail 1.6.7c
Mirko
Homematic Komponenten:
CCU2 FW 2.49.18, geplant Homeputer; CUxD 2.3.3; CUxD Highcharts 1.4.5; XML-API 1.20; HQ WebUI 2.5.4; Programme drucken 1.2a; E-Mail 1.6.7c