wir setzen seit Jahren auf einer CCU2 das einfache Wärmebedarfsrelais (siehe https://www.christian-luetgens.de/homem ... bedarf.htm) von Christian Lütgens ein, um unsere Gastherme zu schalten. Mit der CCU2 hat das immer problemlos funktioniert.
Hinsichtlich des auslaufenden Supports für die CCU2 haben wir uns nun eine CCU3 angeschafft. Der Wechsel hat per Backup (vor dem Backup auf der CCU2 die zusätzliche Software deinstalliert) ansonsten recht problemlos funktioniert. Wie wir aber erst nach ein paar Tagen gemerkt haben, läuft die gewohnte Heizungssteuerung jedoch nicht. Egal wie sich die Stellung der Ventile ändert, der Aktor an der Gastherme reagiert nicht. Um gerade in der aktuellen Situation nicht unnötig Gas zu verschwenden, haben wir jetzt wieder die CCU2 im Einsatz...
In der Log-Datei wird nur eine - zumindest für mich und meine sehr beschränkten Code-Kenntnisse - nicht sonderlich hilfreiche Fehlermeldung ausgegeben "ReGaHss: ERROR" (gesamte Fehlermeldung siehe am Ende dieser Nachricht).
Ich wäre für Hilfe bei der Fehlersuche mehr als dankbar Habe schon viel herumprobiert und gelesen mit dem Effekt, dass ich nun völlig verunsichert und verwirrt bin:
- Ist das doch schon recht alte Script einfach nicht mit der CCU3 kompatibel und muss angepasst werden? (läuft anstandslos auf der CCU2 mit der momentan aktuellsten Firmware 2.61.7 aber nicht auf der CCU3 mit der momentan aktuellsten Firmware 3.65.
- Liegt es am Backup?
- Oder hat die CCU3 einfach einen Defekt?
Danke schon einmal!!!
Beste Grüße
Tobias
Fehlermeldung aus dem Log
Code: Alles auswählen
Oct 1 21:23:46 ccu3-webui local0.err ReGaHss: ERROR: ScriptRuntimeError: ! BEZEICHNUNG DES AKTORS MUSS AN DIESER STELLE ANGEPASST WERDEN object d_heizung = dom.GetObject("Aktor-Gastherme"); ! Stellantriebe aus dem WebUI-Programm abfragen object o_prg=dom.GetObject("3681"); integer i_count=0; integer i_summe=0; 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()); o_dp_err=o_chn.DPByHssDP ("ERROR"); if (!o_dp_err) { o_dp_err=o_chn.DPByHssDP ("FAULT_REPORTING"); } if (o_dp_err) { if (o_dp_err.Value() == 0) { i_summe = i_summe + o_dp.Value(); } } else { 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 = d_heizung.DPByHssDP ("STATE"); time t_timestamp = d_heizung_state.Timestamp(); time t_no
Code: Alles auswählen
! BEZEICHNUNG DES AKTORS MUSS AN DIESER STELLE ANGEPASST WERDEN
object d_heizung = dom.GetObject("Aktor-Gastherme");
! Stellantriebe aus dem WebUI-Programm abfragen
object o_prg=dom.GetObject("$this$");
integer i_count=0;
integer i_summe=0;
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());
o_dp_err=o_chn.DPByHssDP ("ERROR");
if (!o_dp_err) {
o_dp_err=o_chn.DPByHssDP ("FAULT_REPORTING");
}
if (o_dp_err) {
if (o_dp_err.Value() == 0) {
i_summe = i_summe + o_dp.Value();
}
} else {
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 = d_heizung.DPByHssDP ("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();
! VENTILÖFFNUNG, BEI DER DER AKTOR ABSCHALTET, MUSS AN DIESER STELLE
! ANGEPASST WERDEN
if ((i_summe <= 20) && (d_heizung_state.Value())) {
d_heizung_state.State (false);
}
! VENTILÖFFNUNG, BEI DER DER AKTOR EINSCHALTET, MUSS AN DIESER STELLE
! ANGEPASST WERDEN; ZEIT KANN EBENFALLS GEÄNDERT WERDEN (600 SEKUNDEN =
! 10 MINUTEN)
if ((i_summe >= 30) && (i_diff > 600) && (!d_heizung_state.Value())) {
d_heizung_state.State (true);
}
dom.GetObject ("Waermebedarf").State (i_summe);