HM-Script für virtuelle Wetterstation

User stellen ihre Haussteuerung vor

Moderator: Co-Administratoren

mskrause
Beiträge: 31
Registriert: 13.10.2018, 20:02
Hat sich bedankt: 3 Mal
Danksagung erhalten: 4 Mal

Re: HM-Script für virtuelle Wetterstation

Beitrag von mskrause » 15.09.2019, 11:42

moellerherm hat geschrieben:
15.09.2019, 11:04
Hi,
klasse Script....läuft ohne Probleme..
da mittlerweile mehrere Scripte in diesem Thread angeboten werden, wäre wichtig zu wissen, welches du benutzt, denn in einigen ist der Fehler schon behoben...
ansonsten:
mskrause hat geschrieben:
23.08.2019, 17:47
hypnorex hat geschrieben:
23.08.2019, 16:52
Das Skript an sich funktioniert wunderbar.

Ich verstehe das mit dem +DST nur nicht. Das funktioniert bei mir nicht, wenn ich das eintrage.
Senftopf hat es weiter vorn schon beschrieben:

diesen String suchen (gibt es 3x)

Code: Alles auswählen

genTime1 = genString1.ToTime();
und zwischen () und ; jeweils +DST eintragen, ohne Leerzeichen, macht:

Code: Alles auswählen

genTime1 = genString1.ToTime()+DST;
so hats bei mir funktioniert

Ich hänge mal mein tadellos laufendes Script mit an, einzig die persönliche API muss eingesetzt werden, die City-ID nutze ich nicht, da ich meine Standortdaten in der CCU eingetragen habe, die Einstellungen des CUX2801800-Gerätes muss man ebenso anpassen, bei mir auf Kanal 16, Standard ist 1
Dateianhänge
OpenWeather-CCU-Script edited by regedit V1.2.txt
(40.82 KiB) 243-mal heruntergeladen
38 HMIP-Geräte, 8xHUE über AddOn, 6xTP-Link über AddOn, CUxD, CCU-Historian -> an Charly

Spencer
Beiträge: 42
Registriert: 08.06.2014, 13:42
Hat sich bedankt: 13 Mal
Danksagung erhalten: 1 Mal

Re: HM-Script für virtuelle Wetterstation

Beitrag von Spencer » 07.10.2019, 13:06

Kurze Frage vorab:
Gibt es die Möglichkeit Variablen vom Loggen mit LOGIT auszuschließen? Beispielweise Windrichtung und Letzte Aktualisierung brauche ich nicht im Diagramm.
mskrause hat geschrieben:
15.09.2019, 11:42
moellerherm hat geschrieben:
15.09.2019, 11:04
Hi,
klasse Script....läuft ohne Probleme..
da mittlerweile mehrere Scripte in diesem Thread angeboten werden, wäre wichtig zu wissen, welches du benutzt, denn in einigen ist der Fehler schon behoben...
ansonsten:
mskrause hat geschrieben:
23.08.2019, 17:47
hypnorex hat geschrieben:
23.08.2019, 16:52
Das Skript an sich funktioniert wunderbar.

Ich verstehe das mit dem +DST nur nicht. Das funktioniert bei mir nicht, wenn ich das eintrage.
Senftopf hat es weiter vorn schon beschrieben:

diesen String suchen (gibt es 3x)

Code: Alles auswählen

genTime1 = genString1.ToTime();
und zwischen () und ; jeweils +DST eintragen, ohne Leerzeichen, macht:

Code: Alles auswählen

genTime1 = genString1.ToTime()+DST;
so hats bei mir funktioniert

Ich hänge mal mein tadellos laufendes Script mit an, einzig die persönliche API muss eingesetzt werden, die City-ID nutze ich nicht, da ich meine Standortdaten in der CCU eingetragen habe, die Einstellungen des CUX2801800-Gerätes muss man ebenso anpassen, bei mir auf Kanal 16, Standard ist 1
Ich habe bei mir die Klammern und Punkte aus den variablennamen genommen. CHxD Highcharts mochte das nicht.

Code: Alles auswählen

!Systemvariablenbenennung
string svAktualisierung='OW Letzte Aktualisierung';
string svTemperatur='OW Temperatur';
string svMinimalTemperatur='OW Temperatur min';
string svMaximalTemperatur='OW Temperatur max';
string svLuftfeuchtigkeit='OW Luftfeuchte rel';
string svLuftdruck='OW Luftdruck';
string svWindGeschwindigkeit='OW Windgeschwindigkeit';
string svWindRichtung='OW Windrichtung';
string svWindRichtungInt='OW WindrichtungInt';
string svWetterstation='OW Wetterstation';
string svSonnenaufgang='OW Sonnenaufgang';
string svSonnenuntergang='OW Sonnenuntergang';
string svWetter='OW Wetter';
string svNiederschlag='OW Niederschlag';
string svNiederschlagsart='OW Niederschlagsart';
string svWolken='OW Bewölkung';
Das CUxD Exec Device hatte bei mir eine ganz andere ID, das hatte mich etwas verwirrt, aber jetzt läuft es.

Code: Alles auswählen

string cuxCMDName='CUxD.CUX2801001:1';
chart (1).png


In PocketControl bin ich auch einen kleinen Schritt weiter. In den Optionen kann man eine individuelle Wetterstation angeben.
Hierzu braucht man nur die Variablen/Geräte zuweisen.
pc4.png
Für die Windrichtung brucht man den Integer Wert, also die Variable string svWindRichtungInt='OW WindrichtungInt'; aus dem Skript.
pc1.png
pc2.png
pc3.png
Allerdings könnte ich hier noch etwas Hilfe gebrauchen. Für Regen will der wohl den Regensensor, kann man den irgendwie faken mit den OW Daten?
Helligkeit werde ich vom Bewegungsmelder abgreifen.
Regen heute/gestern, Sonnenschein heute/gestern, hier habe ich noch keine Idee.

Gruß
Sven

moellerherm
Beiträge: 3
Registriert: 15.09.2019, 11:01

Re: HM-Script für virtuelle Wetterstation

Beitrag von moellerherm » 07.10.2019, 14:03

Kurze Frage: Habe bei PocketControl auch versucht über individuelle Wetterstation die Openweather Werte einzubinden. Leider zeigt er nicht alle im System verfügbaren Variablen an, sondern nur eine Auswahl.... Hat einer eine Idee, woran das liegen könnte?
VG
Chris

Spencer
Beiträge: 42
Registriert: 08.06.2014, 13:42
Hat sich bedankt: 13 Mal
Danksagung erhalten: 1 Mal

Re: HM-Script für virtuelle Wetterstation

Beitrag von Spencer » 07.10.2019, 14:29

moellerherm hat geschrieben:
07.10.2019, 14:03
Kurze Frage: Habe bei PocketControl auch versucht über individuelle Wetterstation die Openweather Werte einzubinden. Leider zeigt er nicht alle im System verfügbaren Variablen an, sondern nur eine Auswahl.... Hat einer eine Idee, woran das liegen könnte?
VG
Chris
Ja, die Variablen müssen den richtigen Typ haben. Regen ist boolean, Regen heute ist der integer Wert.

Gruß
Sven

moellerherm
Beiträge: 3
Registriert: 15.09.2019, 11:01

Re: HM-Script für virtuelle Wetterstation

Beitrag von moellerherm » 07.10.2019, 14:37

Vielleicht dumme Frage....wo kann ich das definieren? Innerhalb der Oberflache von HomeMatic-Forum finde ich keine Möglichkeit....
Danke und Gruss
Chris

Tapdance
Beiträge: 11
Registriert: 26.09.2019, 16:58
Hat sich bedankt: 1 Mal

Re: HM-Script für virtuelle Wetterstation

Beitrag von Tapdance » 09.10.2019, 00:29

Super geniales Script.

Mich würde interesieren ob man auf diesem wege auch die Niederschlagsmenge erfahren kann. Das wäre für meine geplannte Gartenbewässerung perfekt

DANKE für das tolle Script.

PaulM
Beiträge: 114
Registriert: 16.02.2015, 17:05
Hat sich bedankt: 20 Mal
Danksagung erhalten: 3 Mal

Re: HM-Script für virtuelle Wetterstation

Beitrag von PaulM » 22.10.2019, 18:46

Niederschlag / Regen / Schnee

nach meinen Beobachtungen wird beim Niederschlag die Menge der letzten 60 Minuten (1h) angezeigt. Wenn man also mehrmals pro Stunde abfragt (oder seltener als stündlich) erhält man falsche Werte.
Ich nehme eine zusätzliche Variable für Tageswerte, sinngemäß wie Baxxy beschrieben hat und starte alle 60 Minuten ein Programm, das den bereits erfassten Niederschlagswert liest und über den Tag kumuliert. Nach Mitternacht übertrage ich den Wert auf eine SV "Regen Vortag" und setze den Tageswert auf 0 zurück.

Gruß
Paul
Mit Mut und Entschlossenheit gegen Intoleranz

Dr.Wolle
Beiträge: 15
Registriert: 04.03.2017, 17:34
Danksagung erhalten: 1 Mal

Re: HM-Script für virtuelle Wetterstation

Beitrag von Dr.Wolle » 02.11.2019, 21:06

Hi Paul,
das hört sich logisch an, hast Du das Skript schon getestet? Kannst Du das hier mal posten?
Beste Grüße
Dirk
Edit:
Auf der Homepage von https://openweathermap.org/stations habe ich das gefunden...

rain_24h | mm | Rainfall for the last days

Muss ich nur noch in das Script bekommen ...

Blau-Mann
Beiträge: 3
Registriert: 09.11.2016, 19:27

Re: HM-Script für virtuelle Wetterstation

Beitrag von Blau-Mann » 01.12.2019, 14:29

Ich habe dein Script verwendet und die API auf meine eigene geändert. Leider werden keine Systemvariablen erstellt. Woran könnte dies liegen?
mskrause hat geschrieben:
15.09.2019, 11:42
moellerherm hat geschrieben:
15.09.2019, 11:04
Hi,
klasse Script....läuft ohne Probleme..
da mittlerweile mehrere Scripte in diesem Thread angeboten werden, wäre wichtig zu wissen, welches du benutzt, denn in einigen ist der Fehler schon behoben...
ansonsten:
mskrause hat geschrieben:
23.08.2019, 17:47
hypnorex hat geschrieben:
23.08.2019, 16:52
Das Skript an sich funktioniert wunderbar.

Ich verstehe das mit dem +DST nur nicht. Das funktioniert bei mir nicht, wenn ich das eintrage.
Senftopf hat es weiter vorn schon beschrieben:

diesen String suchen (gibt es 3x)

Code: Alles auswählen

genTime1 = genString1.ToTime();
und zwischen () und ; jeweils +DST eintragen, ohne Leerzeichen, macht:

Code: Alles auswählen

genTime1 = genString1.ToTime()+DST;
so hats bei mir funktioniert

Ich hänge mal mein tadellos laufendes Script mit an, einzig die persönliche API muss eingesetzt werden, die City-ID nutze ich nicht, da ich meine Standortdaten in der CCU eingetragen habe, die Einstellungen des CUX2801800-Gerätes muss man ebenso anpassen, bei mir auf Kanal 16, Standard ist 1

Fremo
Beiträge: 5
Registriert: 09.12.2019, 20:37
Hat sich bedankt: 1 Mal

Re: HM-Script für virtuelle Wetterstation

Beitrag von Fremo » 09.12.2019, 21:06

Hallo zusammen,

erstmal danke für das Script. Nur leider habe ich da meine Probleme was das umsetzen des Scriptes betrift.
Ich bin neu was das Thema Homematic und Script betrift und bitte deswegen um Nachsicht. :D
Folgendes Problem habe ich.
Ich habe die Anleitung genau verfolgt und alles genau so umgesetzt. (API und Cityid eingetragen und über CUxD die Wetterstation "erzeugt")
Wenn dann alles soweit vorbereitet ist und ich das Script starte wird nur dieser offensichtlich falscher wert wiedergegeben:
Wetterstation.PNG
Wetterstation.PNG (10.92 KiB) 326 mal betrachtet
Folgendes Script verwende ich:

Code: Alles auswählen

!OpenWeather-CCU-Script, Version 1, 15.02.2017, dimmyprp

!Hier den API-Key von OpenWeather eintragen bzw. den vorhanden Key austauschen.
!Dieser Key wird benötigt, um die Wetterdaten abrufen zu können. 
!Der hier bereits hinterlegte Key funktioniert zwar, es können jedoch nur zeitlich begrenzt Wetterdaten abgerufen werden.
!Erstellung eines eigenen Keys unter http://openweathermap.org/appid

string owAppid='819ab0af709eaa50967ce3e26f1xxxx';


!Hier die ID der Wetterstation bzw. Stadt eitragen bzw. austauschen, von der die Wetterdaten abgerufen werden sollen.
!Eine Liste aller Stationen finden Sie unter http://bulk.openweathermap.org/sample/city.list.json.gz
!Die aktuell hinterlegte Station bzw. ID 6556765 gibt das Wetter für Berlin aus.
!Wenn Sie keine ID angeben UND in Ihrer Homematic unter "Einstellungen" > "Zeit-/Positionseinstellungen" unter dem Punkt "Positionsangabe"
!Ihre Koordinaten hinterlegt haben, können Sie von OpenWeather auch eine Wetterstation in Ihrer Nähe suchen lassen und deren Werte abrufen.
!Beispiele
!string owCityid='2950159';		Ruft die Wetterdaten für Berlin ab
!string owCityid='6556765';		Ruft die Wetterdaten für Pegnitz ab
!string owCityid='';			Ruft die Wetterdaten in Ihrer Nähe ab (wenn Positionsangaben in den Einstellungen hinterlegt wurden)
!string owCityid=false;			Ruft die Wetterdaten in Ihrer Nähe ab (wenn Positionsangaben in den Einstellungen hinterlegt wurden)

string owCityid='29270xx';


!Optional: Im Folgenden die Namen der Systemvariablen ändern/vorgeben.
!Die abgerufenen Wetterdaten werden in mehreren Systemvariablen gespeichert und angezeigt (sie müssen vorab keine Variablen anlegen. Dies erledigt diese Script gegebenenfalls automatisch).
!Im Folgenden können Sie die Namen der Systemvariablen (so, wie Sie Ihnen in Ihrer Homematic später unter "Status und Bedienung" > "Systemvariable" angezeigt
!werden, ändern. Möchten Sie, dass ein bestimmter Messwert nicht angezeigt bzw. abgerufen wird, lassen Sie den Namen leer ''.
!Beispiele
!string svLuftdruck='ow Luftdruck';		Die Systemvariable für den Luftdruck soll "ow Lufdruck" heißen
!string svLuftdruck='Luftdr.';			Die Systemvariable für den Luftdruck soll "Luftdr." heißen
!string svLuftdruck='';					Es soll überhaupt kein Luftdruck angezeigt bzw. abgerufen werden
!string svLuftdruck=false;				Es soll überhaupt kein Luftdruck angezeigt bzw. abgerufen werden

string svAktualisierung='ow Letzte Aktualisierung';
string svTemperatur='ow Temperatur';
string svMinimalTemperatur='ow Temperatur (min.)';
string svMaximalTemperatur='ow Temperatur (max.)';
string svLuftfeuchtigkeit='ow Luftfeuchte (rel.)';
string svLuftdruck='ow Luftdruck';
string svWindGeschwindigkeit='ow Windgeschwindigkeit';
string svWindRichtung='ow Windrichtung';
string svWetterstation='ow Wetterstation';
string svSonnenaufgang='ow Sonnenaufgang';
string svSonnenuntergang='ow Sonnenuntergang';


!Optionale Experteneinstellungen: OpenWeather-Daten per CUxD abrufen
!Falls Sie in Ihrer Homematic die Software CUX-Daemon installiert haben, setzt dieses Script den wget-Command standardmäßig per
!CUxD "System-Devices" (28) bzw. Device CUxD.CUX2801001:1 ab. Hier gegebenenfalls den Namen des Devices nach dem Schema "CUxD.<Seriennummer>:1" ändern.
!Falls Sie nicht möchten, dass der wget-Gommand per CUxD sondern per system.Exec erfolgt, setzen Sie diese Variable auf false (string cuxCMDName=false;)

string cuxCMDName='CUxD.CUX2801001:1';


!Optionale Experteneinstellungen: OpenWeather-Daten bzw. Systemvariblen per CUxD Logit aufzeichnen
!Falls der CUX-Daemon installiert ist, werden die Messdaten der o.g. Systemvariablen dieses Scripts standardmäßig zusätzlich per CUxD LOGIT aufgezeichnet
!Falls Sie keine Aufzeichnng der Messdaten wünschen, ändern Sie diese Variable auf false (string cuxCMDName=false;)

boolean useLOGIT=true;


!Optionale Experteneinstellungen: OpenWeather-Daten in CUxD Thermostat-Device schreiben
!Falls der CUX-Daemon installiert ist und Sie ein "Universal Wrapper Device" (90) mit der Funktion "Thermostat" angelgt haben, kann dieses Script einige
!der abgerufenen Messwerte direkt in das Device schreiben (das ist der eigentliche Sinn dieses Scripts).
!Wichtig: Damit dies funktioniert, muss in den Einstellungen des Devices, im Kanal 1 die Option "WEATHER|USE_HMDATAPT" deaktiviert sein (nicht angehakt).
!Hier gegebenenfalls den Namen des Devices nach dem Schema "CUxD.<Seriennummer>:1" ändern.
!Falls Sie nicht möchten, dass Messwerte in das Device geschrieben werden, setzen Sie diese Variable auf false (string cuxWDSName=false;)

string cuxWDSName='CUxD.CUX9002001:1';





!************************************************************
!************************************************************
!BEGIN DES SCRIPTS
!************************************************************
!************************************************************

!Variablendeklaration
!***********************
!OpenWeather-Url mit Defaultwerte
string owLocation='&id=2950159';
string owUrl='http://api.openweathermap.org/data/2.5/weather?mode=xml&units=metric';
!CUxD/Exec und Rückgabe-Variablen (Programmablauf) mit Defaultwerte
boolean cuxCMD=false; boolean cuxWDS=false;string recXML;
!XML-Parser (Tagnamen)
string xmlStartTagName_Aktualisierung;string xmlEndTagName_Aktualisierung;
string xmlStartTagName_Temperatur;string xmlEndTagName_Temperatur;
string xmlStartTagName_Luftfeuchtigkeit;string xmlEndTagName_Luftfeuchtigkeit;
string xmlStartTagName_Luftdruck;string xmlEndTagName_Luftdruck;
string xmlStartTagName_Wind;string xmlEndTagName_Wind;
string xmlStartTagName_Geschwindigkeit;string xmlEndTagName_Geschwindigkeit;
string xmlStartTagName_Windrichtung;string xmlEndTagName_Windrichtung;
string xmlStartTagName_Stadt;string xmlEndTagName_Stadt;
string xmlStartTagName_Sonnenzeit;string xmlEndTagName_Sonnenzeit;
!XML-Parser (Programmablauf)
integer xmlStartTagLenght;
integer xmlTagStart;integer xmlTagLength;
integer xmlAttributeStart;integer xmlAttributeLength;
string xmlTagContent;
string xmlAttributeValue;
!Zurückgemeldete und aus der XML extrahierte Werte von OpenWeather
real owTemperatur;real owMinimalTemperatur;real owMaximalTemperatur;
real owLuftfeuchtigkeit;
real owLuftdruck;
real owWindGeschwindigkeit;real owGradzahl;string owWindRichtung;
string owWetterstation;
string owAktualisierung;
string owSonnenaufgang;string owSonnenuntergang;
!Objekte für Systemvariablen (Programmablauf)
object svObject;
object svObjectlist;
!Objekte für Devices (Programmablauf)
string dvObjectID;
object dvObject;
object dvObjectlist;
!Generische Variablen (Mehrfachverwendung)
string genString1;string genString2;string genString3;
time genTime1;
integer genInteger1;integer genInteger2;
real genReal1;

!Url zum Abruf des XML-Strings zusammen sezten
!****************************************************
if(owCityid){
	owLocation='&id='#owCityid;
} else {
	if(system.Longitude()&&system.Latitude())
	{
		owLocation='&lat='#system.Latitude()#'&lon='#system.Longitude();
	}
}
owUrl = owUrl#'&APPID='#owAppid#owLocation;

!Prüfen, ob CUX-Daemon Devices vorhanden sind
!***************************************************
if(dom.GetObject(cuxCMDName#'.CMD_SETS')){cuxCMD = true;}
if(dom.GetObject(cuxWDSName#'.SET_TEMPERATURE')){cuxWDS=true;}

!wget ausführen
!*****************
if(cuxCMD)
{
	!Website via CUxD und wget aufrufen.
	dom.GetObject(cuxCMDName#'.CMD_SETS').State("wget -q -O - '"#owUrl#"'");
	dom.GetObject(cuxCMDName#'.CMD_QUERY_RET').State(1);
	recXML = dom.GetObject(cuxCMDName#'.CMD_RETS').State();
} else {
	!Fallback: Website via system.Exec und wget aufrufen
	system.Exec("wget -q -O - '"#owUrl#"'", &recXML, &genString1); 
}

!Pruefen, ob XML-String geholt wurde, ansonsten abbrechen
!****************************************************************
if(!recXML){quit;}






!Tag-Namen-Suche im geholten XML-String vorbereiten
!*********************************************************
!Je nachdem, ob die Daten via CUxD oder Exex bezogen wurden, haben die XML-Tags ein anderes Format.
!Exex liefert einen XML-String mit eckigen Klammern nach dem Schema <tag></tag> oder <tag/>
!CUxD enternt eckige Klammern und liefert eine String nach dem Schema "tag /tag"
if(cuxCMD)
{
  !Suchstrings für XML-Tags von CUxD festlegen
  xmlStartTagName_Aktualisierung = 'lastupdate ';
  xmlEndTagName_Aktualisierung = '  /lastupdate';
  xmlStartTagName_Temperatur = 'temperature ';
  xmlEndTagName_Temperatur = '  /temperature';
  xmlStartTagName_Luftfeuchtigkeit = 'humidity ';
  xmlEndTagName_Luftfeuchtigkeit = '  /humidity';
  xmlStartTagName_Luftdruck = 'pressure ';
  xmlEndTagName_Luftdruck = '  /pressure';
  xmlStartTagName_Wind = 'wind ';
  xmlEndTagName_Wind = '  /wind';
	xmlStartTagName_Geschwindigkeit = 'speed ';
	xmlEndTagName_Geschwindigkeit = '  /speed';
	xmlStartTagName_Windrichtung = 'direction ';
	xmlEndTagName_Windrichtung = '  /direction';
  xmlStartTagName_Stadt = 'city ';
  xmlEndTagName_Stadt = '  /city';
	xmlStartTagName_Sonnenzeit = 'sun ';
	xmlEndTagName_Sonnenzeit = '  /sun';
} else {
  !Suchstrings für XML-Tags von Exec festlegen
  xmlStartTagName_Aktualisierung = '<lastupdate ';
  xmlEndTagName_Aktualisierung = '>';
  xmlStartTagName_Temperatur = '<humidity ';
  xmlEndTagName_Temperatur = '>';
  xmlStartTagName_Luftfeuchtigkeit = '<humidity ';
  xmlEndTagName_Luftfeuchtigkeit = '>';
  xmlStartTagName_Luftdruck = '<pressure ';
  xmlEndTagName_Luftdruck = '>';
  xmlStartTagName_Wind = '<wind ';
  xmlEndTagName_Wind = '>';
	xmlStartTagName_Geschwindigkeit = '<speed ';
	xmlEndTagName_Geschwindigkeit = '>';
	xmlStartTagName_Windrichtung = '<direction ';
	xmlEndTagName_Windrichtung = '>';
  xmlStartTagName_Stadt = '<city ';
  xmlEndTagName_Stadt = '>';
	xmlStartTagName_Sonnezeit = '<sun ';
	xmlEndTagName_Sonnenzeit = '>';
}

!Geholten XML-String parsen
!******************************

!Parser für svAktualisierung
if(svAktualisierung)
{
	xmlStartTagLenght=0;xmlTagStart=0;xmlTagLength=0;xmlTagContent='';
	xmlStartTagLenght = xmlStartTagName_Aktualisierung.Length();
	xmlTagStart = recXML.Find(xmlStartTagName_Aktualisierung);
	if (xmlTagStart>=0) 
	{
		xmlTagContent = recXML.Substr(xmlTagStart+xmlStartTagLenght); 
		xmlTagLength = xmlTagContent.Find(xmlEndTagName_Aktualisierung);
		if(xmlTagLength>0)
		{
			xmlTagContent = xmlTagContent.Substr(0,xmlTagLength);
		
			!Datenabruf-Attribut auslesen
			xmlAttributeStart=0;xmlAttributeLength=0;xmlAttributeValue='';
			xmlAttributeStart=xmlTagContent.Find('value="');
			if (xmlAttributeStart>=0) 
			{
				xmlAttributeValue = xmlTagContent.Substr(xmlAttributeStart+7);
				xmlAttributeLength = xmlAttributeValue.Find('"');
				xmlAttributeValue = xmlAttributeValue.Substr(0,xmlAttributeLength);
				owAktualisierung = xmlAttributeValue.ToString();
			}
		}
	}
}



!Parser für svTemperatur, svMinimalTemperatur, svMaximalTemperatur
if(svTemperatur)
{
	xmlStartTagLenght=0;xmlTagStart=0;xmlTagLength=0;xmlTagContent='';
	xmlStartTagLenght = xmlStartTagName_Temperatur.Length();
	xmlTagStart = recXML.Find(xmlStartTagName_Temperatur);
	if (xmlTagStart>=0) 
	{
		xmlTagContent = recXML.Substr(xmlTagStart+xmlStartTagLenght); 
		xmlTagLength = xmlTagContent.Find(xmlEndTagName_Temperatur);
		if(xmlTagLength>0)
		{
			xmlTagContent = xmlTagContent.Substr(0,xmlTagLength);
		
			!Temperatur-Attribut auslesen
			xmlAttributeStart=0;xmlAttributeLength=0;xmlAttributeValue='';
			xmlAttributeStart=xmlTagContent.Find('value="');
			if (xmlAttributeStart>=0) 
			{
				xmlAttributeValue = xmlTagContent.Substr(xmlAttributeStart+7);
				xmlAttributeLength = xmlAttributeValue.Find('"');
				xmlAttributeValue = xmlAttributeValue.Substr(0,xmlAttributeLength);
				owTemperatur = xmlAttributeValue.ToFloat();
			}	
		
			!MinimalTemperatur-Attribut auslesen
			xmlAttributeStart=0;xmlAttributeLength=0;xmlAttributeValue='';
			xmlAttributeStart=xmlTagContent.Find('min="');
			if (xmlAttributeStart>=0) 
			{
				xmlAttributeValue = xmlTagContent.Substr(xmlAttributeStart+5);
				xmlAttributeLength = xmlAttributeValue.Find('"');
				xmlAttributeValue = xmlAttributeValue.Substr(0,xmlAttributeLength);
				owMinimalTemperatur = xmlAttributeValue.ToFloat();
			}	
		
			!MaximalTemperatur-Attribut auslesen
			xmlAttributeStart=0;xmlAttributeLength=0;xmlAttributeValue='';
			xmlAttributeStart=xmlTagContent.Find('max="');
			if (xmlAttributeStart>=0) 
			{
				xmlAttributeValue = xmlTagContent.Substr(xmlAttributeStart+5);
				xmlAttributeLength = xmlAttributeValue.Find('"');
				xmlAttributeValue = xmlAttributeValue.Substr(0,xmlAttributeLength);
				owMaximalTemperatur = xmlAttributeValue.ToFloat();
			}
		
		}
	}
}



!Parser für svLuftfeuchtigkeit
if(svLuftfeuchtigkeit)
{
	xmlStartTagLenght=0;xmlTagStart=0;xmlTagLength=0;xmlTagContent='';
	xmlStartTagLenght = xmlStartTagName_Luftfeuchtigkeit.Length();
	xmlTagStart = recXML.Find(xmlStartTagName_Luftfeuchtigkeit);
	if (xmlTagStart>=0) 
	{
		xmlTagContent = recXML.Substr(xmlTagStart+xmlStartTagLenght); 
		xmlTagLength = xmlTagContent.Find(xmlEndTagName_Luftfeuchtigkeit);
		if(xmlTagLength>0)
		{
			xmlTagContent = xmlTagContent.Substr(0,xmlTagLength);
		
			!Luftfeuchtigkeits-Attribut auslesen
			xmlAttributeStart=0;xmlAttributeLength=0;xmlAttributeValue='';
			xmlAttributeStart=xmlTagContent.Find('value="');
			if (xmlAttributeStart>=0) 
			{
				xmlAttributeValue = xmlTagContent.Substr(xmlAttributeStart+7);
				xmlAttributeLength = xmlAttributeValue.Find('"');
				xmlAttributeValue = xmlAttributeValue.Substr(0,xmlAttributeLength);
				owLuftfeuchtigkeit = xmlAttributeValue.ToFloat();
			}	
	
		}
	}
}


!Parser für svLuftdruck
if(svLuftdruck)
{
	xmlStartTagLenght=0;xmlTagStart=0;xmlTagLength=0;xmlTagContent='';
	xmlStartTagLenght = xmlStartTagName_Luftdruck.Length();
	xmlTagStart = recXML.Find(xmlStartTagName_Luftdruck);
	if (xmlTagStart>=0) 
	{
		xmlTagContent = recXML.Substr(xmlTagStart+xmlStartTagLenght); 
		xmlTagLength = xmlTagContent.Find(xmlEndTagName_Luftdruck);
		if(xmlTagLength>0)
		{
			xmlTagContent = xmlTagContent.Substr(0,xmlTagLength);
		
			!Luftdruck-Attribut auslesen
			xmlAttributeStart=0;xmlAttributeLength=0;xmlAttributeValue='';
			xmlAttributeStart=xmlTagContent.Find('value="');
			if (xmlAttributeStart>=0) 
			{
				xmlAttributeValue = xmlTagContent.Substr(xmlAttributeStart+7);
				xmlAttributeLength = xmlAttributeValue.Find('"');
				xmlAttributeValue = xmlAttributeValue.Substr(0,xmlAttributeLength);
				owLuftdruck = xmlAttributeValue.ToFloat();
			}	
	
		}
	}
}


!Parser für owWindGeschwindigkeit
if(svWindGeschwindigkeit)
{
	xmlStartTagLenght=0;xmlTagStart=0;xmlTagLength=0;xmlTagContent='';
	xmlStartTagLenght = xmlStartTagName_Wind.Length();
	xmlTagStart = recXML.Find(xmlStartTagName_Wind);
	if (xmlTagStart>=0) 
	{
		xmlTagContent = recXML.Substr(xmlTagStart+xmlStartTagLenght); 
		xmlTagLength = xmlTagContent.Find(xmlEndTagName_Wind);
		if(xmlTagLength>0)
		{
			xmlTagContent = xmlTagContent.Substr(0,xmlTagLength);
			
			!Sub-Parser Geschwindigkeit
			xmlStartTagLenght=0;xmlTagStart=0;xmlTagLength=0;
			xmlStartTagLenght = xmlStartTagName_Geschwindigkeit.Length();
			xmlTagStart = xmlTagContent.Find(xmlStartTagName_Geschwindigkeit);
			if (xmlTagStart>=0) 
			{
				xmlTagContent = xmlTagContent.Substr(xmlTagStart+xmlStartTagLenght); 
				xmlTagLength = xmlTagContent.Find(xmlEndTagName_Geschwindigkeit);
				if(xmlTagLength>0)
				{
					xmlTagContent = xmlTagContent.Substr(0,xmlTagLength);
		
					!Geschwindigkeit-Attribut auslesen
					xmlAttributeStart=0;xmlAttributeLength=0;xmlAttributeValue='';
					xmlAttributeStart=xmlTagContent.Find('value="');
					if (xmlAttributeStart>=0) 
					{
						xmlAttributeValue = xmlTagContent.Substr(xmlAttributeStart+7);
						xmlAttributeLength = xmlAttributeValue.Find('"');
						xmlAttributeValue = xmlAttributeValue.Substr(0,xmlAttributeLength);
						owWindGeschwindigkeit = xmlAttributeValue.ToFloat();
					}	
	
				}
			}
			
		}
	}
}



!Parser für owGradzahl, owWindRichtung
if(svWindRichtung)
{
	xmlStartTagLenght=0;xmlTagStart=0;xmlTagLength=0;xmlTagContent='';
	xmlStartTagLenght = xmlStartTagName_Wind.Length();
	xmlTagStart = recXML.Find(xmlStartTagName_Wind);
	if (xmlTagStart>=0) 
	{
		xmlTagContent = recXML.Substr(xmlTagStart+xmlStartTagLenght); 
		xmlTagLength = xmlTagContent.Find(xmlEndTagName_Wind);
		if(xmlTagLength>0)
		{
			xmlTagContent = xmlTagContent.Substr(0,xmlTagLength);
			
			!Sub-Parser Windrichtng
			xmlStartTagLenght=0;xmlTagStart=0;xmlTagLength=0;
			xmlStartTagLenght = xmlStartTagName_Windrichtung.Length();
			xmlTagStart = xmlTagContent.Find(xmlStartTagName_Windrichtung);
			if (xmlTagStart>=0) 
			{
				xmlTagContent = xmlTagContent.Substr(xmlTagStart+xmlStartTagLenght); 
				xmlTagLength = xmlTagContent.Find(xmlEndTagName_Windrichtung);
				if(xmlTagLength>0)
				{
					xmlTagContent = xmlTagContent.Substr(0,xmlTagLength);
		
					!Gradzahl-Attribut auslesen
					xmlAttributeStart=0;xmlAttributeLength=0;xmlAttributeValue='';
					xmlAttributeStart=xmlTagContent.Find('value="');
					if (xmlAttributeStart>=0) 
					{
						xmlAttributeValue = xmlTagContent.Substr(xmlAttributeStart+7);
						xmlAttributeLength = xmlAttributeValue.Find('"');
						xmlAttributeValue = xmlAttributeValue.Substr(0,xmlAttributeLength);
						owGradzahl = xmlAttributeValue.ToInteger();
					}	
					
					!Himmelsrichtung-Attribut auslesen
					xmlAttributeStart=0;xmlAttributeLength=0;xmlAttributeValue='';
					xmlAttributeStart=xmlTagContent.Find('code="');
					if (xmlAttributeStart>=0) 
					{
						xmlAttributeValue = xmlTagContent.Substr(xmlAttributeStart+6);
						xmlAttributeLength = xmlAttributeValue.Find('"');
						xmlAttributeValue = xmlAttributeValue.Substr(0,xmlAttributeLength);
						owWindRichtung = xmlAttributeValue.ToString();
					}	
	
				}
			}
		}
	}
}



!Parser für owWetterstation
if(svWetterstation)
{
	xmlStartTagLenght=0;xmlTagStart=0;xmlTagLength=0;xmlTagContent='';
	xmlStartTagLenght = xmlStartTagName_Stadt.Length();
	xmlTagStart = recXML.Find(xmlStartTagName_Stadt);
	if (xmlTagStart>=0) 
	{
		xmlTagContent = recXML.Substr(xmlTagStart+xmlStartTagLenght); 
		xmlTagLength = xmlTagContent.Find(xmlEndTagName_Stadt);
		if(xmlTagLength>0)
		{
			xmlTagContent = xmlTagContent.Substr(0,xmlTagLength);
			
			!Stadtname-Attribut auslesen
			xmlAttributeStart=0;xmlAttributeLength=0;xmlAttributeValue='';
			xmlAttributeStart=xmlTagContent.Find('name="');
			if (xmlAttributeStart>=0) 
			{
				xmlAttributeValue = xmlTagContent.Substr(xmlAttributeStart+6);
				xmlAttributeLength = xmlAttributeValue.Find('"');
				xmlAttributeValue = xmlAttributeValue.Substr(0,xmlAttributeLength);
				owWetterstation = xmlAttributeValue.ToString();
			}	
			
			!Sub-Parser Sonnezeit
			xmlStartTagLenght=0;xmlTagStart=0;xmlTagLength=0;
			xmlStartTagLenght = xmlStartTagName_Sonnenzeit.Length();
			xmlTagStart = xmlTagContent.Find(xmlStartTagName_Sonnenzeit);
			if (xmlTagStart>=0) 
			{
				xmlTagContent = xmlTagContent.Substr(xmlTagStart+xmlStartTagLenght); 
				xmlTagLength = xmlTagContent.Find(xmlEndTagName_Sonnenzeit);
				if(xmlTagLength>0)
				{
					xmlTagContent = xmlTagContent.Substr(0,xmlTagLength);
		
					!Sonnenaufgang-Attribut auslesen
					xmlAttributeStart=0;xmlAttributeLength=0;xmlAttributeValue='';
					xmlAttributeStart=xmlTagContent.Find('rise="');
					if (xmlAttributeStart>=0) 
					{
						xmlAttributeValue = xmlTagContent.Substr(xmlAttributeStart+6);
						xmlAttributeLength = xmlAttributeValue.Find('"');
						xmlAttributeValue = xmlAttributeValue.Substr(0,xmlAttributeLength);
						owSonnenaufgang = xmlAttributeValue.ToString();
					}	
					
					!Sonnenuntergang-Attribut auslesen
					xmlAttributeStart=0;xmlAttributeLength=0;xmlAttributeValue='';
					xmlAttributeStart=xmlTagContent.Find('set="');
					if (xmlAttributeStart>=0) 
					{
						xmlAttributeValue = xmlTagContent.Substr(xmlAttributeStart+5);
						xmlAttributeLength = xmlAttributeValue.Find('"');
						xmlAttributeValue = xmlAttributeValue.Substr(0,xmlAttributeLength);
						owSonnenuntergang = xmlAttributeValue.ToString();
					}	
	
				}
			}
		}
	}
}






!Ermittelte Werte in Systemvariable schreiben
!**************************************************
!Wenn (noch) keine Systemvariable(n) vorhanden, diese anlegen.
!Code zum anlegen von Variablen abgeleitet von Esche's IT-Blog https://www.blogging-it.com/code-snippet-homematic-systemvariablen-ueber-ein-script-automatisch-erzeugen/programmierung/homematic-script.html

!Schreiben von svAktualisierung
if(svAktualisierung)
{
	!String bzw. Uhrzeit umformatieren
	genString1='';genTime1=null;genString2='';
	genString1 = owAktualisierung.Substr(0,10)#' '#owAktualisierung.Substr(11);
	genTime1 = genString1.ToTime();
	genString2 = genTime1.Format("%d.%m.%Y %H:%M"#" Uhr");
	svObject = dom.GetObject(svAktualisierung);
	!Wenn noch keine Systemvarible vorhanden, diese anlegen
	if (!svObject)
	{   
	    svObjectlist = dom.GetObject(ID_SYSTEM_VARIABLES);
	    svObject = dom.CreateObject(OT_VARDP);
	    svObjectlist.Add(svObject.ID());
	    svObject.Name(svAktualisierung);   
	    svObject.ValueType(ivtString);
	    svObject.ValueSubType(istChar8859);
	    svObject.DPInfo('OpenWeatherMap - Aktualisierung');
	    svObject.ValueUnit('');
	    svObject.State(genString2);
	    svObject.Internal(false);
	    svObject.Visible(true);
	    dom.RTUpdate(true);
	} else {
		svObject.State(genString2);
	}
	!Wenn CUxD-CMD-Device vorhanden und useLOGIT, dann Werte via CUxD loggen
	if((cuxCMD)&&(useLOGIT)){dom.GetObject(cuxCMDName#'.LOGIT').State(svAktualisierung#';'#genTime1);}
}



!Schreiben von svSonnenaufgang
if(svSonnenaufgang)
{
	genString1='';genTime1=null;genString2='';
	genString1 = owSonnenaufgang.Substr(0,10)#' '#owSonnenaufgang.Substr(11);
	genTime1 = genString1.ToTime();
	genString2 = genTime1.Format("%d.%m.%Y %H:%M"#" Uhr");
	svObject = dom.GetObject(svSonnenaufgang);
	if (!svObject)
	{   
	    svObjectlist = dom.GetObject(ID_SYSTEM_VARIABLES);
	    svObject = dom.CreateObject(OT_VARDP);
	    svObjectlist.Add(svObject.ID());
	    svObject.Name(svSonnenaufgang);   
	    svObject.ValueType(ivtString);
	    svObject.ValueSubType(istChar8859);
	    svObject.DPInfo('OpenWeatherMap - Sonnenaufgang');
	    svObject.ValueUnit('');
	    svObject.State(genString2);
	    svObject.Internal(false);
	    svObject.Visible(true);
	    dom.RTUpdate(true);
	} else {
		svObject.State(genString2);
	}
	if((cuxCMD)&&(useLOGIT)){dom.GetObject(cuxCMDName#'.LOGIT').State(svSonnenaufgang#';'#genTime1);}
}



!Schreiben von svSonnenuntergang
if(svSonnenuntergang)
{
	genString1='';genTime1=null;genString2='';
	genString1 = owSonnenuntergang.Substr(0,10)#' '#owSonnenuntergang.Substr(11);
	genTime1 = genString1.ToTime();
	genString2 = genTime1.Format("%d.%m.%Y %H:%M"#" Uhr");
	svObject = dom.GetObject(svSonnenuntergang);
	if (!svObject)
	{   
	    svObjectlist = dom.GetObject(ID_SYSTEM_VARIABLES);
	    svObject = dom.CreateObject(OT_VARDP);
	    svObjectlist.Add(svObject.ID());
	    svObject.Name(svSonnenuntergang);   
	    svObject.ValueType(ivtString);
	    svObject.ValueSubType(istChar8859);
	    svObject.DPInfo('OpenWeatherMap - Sonnenuntergang');
	    svObject.ValueUnit('');
	    svObject.State(genString2);
	    svObject.Internal(false);
	    svObject.Visible(true);
	    dom.RTUpdate(true);
	} else {
		svObject.State(genString2);
	}
	if((cuxCMD)&&(useLOGIT)){dom.GetObject(cuxCMDName#'.LOGIT').State(svSonnenuntergang#';'#genTime1);}
}



!Schreiben von svWetterstation
if(svWetterstation)
{
	genString1='';genString2='';genString3='';genInteger1=0;genInteger2=0;
	genInteger1=owWetterstation.Length();
	foreach(genInteger2,genInteger1)
	{
		genString1=owWetterstation.Substr(genInteger2-1,1);
		if(genString1=='Ã')
		{
			genString2=owWetterstation.Substr(genInteger2,1);
			if(genString2=='¼'){genString1='ü';genInteger2=genInteger2+1;}
			if(genString2=='¶'){genString1='ö';genInteger2=genInteger2+1;}
			if(genString2=='¤'){genString1='ä';genInteger2=genInteger2+1;}
		}
		genString3=genString3#genString1;
	}
	
	svObject = dom.GetObject(svWetterstation);
	if (!svObject)
	{   
	    svObjectlist = dom.GetObject(ID_SYSTEM_VARIABLES);
	    svObject = dom.CreateObject(OT_VARDP);
	    svObjectlist.Add(svObject.ID());
	    svObject.Name(svWetterstation);   
	    svObject.ValueType(ivtString);
	    svObject.ValueSubType(istChar8859);
	    svObject.DPInfo('OpenWeatherMap - Wetterstation');
	    svObject.ValueUnit('');
	    svObject.State(genString3);
	    svObject.Internal(false);
	    svObject.Visible(true);
	    dom.RTUpdate(true);
	} else {
		svObject.State(genString3);
	}
	if((cuxCMD)&&(useLOGIT)){dom.GetObject(cuxCMDName#'.LOGIT').State(svWetterstation#';'#genString3);}
}



!Schreiben von svWindgeschwindigkeit
if(svWindGeschwindigkeit)
{
	svObject = dom.GetObject(svWindGeschwindigkeit);
	if (!svObject){   
	    svObjectlist = dom.GetObject(ID_SYSTEM_VARIABLES);
	    svObject = dom.CreateObject(OT_VARDP);
	    svObjectlist.Add(svObject.ID());
	    svObject.Name(svWindGeschwindigkeit);   
	    svObject.ValueType(ivtFloat);
	    svObject.ValueSubType(istGeneric);
	    svObject.DPInfo("OpenWeatherMap - Windgeschwindigkeit");
	    svObject.ValueUnit("km/h");
	    svObject.ValueMin(0.0000);
	    svObject.ValueMax(500.0000);
	    svObject.State(owWindGeschwindigkeit);
	    svObject.Internal(false);
	    svObject.Visible(true);
	    dom.RTUpdate(true);
	} else {
		svObject.State(owWindGeschwindigkeit);
	}
	if((cuxCMD)&&(useLOGIT)){dom.GetObject(cuxCMDName#'.LOGIT').State(svWindGeschwindigkeit#';'#owWindGeschwindigkeit);}
}

	

!Schreiben von svLuftdruck
if(svLuftdruck)
{
	svObject = dom.GetObject(svLuftdruck);
	if (!svObject){   
	    svObjectlist = dom.GetObject(ID_SYSTEM_VARIABLES);
	    svObject = dom.CreateObject(OT_VARDP);
	    svObjectlist.Add(svObject.ID());
	    svObject.Name(svLuftdruck);   
	    svObject.ValueType(ivtFloat);
	    svObject.ValueSubType(istGeneric);
	    svObject.DPInfo("OpenWeatherMap - Luftdruck");
	    svObject.ValueUnit("hPa");
	    svObject.ValueMin(500.0000);
	    svObject.ValueMax(1100.0000);
	    svObject.State(owLuftdruck);
	    svObject.Internal(false);
	    svObject.Visible(true);
	    dom.RTUpdate(true);
	} else {
		svObject.State(owLuftdruck);
	}
	if((cuxCMD)&&(useLOGIT)){dom.GetObject(cuxCMDName#'.LOGIT').State(svLuftdruck#';'#owLuftdruck);}
}

	

!Schreiben von svTemperatur
if(svTemperatur)
{
	svObject = dom.GetObject(svTemperatur);
	if (!svObject){   
	    svObjectlist = dom.GetObject(ID_SYSTEM_VARIABLES);
	    svObject = dom.CreateObject(OT_VARDP);
	    svObjectlist.Add(svObject.ID());
	    svObject.Name(svTemperatur);   
	    svObject.ValueType(ivtFloat);
	    svObject.ValueSubType(istGeneric);
	    svObject.DPInfo("OpenWeatherMap - Temperatur");
	    svObject.ValueUnit("°C");
	    svObject.ValueMin(-50.0000);
	    svObject.ValueMax(50.0000);
	    svObject.State(owTemperatur);
	    svObject.Internal(false);
	    svObject.Visible(true);
	    dom.RTUpdate(true);
	} else {
		svObject.State(owTemperatur);
	}
	if((cuxCMD)&&(useLOGIT)){dom.GetObject(cuxCMDName#'.LOGIT').State(svTemperatur#';'#owTemperatur);}
	if(cuxWDS){dom.GetObject(cuxWDSName#'.SET_TEMPERATURE').State(owTemperatur);}
}



!Schreiben von svMinimalTemperatur
if(svMinimalTemperatur)
{
	svObject = dom.GetObject(svMinimalTemperatur);
	if (!svObject){   
	    svObjectlist = dom.GetObject(ID_SYSTEM_VARIABLES);
	    svObject = dom.CreateObject(OT_VARDP);
	    svObjectlist.Add(svObject.ID());
	    svObject.Name(svMinimalTemperatur);   
	    svObject.ValueType(ivtFloat);
	    svObject.ValueSubType(istGeneric);
	    svObject.DPInfo("OpenWeatherMap - Temperatur (min.)");
	    svObject.ValueUnit("°C");
	    svObject.ValueMin(-50.0000);
	    svObject.ValueMax(50.0000);
	    svObject.State(owMinimalTemperatur);
	    svObject.Internal(false);
	    svObject.Visible(true);
	    dom.RTUpdate(true);
	} else {
		svObject.State(owMinimalTemperatur);
	}
	if((cuxCMD)&&(useLOGIT)){dom.GetObject(cuxCMDName#'.LOGIT').State(svMinimalTemperatur#';'#owMinimalTemperatur);}
}



!Schreiben von svMaximalTemperatur
if(svMaximalTemperatur)
{
	svObject = dom.GetObject(svMaximalTemperatur);
	if (!svObject){   
	    svObjectlist = dom.GetObject(ID_SYSTEM_VARIABLES);
	    svObject = dom.CreateObject(OT_VARDP);
	    svObjectlist.Add(svObject.ID());
	    svObject.Name(svMaximalTemperatur);   
	    svObject.ValueType(ivtFloat);
	    svObject.ValueSubType(istGeneric);
	    svObject.DPInfo("OpenWeatherMap - Temperatur (max.)");
	    svObject.ValueUnit("°C");
	    svObject.ValueMin(-50.0000);
	    svObject.ValueMax(50.0000);
	    svObject.State(owMaximalTemperatur);
	    svObject.Internal(false);
	    svObject.Visible(true);
	    dom.RTUpdate(true);
	} else {
		svObject.State(owMaximalTemperatur);
	}
	if((cuxCMD)&&(useLOGIT)){dom.GetObject(cuxCMDName#'.LOGIT').State(svMaximalTemperatur#';'#owMaximalTemperatur);}
}



!Schreiben von svLuffeuchtigkeit
if(svLuftfeuchtigkeit)
{
	svObject = dom.GetObject(svLuftfeuchtigkeit);
	if (!svObject){   
	    svObjectlist = dom.GetObject(ID_SYSTEM_VARIABLES);
	    svObject = dom.CreateObject(OT_VARDP);
	    svObjectlist.Add(svObject.ID());
	    svObject.Name(svLuftfeuchtigkeit);   
	    svObject.ValueType(ivtFloat);
	    svObject.ValueSubType(istGeneric);
	    svObject.DPInfo("OpenWeatherMap - Luftfeuchtigkeit");
	    svObject.ValueUnit("%");
	    svObject.ValueMin(0.0000);
	    svObject.ValueMax(100.0000);
	    svObject.State(owLuftfeuchtigkeit);
	    svObject.Internal(false);
	    svObject.Visible(true);
	    dom.RTUpdate(true);
	} else {
		svObject.State(owLuftfeuchtigkeit);
	}
	if((cuxCMD)&&(useLOGIT)){dom.GetObject(cuxCMDName#'.LOGIT').State(svLuftfeuchtigkeit#';'#owLuftfeuchtigkeit);}
	if(cuxWDS){dom.GetObject(cuxWDSName#'.SET_HUMIDITY').State(owLuftfeuchtigkeit);}
}



!Schreiben von svWindrichtung
if(svWindRichtung)
{
	!Englische Windrichtungsangaben übersetzen (z.B. N-W-E in Nord-West-Ost)
	genString1='';genString2='';genString3='';genInteger1=0;
	genString1 = owWindRichtung;
	foreach(genInteger1,genString1.Length())
	{
		genString2=genString1.Substr(genInteger1-1,1);
		if(genString2=='E'){genString3=genString3#'Ost-';}
		if(genString2=='S'){genString3=genString3#'Süd-';}
		if(genString2=='W'){genString3=genString3#'West-';}
		if(genString2=='N'){genString3=genString3#'Nord-';}
	}
	genString1=genString3.Substr(0,genString3.Length()-1);
	genString2=owGradzahl.ToString()#'° '#genString1;
	svObject = dom.GetObject(svWindRichtung);
	if (!svObject)
	{   
	    svObjectlist = dom.GetObject(ID_SYSTEM_VARIABLES);
	    svObject = dom.CreateObject(OT_VARDP);
	    svObjectlist.Add(svObject.ID());
	    svObject.Name(svWindRichtung);   
	    svObject.ValueType(ivtString);
	    svObject.ValueSubType(istChar8859);
	    svObject.DPInfo('OpenWeatherMap - Windrichtung');
	    svObject.ValueUnit('');
	    svObject.State(genString2);
	    svObject.Internal(false);
	    svObject.Visible(true);
	    dom.RTUpdate(true);
	} else {
		svObject.State(genString2);
	}
	if((cuxCMD)&&(useLOGIT)){dom.GetObject(cuxCMDName#'.LOGIT').State(svWindRichtung#';'#genString2);}
}	[/list]

eventuell kann mir ja jemand helfen.
Vielen Dank.

Antworten

Zurück zu „Projektvorstellungen“