Wunderground Wetter mit einfachem HM-Skript holen
Moderator: Co-Administratoren
-
- Beiträge: 22
- Registriert: 05.01.2016, 19:06
- Danksagung erhalten: 1 Mal
Re: Wunderground Wetter mit einfachem HM-Skript holen
Hallo auch bei mir funktionierte das Skript auf Anhieb.
Ich möchte jetzt lediglich noch eine Ergänzung für meine Beregnungsanlage hinzufügen.
Wenn es so viel wie heute geregnet hat, soll das bei der Entscheidung zur Beregnung für morgen auch noch Rücksicht finden.
Dazu soll eldiglich die Systemvariable W_NiederschlagHeute um 23,59 Uhr einmal festegeschrieben werden in die Systemvariable W_NiederschlagGestern
Leider bin ich in der Welt des Scripte Schreibens nicht zu hause aber im Copy und Past wie hier ganz gut
Kann mir das jemand kurz als Script schreiben?
Ich möchte jetzt lediglich noch eine Ergänzung für meine Beregnungsanlage hinzufügen.
Wenn es so viel wie heute geregnet hat, soll das bei der Entscheidung zur Beregnung für morgen auch noch Rücksicht finden.
Dazu soll eldiglich die Systemvariable W_NiederschlagHeute um 23,59 Uhr einmal festegeschrieben werden in die Systemvariable W_NiederschlagGestern
Leider bin ich in der Welt des Scripte Schreibens nicht zu hause aber im Copy und Past wie hier ganz gut
Kann mir das jemand kurz als Script schreiben?
-
- Beiträge: 22
- Registriert: 05.01.2016, 19:06
- Danksagung erhalten: 1 Mal
Re: Wunderground Wetter mit einfachem HM-Skript holen
Ich möchte meinen letzten beitrag hiermit gerne nochmal nach oben holen.
Das sollte doch über ein einfaches Script machbar sein oder?
Das sollte doch über ein einfaches Script machbar sein oder?
-
- Beiträge: 10754
- Registriert: 24.02.2011, 01:34
- System: CCU
- Hat sich bedankt: 65 Mal
- Danksagung erhalten: 673 Mal
Re: Wunderground Wetter mit einfachem HM-Skript holen
Wenn Zeitmodule täglich bla,bla
dann Script
Alchy
dann Script
Code: Alles auswählen
object heute= dom.GetObject(ID_SYSTEM_VARIABLES).Get("W_NiederschlagHeute");
object gestern = dom.GetObject(ID_SYSTEM_VARIABLES).Get("W_NiederschlagGestern");
if ( (heute) && (gestern) ){ gestern.State(heute.Value());}else{WriteLine("Variablen falsch");}
Blacklist................... almost full
Ignoranz ist die Summe aller Maßnahmen die man ergreift, um bestehende Tatsachen nicht sehen zu müssen.
© Sandra Pulsfort (*1974)
Lies bitte die Logik von WebUI Programmen und die Tipps und Tricks für Anfänger.
Wichtig auch CUxD ersetzt System.exec. Die HM Script Doku (Downloadart Skripte) hilft auch weiter.
Zum Testen von Scripten den >> HomeMatic Script Executor << von Anli benutzen.
-
- Beiträge: 22
- Registriert: 05.01.2016, 19:06
- Danksagung erhalten: 1 Mal
Re: Wunderground Wetter mit einfachem HM-Skript holen
Vielen Dank alchy. Das Script funktioniert bestens.
Fehler bei Wunderground Wetter
Hallo zusammen,
ich möchte gerne dieses Skript benutzen:
!Stand 03.04.2014 http://homematic-forum.de/forum/viewtop ... 31&t=17209
Leider erhalte ich folgende Fehlermeldung: "Error 1 at row 18 col 1 near ^Â, Parse following code failed:"
Kann mir bitte jemand helfen? Vielen lieben Dank.
Viele Grüße
ich möchte gerne dieses Skript benutzen:
!Stand 03.04.2014 http://homematic-forum.de/forum/viewtop ... 31&t=17209
Code: Alles auswählen
!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 mb
!W_Luftdrucktrend Zeichenkette
!W_Taupunkt Zahl °C
!W_UV Zeichenkette
var url = "http://api.wunderground.com/api/api-key/conditions/lang:DL/q/Germany/ort.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("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);
Kann mir bitte jemand helfen? Vielen lieben Dank.
Viele Grüße
Zuletzt geändert von alchy am 25.07.2017, 16:14, insgesamt 1-mal geändert.
Grund: Threads zusammengeführt - Code in Codetags posten
Grund: Threads zusammengeführt - Code in Codetags posten
Re: Wunderground Wetter mit einfachem HM-Skript holen
vielleicht wurden da Zeichen beim Kopieren zerstört, entferne einfach mal den ersten Kommentar-Block (die Zeilen mit Ausrufezeichen) gibts dann noch einen Fehler? Wenn ja: welchen?
Re: Wunderground Wetter mit einfachem HM-Skript holen
Guten Morgen,
vielen Dank für Deine Antwort! Ich habe den ersten Block gelöscht und nun gibt er mir den gleichen Fehler in einer anderen Zeile an. Ich glaube ich werde den Text einfach selber schreiben und hoffe das es dann funktioniert. So wie es aussieht ist beim kopieren irgendwas schief gelaufen. Ich werde es ausprobieren und berichten. Danke für deine Hilfe!
Viele Grüße
vielen Dank für Deine Antwort! Ich habe den ersten Block gelöscht und nun gibt er mir den gleichen Fehler in einer anderen Zeile an. Ich glaube ich werde den Text einfach selber schreiben und hoffe das es dann funktioniert. So wie es aussieht ist beim kopieren irgendwas schief gelaufen. Ich werde es ausprobieren und berichten. Danke für deine Hilfe!
Viele Grüße
-
- Beiträge: 10754
- Registriert: 24.02.2011, 01:34
- System: CCU
- Hat sich bedankt: 65 Mal
- Danksagung erhalten: 673 Mal
Re: Wunderground Wetter mit einfachem HM-Skript holen
Keinen Umweg beim Kopieren des Scriptes.
Das Script direkt aus dem Browserfenser per Copy und Paste in das Programm einfügen.
Solltest du trotz Vermutung keinen Umweg machen (Zwischenhalt in einem Windoof Editor o.ä. ) dann zum Test Browser wechseln.
Alchy
Das Script direkt aus dem Browserfenser per Copy und Paste in das Programm einfügen.
Solltest du trotz Vermutung keinen Umweg machen (Zwischenhalt in einem Windoof Editor o.ä. ) dann zum Test Browser wechseln.
Alchy
Blacklist................... almost full
Ignoranz ist die Summe aller Maßnahmen die man ergreift, um bestehende Tatsachen nicht sehen zu müssen.
© Sandra Pulsfort (*1974)
Lies bitte die Logik von WebUI Programmen und die Tipps und Tricks für Anfänger.
Wichtig auch CUxD ersetzt System.exec. Die HM Script Doku (Downloadart Skripte) hilft auch weiter.
Zum Testen von Scripten den >> HomeMatic Script Executor << von Anli benutzen.
Re: Wunderground Wetter mit einfachem HM-Skript holen
Ok ich werde es heute Nachmittag nochmal probieren. Vielen lieben Dank!!!
Viele Grüße
Viele Grüße
Re: Wunderground Wetter mit einfachem HM-Skript holen
Guten Morgen zusammen,
also da ist irgendwas beim kopieren schief gelaufen. Jetzt funktioniert es und nochmals vielen lieben Dank!
Viele Grüße
also da ist irgendwas beim kopieren schief gelaufen. Jetzt funktioniert es und nochmals vielen lieben Dank!
Viele Grüße