Code: Alles auswählen
Mar 9 00:15:00 homematic-ccu2 local0.err ReGaHss: Error: stack overflow in PushVar [iseESPexec.cpp:162]
Code: Alles auswählen
Feb 22 02:21:56 homematic-ccu2 daemon.info cuxd[277]: save paramsets(/usr/local/addons/cuxd/cuxd.ps) size:3248
Feb 22 04:00:01 homematic-ccu2 cron.info crond[108]: crond: USER root pid 5956 cmd /usr/sbin/logrotate -f /etc/logrotate.conf || logger -p error -t "logrotate" "logrotate aborted with error $?"
Feb 22 04:12:01 homematic-ccu2 cron.info crond[108]: crond: USER root pid 5960 cmd /bin/setHWClock.sh
Feb 22 04:14:01 homematic-ccu2 cron.info crond[108]: crond: USER root pid 5964 cmd /bin/SetInterfaceClock 127.0.0.1:2001
Feb 22 13:21:56 homematic-ccu2 daemon.info cuxd[277]: save paramsets(/usr/local/addons/cuxd/cuxd.ps) size:3194
2 x Cuxd und einmal ein logorate aborted with error. Was das soll weiß ich nicht. Interessierte mich aber eigentlich auch nicht.
Letzte Woche habe ich ein neues Programm geschrieben und erstmals elseif genutzt. Danach hatte ich folgende Fehler:
Code: Alles auswählen
Mar 6 14:44:54 homematic-ccu2 local0.err ReGaHss: Error: stack overflow in PushVar [iseESPexec.cpp:162]
Mar 6 14:44:54 homematic-ccu2 local0.err ReGaHss: Error: stack overflow in PushVar [iseESPexec.cpp:162]
Mar 6 14:44:54 homematic-ccu2 local0.err ReGaHss: Error: IseESP::ScriptRuntimeError: ! +++++ Skript Luftentfeuchter starten +++++ ! Version 1.3 // 04.03.2018 ! +++++++ Variablen +++++++ string CUXD_AN; string CUXD_AUS; string Zeitpunkt_an; string Zeitpunkt_aus; string tmpG
Einen Fehler konnte ich im Script nicht entdecken. Als ich
Code: Alles auswählen
integer tmpF;
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;}
Code: Alles auswählen
if(dom.GetObject("BidCos-RF.MEQ0089736:1.HUMIDITY").Value()>=62){tmpF = 1800;}
if((dom.GetObject("BidCos-RF.MEQ0089736:1.HUMIDITY").Value()>=58) && (dom.GetObject("BidCos-RF.MEQ0089736:1.HUMIDITY").Value()<=61)){tmpF = 3600;}
if((dom.GetObject("BidCos-RF.MEQ0089736:1.HUMIDITY").Value()>=55) && (dom.GetObject("BidCos-RF.MEQ0089736:1.HUMIDITY").Value()<=57)){tmpF = 7200;}
if((dom.GetObject("BidCos-RF.MEQ0089736:1.HUMIDITY").Value()>=50) && (dom.GetObject("BidCos-RF.MEQ0089736:1.HUMIDITY").Value()<=54)){tmpF = 10800;}
if(dom.GetObject("BidCos-RF.MEQ0089736:1.HUMIDITY").Value()<=49) {tmpF = 14400;}
Soweit so gut. Danach ist mir leider aufgefallen das ich noch einen weiteren StackOVerflow hatte und zwar jeweils um 0:15 genau dort läuft das Urlaubsscript aus diesem Forum was seit ich die ccu2 habe fehlerfrei jeden Tag läuft. Hatte den Fehler erstmal igoniert. Ein Fehler von mir...
Das Script prüft jeden Tag ob heute Urlaub ist an Hand einer Stringliste (Systemvariable). Ich hatte nicht eine Fehlerberechnung. Bis auf gestern. Um 0:25 Uhr stellte sich meine Heizung auf Urlaub (zum Glück ist es ja nicht mehr ganz so kalt, so dass es mogens zwar leicht schattig in der Küche und im Bad war aber es wahr auszuhalten). Um 0.25 läuft ein Script welches auf Grund der Änderung des Urlaubsscripts die Heizung umstellt.
Erster Gedanke ich hatte vergestern den letztjährigen Urlaub zu löschen. Das war aber nicht so. Ob ich an dem Tag überhupt Urlaub hatte weiß ich nicht. Es scheint also das durch den Stack Overflow die Berechnung zu dem Ergebnis kam das Urlaub ist.
Ich habe das Urlaubsscript jetzt erstmal deaktiviert und seit dem ist die Log wieder so leer wie vorher (bis auf die 4 Einträge)...
So richtig zufrieden bin ich natürlich nicht. Denn die Urlaubsberechnung brauche ich ja.
Kann mir wer sagen wann es zu diesm Stack Overflow in Pushvar kommt? Was es genau macht? Wie ich es verhindere? Und wo genau der ScriptRuntime Error im elseif Teil lag?
In dem neuen Script bin ich übrigens jetzt auch etwas verschwenderischer mit Scriptvariablen. Ich vermute das ich als die 200er Grenze mittlerweile gerissen habe (was ja nicht das Problem sein sollte). Früher hatte ich alles immer mit tmpX gerarbeitet. Heute nur noch bei wenigen Systemvariablen die für mich zum nachvollziehen vom Script nicht wichtig sind...
Zugriff von aussen schließe ich aus. Andere Server können auch nicht verantwortlich sein. Diesen Fehler habe ich definitv zum ersten mal seit ich das neue Script mit elseif eingesetzt habe. An anderen System habe ich keine Änderungen, updates oder sonstwas verändert...Andere Server sind bei mir einmal ein Raspi mit Homebridge, Ein Raspi mit iobroker und ein Qnap mit ccu-historian. Wie schon geschrieben ich nutze eine ccu2.