Wetterdaten von Wunderground

Einrichtung, Anschluss und Programmierung der HomeMatic CCU

Moderator: Co-Administratoren

Tyfys
Beiträge: 551
Registriert: 17.04.2021, 17:12
System: CCU
Hat sich bedankt: 27 Mal
Danksagung erhalten: 125 Mal

Re: Wetterdaten von Wunderground

Beitrag von Tyfys » 05.03.2024, 12:50

Da die Wetterdaten im XML-Format vorliegen,
kann man zum Auslesen der einzelnen Werte mit HM-Skript
auch die darin enthaltenen XML-Funktionen nutzen.

Hier mal ein Beispiel für die gezeigten Wetterdaten :

Code: Alles auswählen

string wetter_xml =
'<observations>
<observations>
<observations>
<stationID>IASCEA4</stationID>
<obsTimeUtc>2024-03-05T07:38:13Z</obsTimeUtc>
<obsTimeLocal>2024-03-05 08:38:13</obsTimeLocal>
<neighborhood>Ascea</neighborhood>
<softwareTYpe>EasyWeatherV1.2.2</softwareTYpe> 
<country>IT</country>
<solarRadiation>193.41</solarRadiation>
<lon>15.174685</lon>
<epoch>1709624293</epoch>
<lat>40.174818</lat>
<uv>1</uv>
<winddir>161</winddir>
<humiditY>98</humiditY>
<qcStatus>1</qcStatus>
<metric>
<temp>9</temp>
<heatIndex>9</heatIndex>
<dewpt>9</dewpt>
<windChill>9</windChill>
<windSpeed>0</windSpeed>
<windGust>0</windGust>
<pressure>1005.08013648</pressure>
<precipRate>0</precipRate>
<precipTotal>1.27</precipTotal>
<elev>82</elev>
</metric>
</observations>
</observations>
</observations>';


xml xmlData;
xml Elem1 = xmlData.Parse(wetter_xml).GetChildNode("observations").GetChildNode("observations");

WriteLine(Elem1.GetChildNode("stationID").GetText());
WriteLine(Elem1.GetChildNode("obsTimeLocal").GetText());
WriteLine(Elem1.GetChildNode("neighborhood").GetText());
WriteLine(Elem1.GetChildNode("solarRadiation").GetText());
WriteLine(Elem1.GetChildNode("uv").GetText());
WriteLine(Elem1.GetChildNode("winddir").GetText());
WriteLine(Elem1.GetChildNode("humiditY").GetText());
WriteLine(Elem1.GetChildNode("metric").GetChildNode("temp").GetText());
WriteLine(Elem1.GetChildNode("metric").GetChildNode("heatIndex").GetText());
WriteLine(Elem1.GetChildNode("metric").GetChildNode("dewpt").GetText());
WriteLine(Elem1.GetChildNode("metric").GetChildNode("windChill").GetText());
WriteLine(Elem1.GetChildNode("metric").GetChildNode("windSpeed").GetText());
WriteLine(Elem1.GetChildNode("metric").GetChildNode("windGust").GetText());
WriteLine(Elem1.GetChildNode("metric").GetChildNode("pressure").GetText());
WriteLine(Elem1.GetChildNode("metric").GetChildNode("precipRate").GetText());
WriteLine(Elem1.GetChildNode("metric").GetChildNode("precipTotal").GetText());
WriteLine(Elem1.GetChildNode("metric").GetChildNode("elev").GetText());

!Beispiel für eine Überegabe an eine Systemvariable
real Wert=   Elem1.GetChildNode("metric").GetChildNode("pressure").GetText().ToFloat();
 !Schreiben über Variablen für Systemvariablennamen und neuem Wert
 string SysVarName = "deineSystemvariable";
 if (dom.GetObject(ID_SYSTEM_VARIABLES).Get(SysVarName)) {
    dom.GetObject(ID_SYSTEM_VARIABLES).Get(SysVarName).State(Wert);
 } else { 
    WriteLine("Variablenname ist falsch");
 }
(nur weil es hier regnet und mir Spaß macht)
Gruß
Harry

Antworten

Zurück zu „HomeMatic Zentrale (CCU / CCU2 / CCU3 / Charly)“