Wunderground Wetter mit einfachem HM-Skript holen

User stellen ihre Haussteuerung vor

Moderator: Co-Administratoren

cotonila
Beiträge: 67
Registriert: 17.11.2016, 20:51
Wohnort: bei Riesa
Hat sich bedankt: 1 Mal

Re: Wunderground Wetter mit einfachem HM-Skript holen

Beitrag von cotonila » 13.01.2019, 14:31

Die DarkSky API ist gut dokumentiert. Die Abfrage funktioniert genau wie die WUG XML Abfrage.

Also großes Plus bei DarkSky empfand ich, dass auch wie bei WUG eine Klartext Vorhersage ausgegeben wir.

VG
Raspberry Pi 4B mit RPI-RF-MOD; 2x RPi LAN GW;
990 Kanäle in 293 Geräten; 262 Programme; 339 Systemvariablen
AddOns: CUxD; HQ WebUI; JP HB Devices;CCU Historian; E-Mail; QuickAccess; Drucken; SonosPlayer; WatchDog; div. ESP8266, extra: Homeduino; ioBroker; Medial Neo

debianatoe
Beiträge: 473
Registriert: 05.12.2016, 19:04
Hat sich bedankt: 30 Mal
Danksagung erhalten: 4 Mal

Re: Wunderground Wetter mit einfachem HM-Skript holen

Beitrag von debianatoe » 13.01.2019, 17:17

Die DarkSky API ist wirklich gut. Für mich als Nachteil sehe ich, daß die nächste Meßstation 15km entfernt steht. Die Wunderground-Station stand näher als 1km.
Viele Grüße,
debianatoe

Gnomi_Berlin
Beiträge: 32
Registriert: 01.12.2016, 17:42
Hat sich bedankt: 1 Mal
Danksagung erhalten: 3 Mal

Re: Wunderground Wetter mit einfachem HM-Skript holen

Beitrag von Gnomi_Berlin » 20.01.2019, 21:29

Umstieg OpenWeatherMap - möglichst kompatibel

Hallo,
wer nicht alles neu umsetzen will und die alten Variablen weiternutzen möchte, kann dies verwenden.
  • APIID von OpenWeatherMap besorgen und in url= unten "xxxxxxxxxxxxxxxx" ersetzen.(Natürlich auch die Stadt anpassen)
  • Script einfach austauschen, was periodisch aufgerufen wird.
  • Manche Variablen nicht mehr unterstützt. Daher habe ich diese gelöscht und andere in der Einheit angepasst.
Wetter_Windgeschwindigkeit Zahl km/h --> jetzt m/s
Wetter_Windboeen Zahl km/h --> streichen
Wetter_Luftdruck Zahl mb --> hPa
Wetter_Luftdrucktrend Zeichenkette --> streichen
Wetter_Taupunkt Zahl °C --> streichen
Wetter_UV Zeichenkette --> streichen

Code: Alles auswählen

!Stand 03.04.2014  http://homematic-forum.de/forum/viewtopic.php?f=31&t=17209 --> update OpenWeatherMap 20.01.2019
 !zuerst folgende Systemvariablen anlegen
 !Achtung: keine vergessen und exakte Schreibweise mit Drag&Drop
 !Wetter_Station                        Zeichenkette
 !Wetter_Aktualisierung             Zeichenkette
 !Wetter_Bedingungen               Zeichenkette
 !Wetter_Temperatur                  Zahl                     °C
 !Wetter_Luftfeuchte                  Zahl                      %
 !Wetter_Windbedingungen       Zeichenkette
 !Wetter_Windrichtung               Zeichenkette
 !Wetter_Windrichtg                   Zahl                       °
 !Wetter_Windgeschwindigkeit   Zahl                     m/s
 !Wetter_Luftdruck                      Zahl                      hPa


var url = "http://api.openweathermap.org/data/2.5/weather?q=Berlin,de&appid=xxxxxxxxxxxxxxxx&lang=de&mode=xml&units=metric";

 !hier ist die Abfrage mit CUxD
 dom.GetObject("CUxD.CUX2801001:2.CMD_SETS").State("wget -q -O - '"#url#"'");
 dom.GetObject("CUxD.CUX2801001:2.CMD_QUERY_RET").State(1);
 string wetter_xml = dom.GetObject("CUxD.CUX2801001:2.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("current");
 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";
 string param = "name";
 integer param_laenge = param.Length();
 integer word_position = wetter_xml.Find(word);
 integer word_pos_end = wetter_xml.Find("coord");
 string daten = wetter_xml.Substr(word_position, word_pos_end);
 word_position = daten.Find(param);
 word_pos_end = daten.Find("coo");
 daten = daten.Substr(word_position + param_laenge + 2 , word_pos_end);
 word_pos_end = daten.Find("\"");
 daten = daten.Substr(0, word_pos_end);
 dom.GetObject("Wetter_Station").State(daten);
 
 string word = "temperature";
 string param = "value";
 integer param_laenge = param.Length();
 integer word_position = wetter_xml.Find(word);
 integer word_pos_end = wetter_xml.Find("coord");
 string daten = wetter_xml.Substr(word_position, word_pos_end);
 word_position = daten.Find(param);
 word_pos_end = daten.Find("coo");
 daten = daten.Substr(word_position + param_laenge + 2 , word_pos_end);
 word_pos_end = daten.Find("\"");
 daten = daten.Substr(0, word_pos_end);
  real zahl = daten.ToFloat();
 dom.GetObject("Wetter_Temperatur").State(zahl);


 string word = "humidity";
 string param = "value";
 integer param_laenge = param.Length();
 integer word_position = wetter_xml.Find(word);
 integer word_pos_end = wetter_xml.Find("coord");
 string daten = wetter_xml.Substr(word_position, word_pos_end);
 word_position = daten.Find(param);
 word_pos_end = daten.Find("coo");
 daten = daten.Substr(word_position + param_laenge + 2 , word_pos_end);
 word_pos_end = daten.Find("\"");
 daten = daten.Substr(0, word_pos_end);
 integer zahl = daten.ToFloat();
 dom.GetObject("Wetter_Luftfeuchte").State(zahl);


 string word = "pressure";
 string param = "value";
 integer param_laenge = param.Length();
 integer word_position = wetter_xml.Find(word);
 integer word_pos_end = wetter_xml.Find("coord");
 string daten = wetter_xml.Substr(word_position, word_pos_end);
 word_position = daten.Find(param);
 word_pos_end = daten.Find("coo");
 daten = daten.Substr(word_position + param_laenge + 2 , word_pos_end);
 word_pos_end = daten.Find("\"");
 daten = daten.Substr(0, word_pos_end);
  integer zahl = daten.ToFloat();
 dom.GetObject("Wetter_Luftdruck").State(zahl);


 string word = "speed";
 string param = "value";
 integer param_laenge = param.Length();
 integer word_position = wetter_xml.Find(word);
 integer word_pos_end = wetter_xml.Find("coord");
 string daten = wetter_xml.Substr(word_position, word_pos_end);
 word_position = daten.Find(param);
 word_pos_end = daten.Find("coo");
 daten = daten.Substr(word_position + param_laenge + 2 , word_pos_end);
 word_pos_end = daten.Find("\"");
 daten = daten.Substr(0, word_pos_end);
 integer zahl = daten.ToFloat();
 dom.GetObject("Wetter_Windgeschwindigkeit").State(zahl);


 string word = "speed";
 string param = "name";
 integer param_laenge = param.Length();
 integer word_position = wetter_xml.Find(word);
 integer word_pos_end = wetter_xml.Find("coord");
 string daten = wetter_xml.Substr(word_position, word_pos_end);
 word_position = daten.Find(param);
 word_pos_end = daten.Find("coo");
 daten = daten.Substr(word_position + param_laenge + 2 , word_pos_end);
 word_pos_end = daten.Find("\"");
 daten = daten.Substr(0, word_pos_end);
 dom.GetObject("Wetter_Windbedingungen").State(daten);


 string word = "direction";
 string param = "name";
 integer param_laenge = param.Length();
 integer word_position = wetter_xml.Find(word);
 integer word_pos_end = wetter_xml.Find("coord");
 string daten = wetter_xml.Substr(word_position, word_pos_end);
 word_position = daten.Find(param);
 word_pos_end = daten.Find("coo");
 daten = daten.Substr(word_position + param_laenge + 2 , word_pos_end);
 word_pos_end = daten.Find("\"");
 daten = daten.Substr(0, word_pos_end);
 dom.GetObject("Wetter_Windrichtung").State(daten);

 string word = "direction";
 string param = "value";
 integer param_laenge = param.Length();
 integer word_position = wetter_xml.Find(word);
 integer word_pos_end = wetter_xml.Find("coord");
 string daten = wetter_xml.Substr(word_position, word_pos_end);
 word_position = daten.Find(param);
 word_pos_end = daten.Find("coo");
 daten = daten.Substr(word_position + param_laenge + 2 , word_pos_end);
 word_pos_end = daten.Find("\"");
 daten = daten.Substr(0, word_pos_end);
 integer zahl = daten.ToFloat();
 dom.GetObject("Wetter_Windrichtg").State(zahl);

 string word = "clouds";
 string param = "name";
 integer param_laenge = param.Length();
 integer word_position = wetter_xml.Find(word);
 integer word_pos_end = wetter_xml.Find("coord");
 string daten = wetter_xml.Substr(word_position, word_pos_end);
 word_position = daten.Find(param);
 word_pos_end = daten.Find("coo");
 daten = daten.Substr(word_position + param_laenge + 2 , word_pos_end);
 word_pos_end = daten.Find("\"");
 daten = daten.Substr(0, word_pos_end);
 dom.GetObject("Wetter_Bedingungen").State(daten);


 string word = "lastupdate";
 string param = "value";
 integer param_laenge = param.Length();
 integer word_position = wetter_xml.Find(word);
 integer word_pos_end = wetter_xml.Find("coord");
 string daten = wetter_xml.Substr(word_position, word_pos_end);
 word_position = daten.Find(param);
 word_pos_end = daten.Find("coo");
 daten = daten.Substr(word_position + param_laenge + 2 , word_pos_end);
 word_pos_end = daten.Find("\"");
 daten = daten.Substr(0, word_pos_end);
 dom.GetObject("Wetter_Aktualisierung").State(daten);
Verbesserungen sind willkommen (manche Werte auf englisch). Aber das hilft ggf. einigen, die rückwärtskompatibel anpassen möchten.

Viel Spaß

Garbsen
Beiträge: 295
Registriert: 12.07.2017, 21:08
Hat sich bedankt: 1 Mal
Danksagung erhalten: 14 Mal

Re: Wunderground Wetter mit einfachem HM-Skript holen

Beitrag von Garbsen » 21.01.2019, 14:08

Gnomi_Berlin hat geschrieben:
20.01.2019, 21:29
Umstieg OpenWeatherMap - möglichst kompatibel

Hallo,
wer nicht alles neu umsetzen will und die alten Variablen weiternutzen möchte, kann dies verwenden.
  • APIID von OpenWeatherMap besorgen und in url= unten "xxxxxxxxxxxxxxxx" ersetzen.(Natürlich auch die Stadt anpassen)
  • Script einfach austauschen, was periodisch aufgerufen wird.
  • Manche Variablen nicht mehr unterstützt. Daher habe ich diese gelöscht und andere in der Einheit angepasst.

Danke dafür an gnomi_berlin, funktioniert super.
Allerdings 🙊 ich benötige nicht so sehr die aktuellen Daten, sondern die Vorhersage.
Nun weiß ich zwar, wie ich die API ändere, aber mit dem XML-File bin ich überfordert.
Hast Du „Lust“ (und Zeit) ein Script zu schreiben, das aus dem forecast die Daten für Temperatur (Max min) (und eventuell Niederschlag) für den aktuellen Tag und eventuell auch den nächsten Tag extrahiert und in Systemvariable schreibt?
Das wäre Super
Beste Grüße
K-H
512 Kanäle in 101 Geräten und 145 CUxD-Kanäle in 19 CUxD-Geräten:
--------------------------------------------
http://www.eq-3.de/service/downloads.html
Tips und Tricks für Anfänger: viewtopic.php?t=22801
Programmlogik: viewtopic.php?f=31&t=4251
Webui-Handbuch: https://www.eq-3.de/Downloads/eq3/downl ... h_eQ-3.pdf
Script und Linksammlung: viewtopic.php?f=26&t=27907

c200sc
Beiträge: 50
Registriert: 27.05.2015, 19:02

Re: Wunderground Wetter mit einfachem HM-Skript holen

Beitrag von c200sc » 22.01.2019, 11:50

Diesem Wunsch würde ich mich gerne anschließen. Ich nutze die Vorhersage zur Steuerung meiner Verschattung und wäre sehr sehr dankbar für ein funktionierendes Skript als Ersatz für wunderground.

Garbsen
Beiträge: 295
Registriert: 12.07.2017, 21:08
Hat sich bedankt: 1 Mal
Danksagung erhalten: 14 Mal

Re: Wunderground Wetter mit einfachem HM-Skript holen

Beitrag von Garbsen » 22.01.2019, 19:02

Dann sind wir ja schon 2 Wünschende. Ich habe mir die XML mal angesehen, das ist echt eine Herausforderung. Die Vorhersage arbeitet nicht mit „morgen“ „übermorgen“ ..., sondern mit dem Datum. Dh. Um den benötigten String auszuschneiden, muss man erstmal das Systemdatum auswerten und das dann irgendwie mit dem String vergleichen.
Das überschreitet wirklich meine Fähigkeiten zum scripten.
Hoffen wir mal, dass wir jemanden erweichen können, ein entsprechendes Script zu schreiben und mit uns Dummies zu teilen.
512 Kanäle in 101 Geräten und 145 CUxD-Kanäle in 19 CUxD-Geräten:
--------------------------------------------
http://www.eq-3.de/service/downloads.html
Tips und Tricks für Anfänger: viewtopic.php?t=22801
Programmlogik: viewtopic.php?f=31&t=4251
Webui-Handbuch: https://www.eq-3.de/Downloads/eq3/downl ... h_eQ-3.pdf
Script und Linksammlung: viewtopic.php?f=26&t=27907

cotonila
Beiträge: 67
Registriert: 17.11.2016, 20:51
Wohnort: bei Riesa
Hat sich bedankt: 1 Mal

Re: Wunderground Wetter mit einfachem HM-Skript holen

Beitrag von cotonila » 22.01.2019, 19:29

Wenn ich später dazu komme und dran denke, stell ich euch mal mein Script für die die Abfrage von DarkSky rein. Da rechne ich auch mit den Zeiten.
Ist dann „ein leichtes“ es für eure Zwecke anzupassen.

VG Toni
Raspberry Pi 4B mit RPI-RF-MOD; 2x RPi LAN GW;
990 Kanäle in 293 Geräten; 262 Programme; 339 Systemvariablen
AddOns: CUxD; HQ WebUI; JP HB Devices;CCU Historian; E-Mail; QuickAccess; Drucken; SonosPlayer; WatchDog; div. ESP8266, extra: Homeduino; ioBroker; Medial Neo

Garbsen
Beiträge: 295
Registriert: 12.07.2017, 21:08
Hat sich bedankt: 1 Mal
Danksagung erhalten: 14 Mal

Re: Wunderground Wetter mit einfachem HM-Skript holen

Beitrag von Garbsen » 22.01.2019, 19:50

cotonila hat geschrieben:
22.01.2019, 19:29
Wenn ich später dazu komme und dran denke, stell ich euch mal mein Script für die die Abfrage von DarkSky rein. Da rechne ich auch mit den Zeiten.
Ist dann „ein leichtes“ es für eure Zwecke anzupassen.

VG Toni
Klingt gut, danke vorab
512 Kanäle in 101 Geräten und 145 CUxD-Kanäle in 19 CUxD-Geräten:
--------------------------------------------
http://www.eq-3.de/service/downloads.html
Tips und Tricks für Anfänger: viewtopic.php?t=22801
Programmlogik: viewtopic.php?f=31&t=4251
Webui-Handbuch: https://www.eq-3.de/Downloads/eq3/downl ... h_eQ-3.pdf
Script und Linksammlung: viewtopic.php?f=26&t=27907

debianatoe
Beiträge: 473
Registriert: 05.12.2016, 19:04
Hat sich bedankt: 30 Mal
Danksagung erhalten: 4 Mal

Re: Wunderground Wetter mit einfachem HM-Skript holen

Beitrag von debianatoe » 22.01.2019, 22:08

OpenWeatherMap hat nach meiner Erfahrung den Nachteil, daß die Daten nur relativ selten (Stundentakt?) geändert werden. Für die 24h-Vorhersage spielt das wohl nur eine untergeordnete Rolle, aber bei den aktuellen Werten (z.B. Temperatur, Niederschlag, Wind) finde ich das zu selten. DarkSky ist diesbezüglich super, weil hier sehr häufig (minütlich?) neue Daten geliefert werden. Wie ist eure Erfahrung mit der Genauigkeit/Zuverlässigkeit der angebotenen Daten? Ich habe für meinen Standort beispielsweise festgestellt, daß die Windwerte von DarkSky doppelt bis dreimal so hoch sind wie die von OpenWeatherMap.
Viele Grüße,
debianatoe

cotonila
Beiträge: 67
Registriert: 17.11.2016, 20:51
Wohnort: bei Riesa
Hat sich bedankt: 1 Mal

Re: Wunderground Wetter mit einfachem HM-Skript holen

Beitrag von cotonila » 22.01.2019, 22:20

So, hier mal auf die schnelle mein DarkSky Script. Ich komm jetzt nicht zum kommentieren.
Aber vieles ist ja selbst erklärend... Variablen müssten entsprechend angepasst werden...
Aber das Prinzip ist erkennbar...

VG Toni

Code: Alles auswählen

!WetterScript für Abfrage DarkSky - erstellt am 04.01.2019 Toni Jacob

var url = "https://api.darksky.net/......[eigene ID]..../...[eigene Koordinaten].....?lang=de&units=si&exclude=hourly,currently";

!hier ist die Abfrage mit CUxD
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.CUX2801002:1.CMD_RETS").State();

dom.GetObject("Wetter_Aktualisierung").State(system.Date("%d.%m.%Y %T"));

!Ausgabe der RAW JSON Nachricht

!Beim XML-File den ueberfluessigen Header entfernen
integer laenge = wetter_xml.Length();
integer wort_position = wetter_xml.Find("timezone");
wetter_xml = wetter_xml.Substr(wort_position +4, (laenge - wort_position));

! Variablen füllen



!-----------------WOCHE TEIL-------------------------------

string word = "summary";
integer word_laenge = word.Length();
integer word_position = wetter_xml.Find(word);
string daten = wetter_xml.Substr((word_position + word_laenge +3), 200); !Startwort suchen --> summary und bei +3 Zeichen für 200 Zeichen in Var daten schreiben
integer word_position = daten.Find("."); !Ende suchen --> . und bei +1 Zeichen Rest der 200 Zeichen abschneiden und in Var daten schreiben
daten = daten.Substr(0, (word_position +1));
daten = daten.ToLatin(); !Konvertierung der Zeichenkette richtiges Format
dom.GetObject("Wetter_Text_Woche").State(daten);



!-----------------HEUTE TEIL-------------------------------

string word = "time"; !Erste Suche für Heute Teil muss über time gehen, da Datumrechung erst im Anschluss erfolgt. Erst damit können die weiteren Tage besser gefiltert werden.
integer word_laenge = word.Length();
integer word_position = wetter_xml.Find(word);
string wetter_xml_heute = wetter_xml.Substr((word_position + word_laenge -4), 1000); !Startwort suchen --> summary und für 1000 zeichen in wetter-xml_heute schreiben

string word = "time";
integer word_laenge = word.Length();
integer word_position = wetter_xml_heute.Find(word);
integer daten = wetter_xml_heute.Substr((word_position + word_laenge +2), 10);
real datum_heute1 = daten.ToFloat();
real datum_heute = datum_heute1.ToString(0);
real datum_morgen1 = datum_heute1 + 86400;
real datum_morgen = datum_morgen1.ToString(0);
real datum_uebermorgen1 = datum_morgen1 + 86400;
real datum_uebermorgen = datum_uebermorgen1.ToString(0);
WriteLine(datum_heute);
WriteLine(datum_morgen);
WriteLine(datum_uebermorgen);

string word = "summary";
integer word_laenge = word.Length();
integer word_position = wetter_xml_heute.Find(word);
string daten = wetter_xml_heute.Substr((word_position + word_laenge +3), 200);
integer word_position = daten.Find(".");
daten = daten.Substr(0, (word_position +1));
daten = daten.ToLatin();
dom.GetObject("Wetter_Text_Heute").State(daten);

string word = "icon";
integer word_laenge = word.Length();
integer word_position = wetter_xml_heute.Find(word);
string daten = wetter_xml_heute.Substr((word_position + word_laenge +3), 100);
integer word_position = daten.Find(",");
daten = daten.Substr(0, (word_position -1));
dom.GetObject("Wetter_Icon_Heute").State(daten);

string word = "temperatureHigh";
integer word_laenge = word.Length();
integer word_position = wetter_xml_heute.Find(word);
string daten = wetter_xml_heute.Substr((word_position + word_laenge +2), 5);
integer word_position = daten.Find(",");
daten = daten.Substr(0, (word_position));
daten = daten.ToString(0); !#" °C";
dom.GetObject("Wetter_Temperatur_Heute_max").State(daten);

string word = "temperatureLow";
integer word_laenge = word.Length();
integer word_position = wetter_xml_heute.Find(word);
string daten = wetter_xml_heute.Substr((word_position + word_laenge +2), 5);
integer word_position = daten.Find(",");
daten = daten.Substr(0, (word_position));
daten = daten.ToString(0); !#" °C";
dom.GetObject("Wetter_Temperatur_Heute_min").State(daten);

string word = "precipProbability";
integer word_laenge = word.Length();
integer word_position = wetter_xml_heute.Find(word);
string daten = wetter_xml_heute.Substr((word_position + word_laenge +2), 5);
integer word_position = daten.Find(",");
daten = daten.Substr(0, (word_position));
real daten1 = daten.ToFloat();
daten1 = daten1 *100;
daten = daten1.ToString(0)#" %";
dom.GetObject("Wetter_Regenwahrscheinlichkeit_Heute").State(daten);

string word = "precipAccumulation";
integer word_laenge = word.Length();
integer word_position = wetter_xml_heute.Find(word);
string daten = wetter_xml_heute.Substr((word_position + word_laenge +2), 5);
integer word_position = daten.Find(",");
daten = daten.Substr(0, (word_position));
real daten1 = daten.ToFloat();
daten1 = daten1 *10;
daten = daten1.ToString(0)#" mm";
dom.GetObject("Wetter_Regen_Heute_max").State(daten);

string word = "humidity";
integer word_laenge = word.Length();
integer word_position = wetter_xml_heute.Find(word);
string daten = wetter_xml_heute.Substr((word_position + word_laenge +2), 5);
integer word_position = daten.Find(",");
daten = daten.Substr(0, (word_position));
real daten1 = daten.ToFloat();
daten1 = daten1 *100;
daten = daten1.ToString(0)#" %";
dom.GetObject("Wetter_Luftfeuchte_Heute").State(daten);

string word = "precipType";
integer word_laenge = word.Length();
integer word_position = wetter_xml_heute.Find(word);
string daten = wetter_xml_heute.Substr((word_position + word_laenge +3), 10);
integer word_position = daten.Find(",");
daten = daten.Substr(0, (word_position -1));
daten = daten.ToLatin();
dom.GetObject("Wetter_Niederschlagsart_Heute").State(daten);



!-----------------MORGEN TEIL-------------------------------

string word = datum_morgen;
integer word_laenge = word.Length();
integer word_position = wetter_xml.Find(word);
string wetter_xml_morgen = wetter_xml.Substr((word_position + word_laenge -10), 1000);

string word = "summary";
integer word_laenge = word.Length();
integer word_position = wetter_xml_morgen.Find(word);
string daten = wetter_xml_morgen.Substr((word_position + word_laenge +3), 200);
integer word_position = daten.Find(".");
daten = daten.Substr(0, (word_position +1));
daten = daten.ToLatin();
dom.GetObject("Wetter_Text_Morgen").State(daten);

string word = "icon";
integer word_laenge = word.Length();
integer word_position = wetter_xml_morgen.Find(word);
string daten = wetter_xml_morgen.Substr((word_position + word_laenge +3), 100);
integer word_position = daten.Find(",");
daten = daten.Substr(0, (word_position -1));
dom.GetObject("Wetter_Icon_Morgen").State(daten);

string word = "temperatureHigh";
integer word_laenge = word.Length();
integer word_position = wetter_xml_morgen.Find(word);
string daten = wetter_xml_morgen.Substr((word_position + word_laenge +2), 5);
integer word_position = daten.Find(",");
daten = daten.Substr(0, (word_position));
daten = daten.ToString(0); !#" °C";
dom.GetObject("Wetter_Temperatur_Morgen_max").State(daten);

string word = "temperatureLow";
integer word_laenge = word.Length();
integer word_position = wetter_xml_morgen.Find(word);
string daten = wetter_xml_morgen.Substr((word_position + word_laenge +2), 5);
integer word_position = daten.Find(",");
daten = daten.Substr(0, (word_position));
daten = daten.ToString(0); !#" °C";
dom.GetObject("Wetter_Temperatur_Morgen_min").State(daten);

string word = "precipProbability";
integer word_laenge = word.Length();
integer word_position = wetter_xml_morgen.Find(word);
string daten = wetter_xml_morgen.Substr((word_position + word_laenge +2), 5);
integer word_position = daten.Find(",");
daten = daten.Substr(0, (word_position));
real daten1 = daten.ToFloat();
daten1 = daten1 *100;
daten = daten1.ToString(0)#" %";
dom.GetObject("Wetter_Regenwahrscheinlichkeit_Morgen").State(daten);

string word = "precipAccumulation";
integer word_laenge = word.Length();
integer word_position = wetter_xml_morgen.Find(word);
string daten = wetter_xml_morgen.Substr((word_position + word_laenge +2), 5);
integer word_position = daten.Find(",");
daten = daten.Substr(0, (word_position));
real daten1 = daten.ToFloat();
daten1 = daten1 *10;
daten = daten1.ToString(0)#" mm";
dom.GetObject("Wetter_Regen_Morgen_max").State(daten);

string word = "humidity";
integer word_laenge = word.Length();
integer word_position = wetter_xml_morgen.Find(word);
string daten = wetter_xml_morgen.Substr((word_position + word_laenge +2), 5);
integer word_position = daten.Find(",");
daten = daten.Substr(0, (word_position));
real daten1 = daten.ToFloat();
daten1 = daten1 *100;
daten = daten1.ToString(0)#" %";
dom.GetObject("Wetter_Luftfeuchte_Morgen").State(daten);

string word = "precipType";
integer word_laenge = word.Length();
integer word_position = wetter_xml_morgen.Find(word);
string daten = wetter_xml_morgen.Substr((word_position + word_laenge +3), 10);
integer word_position = daten.Find(",");
daten = daten.Substr(0, (word_position -1));
daten = daten.ToLatin();
dom.GetObject("Wetter_Niederschlagsart_Morgen").State(daten);



!-----------------UEBERMORGEN TEIL-------------------------------

string word = datum_uebermorgen;
integer word_laenge = word.Length();
integer word_position = wetter_xml.Find(word);
string wetter_xml_uebermorgen = wetter_xml.Substr((word_position + word_laenge -10), 1000);

string word = "summary";
integer word_laenge = word.Length();
integer word_position = wetter_xml_uebermorgen.Find(word);
string daten = wetter_xml_uebermorgen.Substr((word_position + word_laenge +3), 200);
integer word_position = daten.Find(".");
daten = daten.Substr(0, (word_position +1));
daten = daten.ToLatin();
dom.GetObject("Wetter_Text_Uebermorgen").State(daten);

string word = "icon";
integer word_laenge = word.Length();
integer word_position = wetter_xml_uebermorgen.Find(word);
string daten = wetter_xml_uebermorgen.Substr((word_position + word_laenge +3), 100);
integer word_position = daten.Find(",");
daten = daten.Substr(0, (word_position -1));
dom.GetObject("Wetter_Icon_Uebermorgen").State(daten);

string word = "temperatureHigh";
integer word_laenge = word.Length();
integer word_position = wetter_xml_uebermorgen.Find(word);
string daten = wetter_xml_uebermorgen.Substr((word_position + word_laenge +2), 5);
integer word_position = daten.Find(",");
daten = daten.Substr(0, (word_position));
daten = daten.ToString(0); !#" °C";
dom.GetObject("Wetter_Temperatur_Uebermorgen_max").State(daten);

string word = "temperatureLow";
integer word_laenge = word.Length();
integer word_position = wetter_xml_uebermorgen.Find(word);
string daten = wetter_xml_uebermorgen.Substr((word_position + word_laenge +2), 5);
integer word_position = daten.Find(",");
daten = daten.Substr(0, (word_position));
daten = daten.ToString(0); !#" °C";
dom.GetObject("Wetter_Temperatur_Uebermorgen_min").State(daten);

string word = "precipProbability";
integer word_laenge = word.Length();
integer word_position = wetter_xml_uebermorgen.Find(word);
string daten = wetter_xml_uebermorgen.Substr((word_position + word_laenge +2), 5);
integer word_position = daten.Find(",");
daten = daten.Substr(0, (word_position));
real daten1 = daten.ToFloat();
daten1 = daten1 *100;
daten = daten1.ToString(0)#" %";
dom.GetObject("Wetter_Regenwahrscheinlichkeit_Uebermorgen").State(daten);

string word = "precipAccumulation";
integer word_laenge = word.Length();
integer word_position = wetter_xml_uebermorgen.Find(word);
string daten = wetter_xml_uebermorgen.Substr((word_position + word_laenge +2), 5);
integer word_position = daten.Find(",");
daten = daten.Substr(0, (word_position));
real daten1 = daten.ToFloat();
daten1 = daten1 *10;
daten = daten1.ToString(0)#" mm";
dom.GetObject("Wetter_Regen_Uebermorgen_max").State(daten);

string word = "humidity";
integer word_laenge = word.Length();
integer word_position = wetter_xml_uebermorgen.Find(word);
string daten = wetter_xml_uebermorgen.Substr((word_position + word_laenge +2), 5);
integer word_position = daten.Find(",");
daten = daten.Substr(0, (word_position));
real daten1 = daten.ToFloat();
daten1 = daten1 *100;
daten = daten1.ToString(0)#" %";
dom.GetObject("Wetter_Luftfeuchte_Uebermorgen").State(daten);

string word = "precipType";
integer word_laenge = word.Length();
integer word_position = wetter_xml_uebermorgen.Find(word);
string daten = wetter_xml_uebermorgen.Substr((word_position + word_laenge +3), 10);
integer word_position = daten.Find(",");
daten = daten.Substr(0, (word_position -1));
daten = daten.ToLatin();
dom.GetObject("Wetter_Niederschlagsart_Uebermorgen").State(daten);

Raspberry Pi 4B mit RPI-RF-MOD; 2x RPi LAN GW;
990 Kanäle in 293 Geräten; 262 Programme; 339 Systemvariablen
AddOns: CUxD; HQ WebUI; JP HB Devices;CCU Historian; E-Mail; QuickAccess; Drucken; SonosPlayer; WatchDog; div. ESP8266, extra: Homeduino; ioBroker; Medial Neo

Antworten

Zurück zu „Projektvorstellungen“