[GELÖST] stack overflow in PushVar [iseESPexec.cpp:166]

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

Re: [GELÖST] stack overflow in PushVar [iseESPexec.cpp:166]

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

Benutzeravatar
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:

Re: [GELÖST] stack overflow in PushVar [iseESPexec.cpp:166]

Beitrag von Black » 30.01.2018, 20:20

hast du programme, wo du keinen dann teil nur einen sonst teil hast ?
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

poidi
Beiträge: 2
Registriert: 24.01.2018, 17:07

Re: [GELÖST] stack overflow in PushVar [iseESPexec.cpp:166]

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

Benutzeravatar
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:

Re: [GELÖST] stack overflow in PushVar [iseESPexec.cpp:166]

Beitrag von jmaus » 14.02.2018, 11:55

Welche Firmware nutzt du denn? Und was heisst viele „elseif()“? Wieviel sind viele?
RaspberryMatic 3.75.7.20240420 @ ProxmoxVE – ~200 Hm-RF/HmIP-RF/HmIPW Geräte + ioBroker + HomeAssistant – GitHub / Sponsors / PayPal / ☕️

Cash
Beiträge: 1184
Registriert: 09.01.2016, 17:42
Wohnort: Sauerland
Hat sich bedankt: 1 Mal
Danksagung erhalten: 1 Mal

Re: [GELÖST] stack overflow in PushVar [iseESPexec.cpp:166]

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

Re: [GELÖST] stack overflow in PushVar [iseESPexec.cpp:166]

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...

Antworten

Zurück zu „RaspberryMatic“