Ich glaube mit der Heizungsschaltung über Teddy-code, aber ohne die Zeit-Komponente komme ich gut klar. Nur führt der Script so wie er im Moment ist anscheinend dazu, dass der Status des Heizungs-Hauptschalters fast jede Minute aktualisiert wird. Heut kam dann eine Meldung, die Batterie sei langsam leer. Ich überlege jetzt ob die Statusabfrage tatsächlich zu einem erhöhten Energieverbrauch führt.
Kannst du noch mal drüberschaun, wie ich das ausschalte?
Vielen Dank!
Code: Alles auswählen
object o_debug = dom.GetObject("Programmausfuehrung debug");
string s_debug = "Heizungssteuerung: Start: " # system.Date("%d.%m.%Y %T");
var vts = o_debug.State(s_debug);
object o_waermeanforderung = dom.GetObject("Wa");
object d_heizung = dom.GetObject("HeizungMain");
! Stellantriebe aus dem WebUI-Programm abfragen
object o_prg = dom.GetObject($this$);
integer i_count=0;
integer i_summe=0;
string s_address;
object o_dp_err;
object o_chn;
object o_dp = dom.GetObject(o_prg.Rule().RuleCondition(0).CndSingleCondition(i_count).LeftVal());
while (o_dp) {
o_chn = dom.GetObject(o_dp.Channel());
s_address = o_chn.Address();
o_dp_err=dom.GetObject("BidCos-RF." # s_address # ".ERROR");
if (o_dp_err.Value() == 0) {
i_summe = i_summe + o_dp.Value();
}
i_count = i_count + 1;
o_dp = dom.GetObject(o_prg.Rule().RuleCondition(0).CndSingleCondition(i_count).LeftVal());
}
! Heizung bei Bedarf schalten
object d_heizung_state = dom.GetObject("BidCos-RF." # d_heizung.Address() # ":1.STATE");
time t_timestamp = d_heizung_state.Timestamp();
time t_now = system.Date("%Y-%m-%d %H:%M:%S").ToTime();
integer i_diff = t_now.ToInteger() - t_timestamp.ToInteger();
s_debug = s_debug # ", i_summe: " # i_summe.ToString() # ", i_diff: " # i_diff.ToString() # ", Status d_heizung: " # d_heizung_state.State().ToString();
var vts = o_debug.State(s_debug);
if ((i_summe <= 15) && (!d_heizung_state.State())) {
d_heizung_state.State(true);
}
if ((i_summe >= 25) && (d_heizung_state.State())) {
d_heizung_state.State(false);
}
! Wärmeanforderung aktualisieren
if (o_waermeanforderung.State() != i_summe) {
o_waermeanforderung.State(i_summe);
}
var vts = o_debug.State(s_debug # ", Ende: " # system.Date("%d.%m.%Y %T") # "\n");