Wunderground Wetter mit einfachem HM-Skript holen
Moderator: Co-Administratoren
Re: Wunderground Wetter mit einfachem HM-Skript holen
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
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
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
-
- Beiträge: 475
- Registriert: 05.12.2016, 19:04
- Hat sich bedankt: 31 Mal
- Danksagung erhalten: 4 Mal
Re: Wunderground Wetter mit einfachem HM-Skript holen
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
debianatoe
-
- 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
Umstieg OpenWeatherMap - möglichst kompatibel
Hallo,
wer nicht alles neu umsetzen will und die alten Variablen weiternutzen möchte, kann dies verwenden.
Wetter_Windboeen Zahl km/h --> streichen
Wetter_Luftdruck Zahl mb --> hPa
Wetter_Luftdrucktrend Zeichenkette --> streichen
Wetter_Taupunkt Zahl °C --> streichen
Wetter_UV Zeichenkette --> streichen
Verbesserungen sind willkommen (manche Werte auf englisch). Aber das hilft ggf. einigen, die rückwärtskompatibel anpassen möchten.
Viel Spaß
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_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);
Viel Spaß
-
- 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
Gnomi_Berlin hat geschrieben: ↑20.01.2019, 21:29Umstieg 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
--------------------------------------------
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
Re: Wunderground Wetter mit einfachem HM-Skript holen
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.
-
- 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
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.
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
--------------------------------------------
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
Re: Wunderground Wetter mit einfachem HM-Skript holen
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
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
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
-
- 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
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
--------------------------------------------
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
-
- Beiträge: 475
- Registriert: 05.12.2016, 19:04
- Hat sich bedankt: 31 Mal
- Danksagung erhalten: 4 Mal
Re: Wunderground Wetter mit einfachem HM-Skript holen
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
debianatoe
Re: Wunderground Wetter mit einfachem HM-Skript holen
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
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
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