Wechsel von CCU2 auf CCU3: Script-Problem

Einrichtung, Anschluss und Programmierung der HomeMatic CCU

Moderator: Co-Administratoren

farouche
Beiträge: 24
Registriert: 28.02.2016, 19:02
Hat sich bedankt: 1 Mal
Danksagung erhalten: 4 Mal

Wechsel von CCU2 auf CCU3: Script-Problem

Beitrag von farouche » 02.10.2022, 14:31

Hallo Zusammen,

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 :D Habe schon viel herumprobiert und gelesen mit dem Effekt, dass ich nun völlig verunsichert und verwirrt bin: :roll:
  • 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.8)
  • Liegt es am Backup?
  • Oder hat die CCU3 einfach einen Defekt?
Am Ende dieser Nachricht findet Ihr einmal das Script und die Fehlermeldung aus dem Log. Gerne stelle ich weitere Infos zur Verfügung.

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
Script von Christian mit zusätzlicher Ausweisung der Summe der Ventilöffnungen am Ende

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);


MichaelN
Beiträge: 9649
Registriert: 27.04.2020, 10:34
System: CCU
Hat sich bedankt: 697 Mal
Danksagung erhalten: 1617 Mal

Re: Wechsel von CCU2 auf CCU3: Script-Problem

Beitrag von MichaelN » 02.10.2022, 14:41

Heißt das Objekt immer noch Aktor-Gastherme? eindeutiger Name?
Und das Objekt Waermebedarf ist eine Systemvariable und eindeutig (vom Namen)?


Ansonsten mal mit Debugging Tip 3 (siehe Signatur) Protokolleinträge alle paar logische Blöke einfügen und sehen bis wohin es durchläuft
LG, Michael.

Wenn du eine App zur Bedienung brauchst, dann hast du kein Smarthome.

Wettervorhersage über AccuWeather oder OpenWeatherMap+++ Rollladensteuerung 2.0 +++ JSON-API-Ausgaben auswerten +++ undokumentierte Skript-Befehle und Debugging-Tipps +++

Benutzeravatar
robbi77
Beiträge: 13845
Registriert: 19.01.2011, 19:15
System: CCU
Wohnort: Landau
Hat sich bedankt: 181 Mal
Danksagung erhalten: 738 Mal

Re: Wechsel von CCU2 auf CCU3: Script-Problem

Beitrag von robbi77 » 02.10.2022, 14:54

Warum braucht man da ein Script?
Das Programm ist ja sowieso schon angelegt, dann kann man im Dann doch gleich den Aktor an oder aus schalten …

farouche
Beiträge: 24
Registriert: 28.02.2016, 19:02
Hat sich bedankt: 1 Mal
Danksagung erhalten: 4 Mal

Re: Wechsel von CCU2 auf CCU3: Script-Problem

Beitrag von farouche » 02.10.2022, 15:31

robbi77 hat geschrieben:
02.10.2022, 14:54
Warum braucht man da ein Script?
Das Programm ist ja sowieso schon angelegt, dann kann man im Dann doch gleich den Aktor an oder aus schalten …
Ich kann Dir nicht ganz folgen. In dem Programm werden ja nur die einzelnen Heizungsventile als auslösende Ereignisse abgefragt. So, dass jedes Mal, wenn es zu einer Meldung kommt, das Programm auslöst.
Die eigentlich Logik erfolgt in dem Script. Hier wird
  • der gesamte Wärmebedarf ermittelt (die Gesamtsumme der Ventilöffnung aller Heizungsventile, wobei Ventile mit Fehlermeldung ausgeschlossen werden)
  • gesteuert, ab welchem Wärmebedarf die Therme an, wann sie wieder aus geht und nach welcher Zeit sie bei Bedarf wieder einschaltet

farouche
Beiträge: 24
Registriert: 28.02.2016, 19:02
Hat sich bedankt: 1 Mal
Danksagung erhalten: 4 Mal

Re: Wechsel von CCU2 auf CCU3: Script-Problem

Beitrag von farouche » 02.10.2022, 15:36

MichaelN hat geschrieben:
02.10.2022, 14:41
Heißt das Objekt immer noch Aktor-Gastherme? eindeutiger Name?
Und das Objekt Waermebedarf ist eine Systemvariable und eindeutig (vom Namen)?


Ansonsten mal mit Debugging Tip 3 (siehe Signatur) Protokolleinträge alle paar logische Blöke einfügen und sehen bis wohin es durchläuft
Ja, beides eindeutige Namen und unverändert. Ist wie gesagt aus einem Backup der CCU2. Es ist also alles gleich auf der CCU2 und der CCU3.

Das mit den Protokolleinträgen an verschiedenen Stellen im Script probiere ich gerne mal aus. Danke Dir schon einmal.

Benutzeravatar
robbi77
Beiträge: 13845
Registriert: 19.01.2011, 19:15
System: CCU
Wohnort: Landau
Hat sich bedankt: 181 Mal
Danksagung erhalten: 738 Mal

Re: Wechsel von CCU2 auf CCU3: Script-Problem

Beitrag von robbi77 » 02.10.2022, 16:51

Ok. Ich halte es etwas einfacher.
Sobald ein Thermostat Wärme will bekommt es das auch, weil ich möchte ja das dieser Raum warm wird und nicht erst wenn noch ein zweiter Raum Wärme möchte.
EF06991F-220E-42CC-9A90-8EBA3C2463CD.jpeg

Xel66
Beiträge: 14148
Registriert: 08.05.2013, 23:33
System: Alternative CCU (auf Basis OCCU)
Wohnort: Nordwürttemberg
Hat sich bedankt: 583 Mal
Danksagung erhalten: 1497 Mal

Re: Wechsel von CCU2 auf CCU3: Script-Problem

Beitrag von Xel66 » 02.10.2022, 17:48

So mache ich es auch und ich bin der Meinung, dass die Scriptrechnerei an dieser Stelle hyperliquide ist. Wenn ein Thermostat durch einen bestimmten Öffnungsgrad signalisiert, dass in dem entsprechenden Raum Wärmebedarf besteht, muss die Heizung anspringen. Sind alle geschlossen, vice versa. Läuft bei mir seit mehr als neun Jahren genau so. Die Rechnerei ist was für den Esotherikfaktor, hat aber keine wirkliche Funktion. Es gilt lediglich, aus quasi-analogen Stellungswerten einen binären Status abzuleiten. Da es wenig bis gar keinen Gleitbereich gibt, benötigt man auch keine Rechnung.

Gruß Xel66
-------------------------------------------------------------------------------------------
524 Kanäle in 146 Geräten und 267 CUxD-Kanäle in 34 CUxD-Geräten:
343 Programme, 334 Systemvariablen und 183 Direktverknüpfungen,
RaspberryMatic Version: 3.65.11.20221005 + Testsystem: CCU2 2.61.7
-------------------------------------------------------------------------------------------
Einsteigerthread, Programmlogik-Thread, WebUI-Handbuch

farouche
Beiträge: 24
Registriert: 28.02.2016, 19:02
Hat sich bedankt: 1 Mal
Danksagung erhalten: 4 Mal

Re: Wechsel von CCU2 auf CCU3: Script-Problem

Beitrag von farouche » 02.10.2022, 19:46

Danke @Xel66 und @robbi77. Ich verstehe Euren Punkt und gebe Euch recht.

Vielleicht mag es seltsam klingen, aber die Erfahrungen der ersten Tage mit der CCU3 haben mein Vertrauen in die neue Zentrale nicht gerade bestärkt. Insofern würde ich - auch wenn es nur zu meinem inneren Frieden ist - gerne verstehen was das Problem ist.

Ich habe den Rat zum Debugging von MichaelN mal befolgt
MichaelN hat geschrieben:
02.10.2022, 14:41
Ansonsten mal mit Debugging Tip 3 (siehe Signatur) Protokolleinträge alle paar logische Blöke einfügen und sehen bis wohin es durchläuft


Es hakt in dem Block mit der Berechnung. Kommentiere ich diesen Block aus, läuft das ganze Script durch. Der Block mit der Berechnung scheint also für eine CCU2 verdaubar zu sein, für die CCU3 aber problematisch. Hinsichtlich der diversen Verschachtelungen in dem Teil, komme ich mit meinem Code-Lese-Kenntnissen schon wieder an meine Grenzen. Erkennt ihr, was die CCU3 in diesem Abschnitt zum Stolpern bringt?

Code: Alles auswählen

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());
}

Benutzeravatar
Black
Beiträge: 5470
Registriert: 12.09.2015, 22:31
System: Alternative CCU (auf Basis OCCU)
Wohnort: Wegberg
Hat sich bedankt: 419 Mal
Danksagung erhalten: 1070 Mal
Kontaktdaten:

Re: Wechsel von CCU2 auf CCU3: Script-Problem

Beitrag von Black » 02.10.2022, 20:28

Bei Fehlern in Scripten von kommerziellen Fremdseiten krieg ich immer so ein zucken..

Bietet der Autor des scriptes da etwa keinen Support dafür an ?

Wie sieht denn das webui Programm dafür aus, welches dann das Script aufruft?

Black
Wenn das Fernsehprogramm immer mehr durch nervende Werbung unterbrochen wird und der Radiomoderator nur noch Müll erzählt, ist es besser, die Zeit für sinnvolle Dinge zu nutzen -
mal aufs Klo zu gehen, ein Bier zu holen oder einfach mal den roten AUS-Knopf zu drücken. Klick - und weg

Script Time Scheduler V1.3
AstroSteuerung über Zeitmodul flexibel mit Offset / spätestens, frühestens
SDV 5.03.01 Das umfassende Entwicklungs und Diagnosetool für Homematik
Selektive Backups - Nützliche Dinge, die die WebUI nicht kann

Intel NUC6 Celeron 16GB mit 512GB SSD unter Proxxmox mit insgesamt 5 VM: 2 x bloatwarebefreiter Raspberrymatik, 2 x IOBroker als Middleware und einer MariaDB zur Archivierung. Verbrauch: 6W

technical contribution against annoying advertising

MichaelN
Beiträge: 9649
Registriert: 27.04.2020, 10:34
System: CCU
Hat sich bedankt: 697 Mal
Danksagung erhalten: 1617 Mal

Re: Wechsel von CCU2 auf CCU3: Script-Problem

Beitrag von MichaelN » 03.10.2022, 12:25

Syntaktisch finde ich da auf Anhieb auch keine Fehler. Ich würde mal den Autor des Skript befragen.
LG, Michael.

Wenn du eine App zur Bedienung brauchst, dann hast du kein Smarthome.

Wettervorhersage über AccuWeather oder OpenWeatherMap+++ Rollladensteuerung 2.0 +++ JSON-API-Ausgaben auswerten +++ undokumentierte Skript-Befehle und Debugging-Tipps +++

Antworten

Zurück zu „HomeMatic Zentrale (CCU / CCU2 / CCU3 / Charly)“