Einrichtung, Nutzung und Hilfe zu RaspberryMatic (OCCU auf Raspberry Pi)
Moderatoren: jmaus, Co-Administratoren
-
JJ-CCU2
- Beiträge: 20
- Registriert: 20.03.2015, 16:12
- System: CCU
Beitrag
von JJ-CCU2 » 30.01.2018, 20:16
Ich habe eine CCU-2 und da tritt das Problem so ähnlich immer noch auf.
Code: Alles auswählen
Jan 30 18:51:40 homematic-ccu2 local0.err ReGaHss: Error: stack overflow in PushVar [iseESPexec.cpp:162]
Jan 30 18:54:40 homematic-ccu2 local0.err ReGaHss: Error: stack overflow in PushVar [iseESPexec.cpp:162]
Jan 30 18:57:41 homematic-ccu2 local0.err ReGaHss: Error: stack overflow in PushVar [iseESPexec.cpp:162]
Jan 30 19:00:41 homematic-ccu2 local0.err ReGaHss: Error: stack overflow in PushVar [iseESPexec.cpp:162]
Jan 30 19:03:41 homematic-ccu2 local0.err ReGaHss: Error: stack overflow in PushVar [iseESPexec.cpp:162]
Jan 30 19:06:41 homematic-ccu2 local0.err ReGaHss: Error: stack overflow in PushVar [iseESPexec.cpp:162]
Jan 30 19:09:41 homematic-ccu2 local0.err ReGaHss: Error: stack overflow in PushVar [iseESPexec.cpp:162]
Jan 30 19:12:40 homematic-ccu2 local0.err ReGaHss: Error: stack overflow in PushVar [iseESPexec.cpp:162]
Jan 30 19:15:41 homematic-ccu2 local0.err ReGaHss: Error: stack overflow in PushVar [iseESPexec.cpp:162]
Jan 30 19:18:41 homematic-ccu2 local0.err ReGaHss: Error: stack overflow in PushVar [iseESPexec.cpp:162]
Jan 30 19:21:41 homematic-ccu2 local0.err ReGaHss: Error: stack overflow in PushVar [iseESPexec.cpp:162]
Jan 30 19:24:41 homematic-ccu2 local0.err ReGaHss: Error: stack overflow in PushVar [iseESPexec.cpp:162]
Jan 30 19:27:41 homematic-ccu2 local0.err ReGaHss: Error: stack overflow in PushVar [iseESPexec.cpp:162]
Jan 30 19:30:41 homematic-ccu2 local0.err ReGaHss: Error: stack overflow in PushVar [iseESPexec.cpp:162]
Jan 30 19:33:41 homematic-ccu2 local0.err ReGaHss: Error: stack overflow in PushVar [iseESPexec.cpp:162]
Jan 30 19:36:40 homematic-ccu2 local0.err ReGaHss: Error: stack overflow in PushVar [iseESPexec.cpp:162]
Jan 30 19:39:41 homematic-ccu2 local0.err ReGaHss: Error: stack overflow in PushVar [iseESPexec.cpp:162]
Jan 30 19:42:41 homematic-ccu2 local0.err ReGaHss: Error: stack overflow in PushVar [iseESPexec.cpp:162]
Jan 30 19:45:41 homematic-ccu2 local0.err ReGaHss: Error: stack overflow in PushVar [iseESPexec.cpp:162]
Jan 30 19:48:40 homematic-ccu2 local0.err ReGaHss: Error: stack overflow in PushVar [iseESPexec.cpp:162]
Jan 30 19:51:40 homematic-ccu2 local0.err ReGaHss: Error: stack overflow in PushVar [iseESPexec.cpp:162]
Jan 30 19:54:40 homematic-ccu2 local0.err ReGaHss: Error: stack overflow in PushVar [iseESPexec.cpp:162]
Jan 30 19:57:40 homematic-ccu2 local0.err ReGaHss: Error: stack overflow in PushVar [iseESPexec.cpp:162]
Jan 30 20:00:40 homematic-ccu2 local0.err ReGaHss: Error: stack overflow in PushVar [iseESPexec.cpp:162]
Ich habe da auch so eine Abfrage auf die Existenz einer Systemvariablen, die etwas damit zu tun haben könnte.
Code: Alles auswählen
RaumObject = dom.GetObject(svRaum);
if (RaumObject) {
WriteLine("Systemvariable gefunden: " # svRaum);
Hatte vorher ein paar nested foreach, was vielleicht zu viel war. Sind aber alle entschärft.
Hat noch jemand eine Idee?
-JJ
-
Black
- Beiträge: 5480
- Registriert: 12.09.2015, 22:31
- System: Alternative CCU (auf Basis OCCU)
- Wohnort: Wegberg
- Hat sich bedankt: 424 Mal
- Danksagung erhalten: 1074 Mal
-
Kontaktdaten:
Beitrag
von Black » 30.01.2018, 20:20
hast du programme, wo du keinen dann teil nur einen sonst teil hast ?
-
poidi
- Beiträge: 2
- Registriert: 24.01.2018, 17:07
Beitrag
von poidi » 14.02.2018, 11:02
Hm, ich hatte den Fehler auch gerade - vermutlich durch zu viele "elseif" hintereinander.
ich habe die elseif jetzt durch quit und normale ifs ersetzt - jetzt scheint es zu gehen.
Gibt es da ein Maximum?
Homematic Neuling
Programmier-Profi
83 Kanäle in 33 Geräten und 32 CUxD-Kanäle in 2 CUxD-Geräten:
9x HM-Sec-SCo, 2x HM-LC-Sw1PBU-FM, 5x HM-CC-VG-1, 5x HM-CC-RT-DN, 2x CUX28, 3x HM-TC-IT-WM-W-EU, 3x HM-LC-Sw1-Pl-DN-R1, 1x HM-Sec-SD-2, 1x HM-PB-6-WM55, 1x HM-LC-Sw2-FM, 2x HM-PB-2-WM55-2, 1x HM-Sec-SD-2-Team
-
jmaus
- Beiträge: 9862
- Registriert: 17.02.2015, 14:45
- System: Alternative CCU (auf Basis OCCU)
- Wohnort: Dresden
- Hat sich bedankt: 464 Mal
- Danksagung erhalten: 1880 Mal
-
Kontaktdaten:
Beitrag
von jmaus » 14.02.2018, 11:55
Welche Firmware nutzt du denn? Und was heisst viele „elseif()“? Wieviel sind viele?
-
Cash
- Beiträge: 1184
- Registriert: 09.01.2016, 17:42
- Wohnort: Sauerland
- Hat sich bedankt: 1 Mal
- Danksagung erhalten: 1 Mal
Beitrag
von Cash » 06.03.2018, 18:39
Ich habe das Problem nun auch. Interessanterwesie lief das Script heute Morgen zweimal ohne Fehler und beim dritten mal war dann Ende. Den ScriptRuntimeError verstehe ich leider auch nicht. Müsste ich nicht jedesmal den RuntimeError beim ausführen bekommen? Auch der Zeitversatz von 12:06 zu 12:11:02 macht mich stuzig. Um die Uhrzeit läuft ansonsten nichts...
Code: Alles auswählen
Mar 6 12:06:00 homematic-ccu2 local0.err ReGaHss: Error: stack overflow in PushVar [iseESPexec.cpp:162]
Mar 6 12:06:00 homematic-ccu2 local0.err ReGaHss: Error: IseESP::ScriptRuntimeError: ! +++++ Skript Luftentfeuchter beenden +++++ ! Version 1.4 // 04.03.2018 ! +++++++ Variablen +++++++ string CUXD_AN; string CUXD_AUS; string Zeitpunkt_an; string Zeitpunkt_aus; string tmpG
Mar 6 12:06:00 homematic-ccu2 local0.err ReGaHss: Error: stack overflow in PushVar [iseESPexec.cpp:162]
Mar 6 12:11:02 homematic-ccu2 local0.err ReGaHss: Error: stack overflow in PushVar [iseESPexec.cpp:162]
Hier das Script:
Code: Alles auswählen
! +++++ Skript Luftentfeuchter beenden +++++
! Version 1.4 // 04.03.2018
! +++++++ Variablen +++++++
string CUXD_AN;
string CUXD_AUS;
string Zeitpunkt_an;
string Zeitpunkt_aus;
string tmpG = system.Date("%F").ToString() #" ";
string tmpE = system.Date("%H:%M:%S");
integer tmpF;
integer tmpH;
! Zeitspanne wie lange der Luftentfeuchter pausieren soll
! Angabe in Sekunden
if(dom.GetObject("BidCos-RF.MEQ0089736:1.HUMIDITY").Value()>=62){tmpF = 1800;}
elseif(dom.GetObject("BidCos-RF.MEQ0089736:1.HUMIDITY").Value()>=58){tmpF = 3600;}
elseif(dom.GetObject("BidCos-RF.MEQ0089736:1.HUMIDITY").Value()>=55){tmpF = 7200;}
elseif(dom.GetObject("BidCos-RF.MEQ0089736:1.HUMIDITY").Value()>=50){tmpF = 10800;}
else{tmpF = 14400;}
! Zeitspanne wie lange der Luftentfeuchter weiter laufen soll wenn Luftfeuchtigkeit unter x% und er aktuell nicht läuft
! Angabe in Sekunden
if(dom.GetObject("BidCos-RF.MEQ0089736:1.HUMIDITY").Value()>=65){tmpH = 1800;}
elseif(dom.GetObject("BidCos-RF.MEQ0089736:1.HUMIDITY").Value()>=55){tmpH = 900;}
else{tmpH = 450;}
! +++++++ Auswahl Cuxd-Timer +++++++
! CUxD.CUX2800003:3 Timer für Luftentfeuchter an
! CUxD.CUX2800003:4 Timer für Luftentfeuchter aus
CUXD_AN = "CUxD.CUX2800003:3.TIMER_SET";
CUXD_AUS = "CUxD.CUX2800003:4.TIMER_SET";
Zeitpunkt_aus = ((tmpG #tmpE).ToTime()+tmpH).Format("%H:%M:%S");
Zeitpunkt_an = ((tmpG #tmpE).ToTime()+tmpF).Format("%H:%M:%S");
if(dom.GetObject("BidCos-RF.MEQ0089736:1.HUMIDITY").Value()<=60){
if(Zeitpunkt_an < "21:45:00"){if(dom.GetObject(ID_SYSTEM_VARIABLES).Get("SV Luftentfeuchter").Value()){
dom.GetObject(CUXD_AN).State(Zeitpunkt_an);
dom.GetObject(ID_SYSTEM_VARIABLES).Get("SV Z Luftentfeuchter an").State(Zeitpunkt_an);}
}
else{dom.GetObject(ID_SYSTEM_VARIABLES).Get("SV Z Luftentfeuchter an").State("");
dom.GetObject(ID_SYSTEM_VARIABLES).Get("SV Z Luftentfeuchter aus").State("");}
if (dom.GetObject("BidCos-RF.OEQ0248340:1.STATE").Value() ) {
dom.GetObject("BidCos-RF.OEQ0248340:1.STATE").State(false);}
}
else {if(tmpE < "21:45:00"){if(dom.GetObject(ID_SYSTEM_VARIABLES).Get("SV Luftentfeuchter").Value()){
if (!dom.GetObject("BidCos-RF.OEQ0248340:1.STATE").Value() ) {
dom.GetObject("BidCos-RF.OEQ0248340:1.STATE").State(true);}
dom.GetObject(CUXD_AUS).State(Zeitpunkt_aus);
dom.GetObject(ID_SYSTEM_VARIABLES).Get("SV Z Luftentfeuchter aus").State(Zeitpunkt_aus);}
else {dom.GetObject(ID_SYSTEM_VARIABLES).Get("SV Z Luftentfeuchter an").State("");
dom.GetObject(ID_SYSTEM_VARIABLES).Get("SV Z Luftentfeuchter aus").State("");}}
else {if(dom.GetObject("BidCos-RF.OEQ0248340:1.STATE").Value() ) {
dom.GetObject("BidCos-RF.OEQ0248340:1.STATE").State(false);
dom.GetObject(ID_SYSTEM_VARIABLES).Get("SV Z Luftentfeuchter an").State("");
dom.GetObject(ID_SYSTEM_VARIABLES).Get("SV Z Luftentfeuchter aus").State("");}
}
}
Sehe gerade falsches Forum. Ich nutze eine ccu2 mit aktueller Firmare auf Community... Da es thematisch passt lasse ich es hier
-
Cash
- Beiträge: 1184
- Registriert: 09.01.2016, 17:42
- Wohnort: Sauerland
- Hat sich bedankt: 1 Mal
- Danksagung erhalten: 1 Mal
Beitrag
von Cash » 06.03.2018, 21:37
habe nun das Script geändert und die elseif durch normale if´s ersetzt. Seitdem gibt es keine neuen Einträge im Log. Wenn es so bleibt scheint also das ich entweder das elseif falsch verwende oder dort noch ein Fehler ist???
Ich lasse das Script jetzt erstmal Morgen weiter so laufen. Mal schauen wie es Morgen Abend aussieht...