Mein Skript für die Variable sieht wie folgt aus:
Code: Alles auswählen
!# ######################################################
!# Trigger-Variable wird gesetzt, wenn die Zeit durch Stunden- und Minutenvariable erreicht ist.
!# Daher periodisches Prüfen der Zeitvariablen nötig, dieses Skript dazu periodisch ausführen.
!#
!# Hinweis: Der Trigger wird NICHT gesetzt, wenn die Zeit auf "00:00" eingestellt ist!
!#
!# Auf die Trigger-Variable kann in anderen Programmen reagiert werden und Aktionen ausgeführt werden.
!#
!# Erstellt von A. Kos am 04.07.2017
!# ######################################################
!# Name der Stundenvariable vom Typ Werteliste:
string VARSTUNDE = "VARSTUNDE00";
!# Name der Minutenvariable vom Typ Werteliste:
string VARMINUTE = "VARMINUTE00";
!# Name der Trigger-Variable vom Typ Boolean:
string VARTRIGGER = "VARTRIGGER00";
!######### AB HIER MUSS NICHTS GEÄNDERT WERDEN #########
!# Variablen-Deklarationen
string hstr;
integer hint;
string zeit_sec;
integer diff;
!# Die beiden Variablen für Stunde und Minute auf das richtige Format bringen und in hstr schreiben
hint = web.webGetValueFromList(dom.GetObject(VARSTUNDE).ValueList(), dom.GetObject(VARSTUNDE).Variable().ToInteger()).ToInteger();
hstr = hint.ToString() + ":";
hint = web.webGetValueFromList(dom.GetObject(VARMINUTE).ValueList(), dom.GetObject(VARMINUTE).Variable().ToInteger()).ToInteger();
hstr = hstr + hint.ToString();
!# Nur Ausführen, wenn die Zeit nicht auf 00:00 eingestellt ist:
if (hstr == "00:00") { quit; }
!# Prüfen, ob die aktuelle Zeit gleich der zentral eingestellten Zeit ist. Für die Übereinstimmung darf die Differenz zwischen eingestellter und aktueller Uhrzeit nicht mehr als 65 Sekunden betragen.
zeit_sec = system.Date("%F") + " " + hstr + ":00";
diff = system.Date("%F %T").ToTime().ToInteger() - zeit_sec.ToTime().ToInteger();
var x = dom.GetObject("TriggerZeit00").Value();
var y = dom.GetObject("TriggerZeit00").ValueList();
var Zeit1 = y.StrValueByIndex(";",1);
var Zeit2 = y.StrValueByIndex(";",2);
var Zeit3 = y.StrValueByIndex(";",3);
var Zeit4 = y.StrValueByIndex(";",4);
var Zeit5 = y.StrValueByIndex(";",5);
zeit_sec = hstr + ":00";
dom.GetObject("TriggerZeit00").ValueList(zeit_sec + ";"+ Zeit1 + ";" + Zeit2 + ";" + Zeit3 + ";" + Zeit4 + ";" + Zeit5);
!if (diff < 0 ) { diff = -1 * diff; }
!if (diff <= 65){
! !# Trigger setzen
! dom.GetObject(VARTRIGGER).State(1);
!}
!else
!{!# Trigger setzen
! dom.GetObject(VARTRIGGER).State(0);}
Gruß
Micha