Zeitsteuerung über Slider

Haussteuerung mittels mediola

Moderator: Co-Administratoren

michaelapp
Beiträge: 280
Registriert: 16.05.2018, 22:54
Hat sich bedankt: 6 Mal
Danksagung erhalten: 5 Mal

Re: Zeitsteuerung über Slider

Beitrag von michaelapp » 24.04.2019, 06:59

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

Werner74579
Beiträge: 58
Registriert: 08.12.2022, 15:44
System: CCU
Hat sich bedankt: 16 Mal

Danke Garbsen

Beitrag von Werner74579 » 17.03.2024, 21:55

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.

Antworten

Zurück zu „mediola“