Seite 4 von 4

Re: Zeitsteuerung über Slider

Verfasst: 24.04.2019, 06:59
von michaelapp
Ich hab das Programm gerade geändert, der Rollladen fährt trotzdem nicht hoch.
B3F3F0BA-35F0-486F-BAEF-37008C024C52.jpeg
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);}
Die Variable TriggerZeit00 hab ich neu angelegt.
6AB51346-52AE-4100-804D-EE462119E388.jpeg
Gruß
Micha

Danke Garbsen

Verfasst: 17.03.2024, 21:55
von Werner74579
Hey @Garbsen,

ich habe deine Tipps dazu verwendet, mithilfe vom Sildern die Endzeit für eine temporäre Temperaturabsenkung meiner Heizung anzugeben. Klappt super, danke für deine Tipps.
Steuerung.jpg
In die freien Flächen kommen noch weitere Steuerelemente.