Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Feature Request: Watchdog #110

Closed
taucher4000 opened this issue Nov 30, 2018 · 11 comments
Closed

Feature Request: Watchdog #110

taucher4000 opened this issue Nov 30, 2018 · 11 comments
Labels
🚀enhancement New feature or request

Comments

@taucher4000
Copy link

Hallo,

leider passiert es bei mir von Zeit-zu-Zeit, dass Node-Red aus noch unbekannten gründen abstürzt. Wäre es nicht super, wenn in RedMatic eine Art Watchdog laufen würde, welcher den NodeRed Dienst überwacht und bei bedarf neu startet?

Gruß

@Hypnos3
Copy link
Contributor

Hypnos3 commented Nov 30, 2018

Hier sollte man zuallererst die Ursache für den Absturz finden.

  • steht was im logfile?
  • hast du mehrere ccu-connection nodes?

Eine Art watchdog könnte man sich über ein ReGa Script zusammenbasteln.

@taucher4000
Copy link
Author

Hi Hypnos3,

heute ist es schon wieder passiert. Die letzten einträge der Log-Datei sehen wie folgt aus:

Nov 30 17:44:09 ccu3 daemon.debug node-red[15057]: [ccu-connection:localhost] publishEvent ["nr_9ee5_BidCos-RF","OEQ0238264:4","PARTY_START_TIME",0]
Nov 30 17:44:09 ccu3 daemon.debug node-red[15057]: [ccu-connection:localhost] publishEvent ["nr_9ee5_BidCos-RF","OEQ0238264:4","PARTY_START_DAY",1]
Nov 30 17:44:09 ccu3 daemon.debug node-red[15057]: [ccu-connection:localhost] publishEvent ["nr_9ee5_BidCos-RF","OEQ0238264:4","PARTY_START_MONTH",1]
Nov 30 17:44:09 ccu3 daemon.debug node-red[15057]: [ccu-connection:localhost] publishEvent ["nr_9ee5_BidCos-RF","OEQ0238264:4","PARTY_START_YEAR",0]
Nov 30 17:44:09 ccu3 daemon.debug node-red[15057]: [ccu-connection:localhost] publishEvent ["nr_9ee5_BidCos-RF","OEQ0238264:4","PARTY_STOP_TIME",0]
Nov 30 17:44:09 ccu3 daemon.debug node-red[15057]: [ccu-connection:localhost] publishEvent ["nr_9ee5_BidCos-RF","OEQ0238264:4","PARTY_STOP_DAY",1]
Nov 30 17:44:09 ccu3 daemon.debug node-red[15057]: [ccu-connection:localhost] publishEvent ["nr_9ee5_BidCos-RF","OEQ0238264:4","PARTY_STOP_MONTH",1]
Nov 30 17:44:09 ccu3 daemon.debug node-red[15057]: [ccu-connection:localhost] publishEvent ["nr_9ee5_BidCos-RF","OEQ0238264:4","PARTY_STOP_YEAR",0]
Nov 30 17:44:09 ccu3 daemon.debug node-red[15057]: [ccu-connection:localhost]     > BidCos-RF system.multicall ["","","","","","","","","","","","","","",""]
Nov 30 17:44:19 ccu3 daemon.debug node-red[15057]: [ccu-connection:localhost] rpcCheckInit BidCos-RF 9 60
Nov 30 17:44:22 ccu3 daemon.debug node-red[15057]: [ccu-connection:localhost] getRegaVariables
Nov 30 17:44:22 ccu3 daemon.debug node-red[15057]: [ccu-connection:localhost] getRegaPrograms
Nov 30 17:44:24 ccu3 daemon.debug node-red[15057]: [ccu-connection:localhost] rpc < BidCos-RF system.multicall [[{"methodName":"event","params":["nr_9ee5_BidCos-RF","OEQ0612882:0","CONFIG_PENDING",
true]}]]
Nov 30 17:44:24 ccu3 daemon.debug node-red[15057]: [ccu-connection:localhost] publishEvent ["nr_9ee5_BidCos-RF","OEQ0612882:0","CONFIG_PENDING",true]
Nov 30 17:44:24 ccu3 daemon.debug node-red[15057]: [ccu-connection:localhost]     > BidCos-RF system.multicall [""]
Nov 30 17:44:24 ccu3 daemon.debug node-red[15057]: [ccu-connection:localhost] rpc < BidCos-RF system.multicall [[{"methodName":"updateDevice","params":["nr_9ee5_BidCos-RF","OEQ0612882:4",1]}]]
Nov 30 17:44:24 ccu3 daemon.err node-red: 30 Nov 17:44:24 - [red] Uncaught Exception:
Nov 30 17:44:24 ccu3 daemon.err node-red: 30 Nov 17:44:24 - TypeError: params is not iterable
Nov 30 17:44:24 ccu3 daemon.err node-red:     at Object.updateDevice (/usr/local/addons/redmatic/var/node_modules/node-red-contrib-ccu/nodes/ccu-connection.js:1274:38)
Nov 30 17:44:24 ccu3 daemon.err node-red:     at params.(anonymous function).forEach.call (/usr/local/addons/redmatic/var/node_modules/node-red-contrib-ccu/nodes/ccu-connection.js:1381:61)
Nov 30 17:44:24 ccu3 daemon.err node-red:     at Array.forEach (<anonymous>)
Nov 30 17:44:24 ccu3 daemon.err node-red:     at Object.system.multicall (/usr/local/addons/redmatic/var/node_modules/node-red-contrib-ccu/nodes/ccu-connection.js:1354:31)
Nov 30 17:44:24 ccu3 daemon.err node-red:     at Server.servers.(anonymous function).on (/usr/local/addons/redmatic/var/node_modules/node-red-contrib-ccu/nodes/ccu-connection.js:1076:48)
Nov 30 17:44:24 ccu3 daemon.err node-red:     at emitThree (events.js:136:13)
Nov 30 17:44:24 ccu3 daemon.err node-red:     at Server.emit (events.js:217:7)
Nov 30 17:44:24 ccu3 daemon.err node-red:     at Server.handleCall (/usr/local/addons/redmatic/var/node_modules/node-red-contrib-ccu/node_modules/binrpc/lib/server.js:79:24)
Nov 30 17:44:24 ccu3 daemon.err node-red:     at Socket.<anonymous> (/usr/local/addons/redmatic/var/node_modules/node-red-contrib-ccu/node_modules/binrpc/lib/server.js:58:22)
Nov 30 17:44:24 ccu3 daemon.err node-red:     at emitOne (events.js:116:13)

Leider kann ich dem nicht viel entnehmen. Du evtl.? Ich habe nur eine CCU-Connection node aktiv.

@Hypnos3
Copy link
Contributor

Hypnos3 commented Nov 30, 2018

Ja,
den gleichen Fehler hatte ich auch und dieser ist in der aktuellen Version behoben.

Entweder du aktualisierst RedMatic über die WebUI komplett oder nur node-red-contrib-ccu.

Um nur node-red-contrib-ccu zu aktualisieren folgendes vorgehen:
image

danach auf update
image

wenn das fertig ist musst du jedoch Node-Red neu starten.

@hobbyquaker
Copy link
Member

Hab nun einen automatischen Neustart von Node-RED im Falle eines Absturzes eingebaut. Aber dieses Feature bitte nicht missverstehen ;) Natürlich darf Node-RED nicht abstürzen und wenn es das tut müssen wir die Ursache finden und beheben. In der RedMatic UI (CCU WebUI Systemeinstellungen -> RedMatic) wird nun angezeigt wie oft so ein automatischer Neustart stattgefunden hat.

@Hypnos3
Copy link
Contributor

Hypnos3 commented Dec 1, 2018

Gibt es da ein Limit? Ich stell mir gerade eine Endlosschleife vor. Ich hatte schon mal einen kaputten Flow, der Node-Red beim starten zum Asturz gebracht hatte. Es sollte höchstens ein neustart innerhalb einer halben Stunde stattfinden oder was Grundlegenderes ist kaputt.

@psi-4ward
Copy link
Member

node-red restart hat ja auch einfluss auf de dutycycle. das könnte böse überraschungen geben.

wenigestens nen sleep 5 rein oder so

@hobbyquaker
Copy link
Member

hobbyquaker commented Dec 1, 2018

mja, da stimm ich euch zu, war vielleicht keine so spitzen idee das ohne limits einzubauen. ich werde es mal auf eine konfigurierbare anzahl begrenzbar und abschaltbar machen, besser ist das. 5 Sekunden sleep bringts glaub ich nicht so, das Node-RED braucht eh ziemlich lang für den neustart und wenn jemand Flows hat die beim start den Dutycycle hochtreiben würde man das eher in der Größenordnung 15-30 Minuten mitigaten. Aber von solchen Flows (die viele setValue beim Start durchführen) ist auch abzuraten.

@hobbyquaker hobbyquaker reopened this Dec 1, 2018
@hobbyquaker
Copy link
Member

noch ne idee: man sollte beim Einsatz dieses features dazu raten einen flow zu bauen der beim start ne Pushover/Email oder so sendet, damit man es wenigstens mitbekommt dass da was schiefläuft.

@Hypnos3
Copy link
Contributor

Hypnos3 commented Dec 1, 2018

Ja, sowas hab ich am Start.

Hier gleich ein beispiel:
image

[{"id":"cab4b267.9480d","type":"delay","z":"a258f3d1.6da17","name":"","pauseType":"delay","timeout":"5","timeoutUnits":"seconds","rate":"1","nbRateUnits":"1","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"x":780,"y":480,"wires":[["66b982b.b728d7c","1dd1cb9a.84d4a4"]]},{"id":"ba1ca2de.fc4bf","type":"comment","z":"a258f3d1.6da17","name":"Systemfunktionen - Start","info":"","x":140,"y":40,"wires":[]},{"id":"66b982b.b728d7c","type":"change","z":"a258f3d1.6da17","name":"RUNLEVEL=3 / RUNNING=true","rules":[{"t":"set","p":"#:(memory)::RUNLEVEL","pt":"global","to":"3","tot":"num"},{"t":"set","p":"#:(memory)::RUNNING","pt":"global","to":"true","tot":"bool"},{"t":"set","p":"payload","pt":"msg","to":"3","tot":"num"}],"action":"","property":"","from":"","to":"","reg":false,"x":1070,"y":480,"wires":[["e827db51.0ab838","d3543900.4d1718"]]},{"id":"fc1672a0.1b6ed","type":"change","z":"a258f3d1.6da17","name":"RUNNING=false / RUNLEVEL=0","rules":[{"t":"set","p":"#:(memory)::RUNNING","pt":"global","to":"false","tot":"bool"},{"t":"set","p":"#:(memory)::RUNLEVEL","pt":"global","to":"0","tot":"num"}],"action":"","property":"","from":"","to":"","reg":false,"x":450,"y":100,"wires":[["155bb4d1.2558cb"]]},{"id":"294b6397.84943c","type":"link out","z":"a258f3d1.6da17","name":"chg-Startup-RunLevel1","links":["d9fbc18e.7df69"],"x":1275,"y":220,"wires":[]},{"id":"e827db51.0ab838","type":"link out","z":"a258f3d1.6da17","name":"chg-Startup-RunLevel3","links":["c2700f38.8baf2","2509748.1503e8c","334a5a27.1c55b6","cfc5366c.37c388"],"x":1275,"y":480,"wires":[]},{"id":"5e8e8049.525a7","type":"delay","z":"a258f3d1.6da17","name":"","pauseType":"delay","timeout":"5","timeoutUnits":"seconds","rate":"1","nbRateUnits":"1","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"x":780,"y":420,"wires":[["cab4b267.9480d","be39b899.534578"]]},{"id":"39805c97.f8e0d4","type":"link out","z":"a258f3d1.6da17","name":"chg-Startup-RunLevel2","links":["8158c97c.7c9478"],"x":1275,"y":420,"wires":[]},{"id":"b9336030.cdf32","type":"change","z":"a258f3d1.6da17","name":"RUNLEVEL=1","rules":[{"t":"set","p":"#:(memory)::RUNLEVEL","pt":"global","to":"1","tot":"num"},{"t":"set","p":"payload","pt":"msg","to":"1","tot":"num"}],"action":"","property":"","from":"","to":"","reg":false,"x":1020,"y":220,"wires":[["5e8e8049.525a7","294b6397.84943c","d3543900.4d1718","197916ec.24a339"]]},{"id":"5f4fac47.824ec4","type":"comment","z":"a258f3d1.6da17","name":"chg-Startup-RunLevel1","info":"","x":1520,"y":220,"wires":[]},{"id":"1c2fad16.462943","type":"comment","z":"a258f3d1.6da17","name":"chg-Startup-RunLevel2","info":"","x":1540,"y":420,"wires":[]},{"id":"6a12612e.1aec8","type":"comment","z":"a258f3d1.6da17","name":"chg-Startup-RunLevel3","info":"","x":1540,"y":480,"wires":[]},{"id":"be39b899.534578","type":"change","z":"a258f3d1.6da17","name":"RUNLEVEL = 2","rules":[{"t":"set","p":"#:(memory)::RUNLEVEL","pt":"global","to":"2","tot":"num"},{"t":"set","p":"payload","pt":"msg","to":"2","tot":"num"}],"action":"","property":"","from":"","to":"","reg":false,"x":1020,"y":420,"wires":[["39805c97.f8e0d4","d3543900.4d1718"]]},{"id":"d3543900.4d1718","type":"debug","z":"a258f3d1.6da17","name":"System Start","active":true,"tosidebar":false,"console":true,"tostatus":false,"complete":"payload","x":1340,"y":360,"wires":[]},{"id":"bb7a8bcb.11e758","type":"inject","z":"a258f3d1.6da17","name":"","topic":"startup","payload":"start","payloadType":"str","repeat":"","crontab":"","once":true,"onceDelay":"0.001","x":140,"y":100,"wires":[["fc1672a0.1b6ed"]]},{"id":"d618593f.dd0b28","type":"change","z":"a258f3d1.6da17","name":"eMail Message","rules":[{"t":"set","p":"subject","pt":"msg","to":"Restart","tot":"str"},{"t":"set","p":"payload","pt":"msg","to":"\"Neustart der Zentrale (Node-Red)!! \" & $$.payload","tot":"jsonata"}],"action":"","property":"","from":"","to":"","reg":false,"x":1580,"y":280,"wires":[["dc7ea158.18c0d"]]},{"id":"155bb4d1.2558cb","type":"unsafe-function","z":"a258f3d1.6da17","name":"check Date","func":"if (Date.now() < 1500000000000 ) {\n    return [null, msg];\n}\nreturn msg;","outputs":2,"noerr":0,"x":530,"y":220,"wires":[["47804b32.089464"],["1acd1392.8b493c"]]},{"id":"1acd1392.8b493c","type":"delay","z":"a258f3d1.6da17","name":"","pauseType":"random","timeout":"8","timeoutUnits":"seconds","rate":"1","nbRateUnits":"1","rateUnits":"second","randomFirst":"5","randomLast":"12","randomUnits":"seconds","drop":false,"x":520,"y":300,"wires":[["155bb4d1.2558cb"]]},{"id":"47804b32.089464","type":"delay","z":"a258f3d1.6da17","name":"","pauseType":"delay","timeout":"500","timeoutUnits":"milliseconds","rate":"1","nbRateUnits":"1","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"x":770,"y":220,"wires":[["b9336030.cdf32"]]},{"id":"1dd1cb9a.84d4a4","type":"delay","z":"a258f3d1.6da17","name":"","pauseType":"delay","timeout":"10","timeoutUnits":"seconds","rate":"1","nbRateUnits":"1","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"x":780,"y":540,"wires":[["bacca792.36af38"]]},{"id":"8dc03e30.6fa58","type":"link out","z":"a258f3d1.6da17","name":"chg-Startup-RunLevel4","links":["9ceac20c.33d19","f98c6394.b06e1"],"x":1275,"y":540,"wires":[]},{"id":"bacca792.36af38","type":"change","z":"a258f3d1.6da17","name":"RUNLEVEL=4","rules":[{"t":"set","p":"#:(memory)::RUNLEVEL","pt":"global","to":"4","tot":"num"},{"t":"set","p":"payload","pt":"msg","to":"4","tot":"num"}],"action":"","property":"","from":"","to":"","reg":false,"x":1020,"y":540,"wires":[["8dc03e30.6fa58","d3543900.4d1718"]]},{"id":"1b30d1d3.3b1cce","type":"comment","z":"a258f3d1.6da17","name":"chg-Startup-RunLevel4","info":"","x":1540,"y":540,"wires":[]},{"id":"197916ec.24a339","type":"exec","z":"a258f3d1.6da17","command":"cat /boot/VERSION | cut -d'=' -f2","addpay":false,"append":"","useSpawn":"false","timer":"5","oldrc":false,"name":"get firmware","x":1330,"y":280,"wires":[["d618593f.dd0b28"],["d618593f.dd0b28"],[]]},{"id":"dc7ea158.18c0d","type":"e-mail","z":"a258f3d1.6da17","server":"smtp.1und1.de","port":"465","secure":true,"name":"","dname":"","x":1770,"y":280,"wires":[]}]

kann gleich mit in die Doku.

@Hypnos3
Copy link
Contributor

Hypnos3 commented Dec 1, 2018

schickt beim Start die aktuelle firmware gleich mit und wartet, wenn der ntp noch nicht bereit ist.

@psi-4ward
Copy link
Member

zwar klever aber geht schon bissi weit für den otto normal user?
vllt ne Servicemeldung in der CCU erzeugen?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
🚀enhancement New feature or request
Development

No branches or pull requests

4 participants