Habe die
Einschaltdauer dynamisch im Programm wie von
Alchy empfohlen übernommen und noch eine
dynamische Auschschaltdauer gebastelt.
Da ich erst seit ca. 4 Monaten Homematic habe , bin ich für alle Verbesserungsvorschläge offen.
System Variablen:
HZ_an_Sperrzeit_aktiv-----wahr/falsch
HZ_an_Heizzeit -------------Zeit (Zähler der abgelaufenen Zeit)
HZ_an_Sperrzeit-------------Zeit (Zähler der abgelaufenen Zeit)
HZ_an_Einschaltdauer------Zeit in Sekunden(Wie lange der Schaltaktor eingeschaltet ist) gesetzt über Programm;Skript oder IO Broker oder.....
HZ_an_Auschaltdauer-------Zeit in Minuten(Wie lange der Schaltaktor ausgeschaltet bleibt) gesetzt über Programm;Skript oder IO Broker oder.....
HZ_an_einschalten Bedingung für einschalten der Heizung (Wird bei mir von Ventilpos. der Heizkörper gesetzt)
Programm einschalten(Wie
Einschaltdauer dynamisch im Programm) nur zusätzlich wird noch geprüft ob Sperrung aktiv ist und Heizzeit auf 0.01 und Sperrzeit auf 0 gestellt
Jetzt zur Sperrung:
Sobald der Schaltaktor ausgeschaltet ist wird die Variable Sperrung aktiv auf
wahr gesetzt
und die Heizzeit auf 0 und die Sperrzeit auf 0.01 gestellt
- Sperrung ein.png (19.27 KiB) 1180 mal betrachtet
Sperrung zurücksetzen:
- Sperrung reset.png (19.58 KiB) 1180 mal betrachtet
ersten Skript:
Code: Alles auswählen
var ad =dom.GetObject("HZ_an_Ausschaltdauer").State();
var sz =dom.GetObject("HZ_an_Sperrzeit").State();
if (sz >= ad) {
dom.GetObject("HZ_an_Sperre_aktiv").State(false);
dom.GetObject("HZ_an_Sperrzeit").State(0.00);
}
Hier wird geprüft ob die Auschaltdauer (Zeit) erreicht wurde, wenn ja wird die aktuelle Sperrzeit auf 0 gesetzt und Sperre auf
falsch
zweites Skript 1 min verzögert
Code: Alles auswählen
var sz = dom.GetObject("HZ_an_Sperrzeit");
var sp =dom.GetObject("HZ_an_Sperre_aktiv").State();
if (sp == true){
sz.State(sz.Value() + 1);
}
Solange die Variable Heizung Sperre aktiv wahr ist wird pro Minute der Zähler Sperrzeit um 1 erhöht.
Das Programm Heizzeit ist nicht erforderlich für die Sperrung dient einfach nur zur Visualisierung.
- Heizzeit zähler.png (19.24 KiB) 1180 mal betrachtet
Code: Alles auswählen
var hd = dom.GetObject("HZ_an_Heizzeit");
var sensor= dom.GetObject("BidCos-RF.Oxxxxxxx56:1.STATE").Value();
if (sensor == true){
hd.State(hd.Value() + 1);
}
Läuft seit 24 Std Fehlerfrei.
Würdet ihr noch etwas anders machen oder geht es auch einfacher??