NEWS
Node-Red Deployment Probleme *** Gelöst ***
-
Hallo Tom,
die verlorene Verbindung ist die Websocket-Verbindung, mit der node-red die Debug-Informationen vom Serverprozess an den Browser sendet. Soweit mit dem Netz keine Probleme existieren und keine Proxy-Server dazwischen sind, ist dies meistens ein Zeichen dafür, dass der node-red Prozess abgestützt ist. Dieser wird vom node-red-Adapter ein paar Sekunden später neu gestartet und ist dann wieder da.
Wichtig wäre es zunächst einmal zu klären, ob dies bei dir die Ursache ist und wenn ja warum der Prozess abstützt.
Die log-Ausgaben von node-red werden in das Log von ioBroker umgeleitet. Sie werden jedoch nur dann angezeigt, wenn im iobroker auf dem Reiter Instanzen bei node-red die Log-Stufe auf debug steht.
Kannst du das mal einschalten und dann im Reiter Log die Ausgaben beobachten?
Viele Grüße
Markus
-
Auch RAM auf dem Rechner/banana/Pi beobachten.
-
So ich hab nun den Node-Red Start beobachtet. Keine Auffälligkeiten beim Start.
Ich vermute, dass das an der Node "node-red-node-piface" liegt.
Ich bekomme die Flows nur händisch nach mehrfachem Versuch ans laufe, indem ich einzelne Nodes des Flows ändere und neu "deploye". Dann läuft alles durch.
Da ich eine Heizungsteuerung realisieren möchte - mit Piface Board - ist das ein KO-Kriterium für einen produktiven Betrieb. Am Speicher liegt es nicht - ich habe ca. 300 MB frei und die CPU-Last ist bei ca. 30%.
Beim Deploy der Änderungen kommen folgende Logs:
- node-red-0 2016-01-29 17:08:28 debug 29 Jan 17:08:28 - [info] [mqtt-broker:979509a3.e9ffb] Connected to broker: mqtt://localhost:1883
node-red-0 2016-01-29 17:08:28 debug 29 Jan 17:08:28 - [info] serial port /dev/ttyUSB0 opened at 9600 baud 8N1 node-red-0 2016-01-29 17:08:28 debug 29 Jan 17:08:28 - [info] Started flows node-red-0 2016-01-29 17:08:28 debug 29 Jan 17:08:28 - [info] [inject:Alle 10 Sekunden ] repeat = 10000 node-red-0 2016-01-29 17:08:26 debug 29 Jan 17:08:26 - [info] [inject:Reset 00:00 Uhr] crontab = 00 00 * * * node-red-0 2016-01-29 17:08:19 info Save /opt/iobroker/iobroker-data/node-red/flows.json node-red-0 2016-01-29 17:08:19 debug 29 Jan 17:08:19 - [info] Starting flows node-red-0 2016-01-29 17:08:19 debug 29 Jan 17:08:19 - [info] Missing type registered: rpi-piface out node-red-0 2016-01-29 17:08:19 debug 29 Jan 17:08:19 - [info] Missing type registered: rpi-piface in node-red-0 2016-01-29 17:08:19 debug 29 Jan 17:08:19 - [info] - rpi-piface out node-red-0 2016-01-29 17:08:19 debug 29 Jan 17:08:19 - [info] - rpi-piface in node-red-0 2016-01-29 17:08:19 debug 29 Jan 17:08:19 - [info] Waiting for missing types to be registered: node-red-0 2016-01-29 17:08:18 debug 29 Jan 17:08:18 - [info] Server now running at [http://127.0.0.1:1880/](http://127.0.0.1:1880/) node-red-0 2016-01-29 17:08:18 debug 29 Jan 17:08:18 - [info] Flows file : /opt/iobroker/iobroker-data/node-red/flows.json node-red-0 2016-01-29 17:08:18 debug 29 Jan 17:08:18 - [info] User directory : /opt/iobroker/iobroker-data/node-red/ node-red-0 2016-01-29 17:08:18 debug 29 Jan 17:08:18 - [info] Settings file : /opt/iobroker/iobroker-data/node-red/settings.js node-red-0 2016-01-29 17:08:09 debug 29 Jan 17:08:09 - [info] Loading palette nodes node-red-0 2016-01-29 17:08:09 debug 29 Jan 17:08:09 - [info] Node.js version: v0.12.6 node-red-0 2016-01-29 17:08:09 debug 29 Jan 17:08:09 - [info] Node-RED version: v0.12.5 node-red-0 2016-01-29 17:08:09 debug =================== node-red-0 2016-01-29 17:08:09 debug Welcome to Node-RED node-red-0 2016-01-29 17:08:09 debug node-red-0 2016-01-29 17:08:05 info Starting node-red: –max-old-space-size=128 /opt/iobroker/node_modules/iobroker.node-red/node_modules/node-red/red.js -v --settings /opt/iobroker/iobroker-data/node-red/settings.js node-red-0 2016-01-29 17:08:00 info node-red exited with 1 node-red-0 2016-01-29 17:08:00 debug at Timer.listOnTimeout (timers.js:119:15) node-red-0 2016-01-29 17:08:00 debug at null._onTimeout (/opt/iobroker/node_modules/iobroker.node-red/node_modules/node-red/node_modules/node-red-node-serialport/25-serial.js:146:38) node-red-0 2016-01-29 17:08:00 debug at SerialInNode.Node.send (/opt/iobroker/node_modules/iobroker.node-red/node_modules/node-red/red/nodes/Node.js:118:26) node-red-0 2016-01-29 17:08:00 debug at Object.getNode [as get] (/opt/iobroker/node_modules/iobroker.node-red/node_modules/node-red/red/nodes/flows/index.js:130:50) node-red-0 2016-01-29 17:08:00 debug 29 Jan 17:08:00 - TypeError: Cannot read property 'getNode' of undefined node-red-0 2016-01-29 17:08:00 debug 29 Jan 17:08:00 - Uncaught Exception: node-red-0 2016-01-29 17:07:59 info Save /opt/iobroker/iobroker-data/node-red/flows.json
-
@tom57:-
node-red-0 2016-01-29 17:08:00 debug at SerialInNode.Node.send (/opt/iobroker/node_modules/iobroker.node-red/node_modules/node-red/red/nodes/Node.js:118:26)
node-red-0 2016-01-29 17:08:00 debug at Object.getNode [as get] (/opt/iobroker/node_modules/iobroker.node-red/node_modules/node-red/red/nodes/flows/index.js:130:50)
node-red-0 2016-01-29 17:08:00 debug 29 Jan 17:08:00 - TypeError: Cannot read property 'getNode' of undefined
node-red-0 2016-01-29 17:08:00 debug 29 Jan 17:08:00 - Uncaught Exception:
node-red-0 2016-01-29 17:07:59 info Save /opt/iobroker/iobroker-data/node-red/flows.json
@tom57:-
node-red-0 2016-01-29 17:08:19 debug 29 Jan 17:08:19 - [info] Missing type registered: rpi-piface out
node-red-0 2016-01-29 17:08:19 debug 29 Jan 17:08:19 - [info] Missing type registered: rpi-piface in
node-red-0 2016-01-29 17:08:19 debug 29 Jan 17:08:19 - [info] - rpi-piface out
node-red-0 2016-01-29 17:08:19 debug 29 Jan 17:08:19 - [info] - rpi-piface in
node-red-0 2016-01-29 17:08:19 debug 29 Jan 17:08:19 - [info] Waiting for missing types to be registered: `
https://www.npmjs.com/package/node-red-node-piface
/opt/iobroker/node_modules/iobroker.node-red iobroker stop node-red.0 npm i --unsafe-perm node-red-node-piface iobroker start node-red.0
/opt/iobroker/node_modules/iobroker.node-red# iobroker stop node-red.0 npm i --unsafe-perm node-red@0.13.1 iobroker start node-red.0 ```` `
-
-
Hallo Markus,
vielen Dank für Deine Hilfe.
zu (1) - ja war alles installiert
zu (2) - habe ich ausgeführt keine Änderung
zu (3) - habe nun Version 13.1 von node-red installiert:
So wie es aussieht sind nun beim Neustart alle Flows aktiv - das war mir am Wichtigsten.
Ich werde dies am Samstag noch einmal verifizieren.
Die Meldung 'Waiting for missing types to be registered:' erscheint nachwievor.
Wie hast Du die Node für PIface installiert? Über den Parameter im Node-red Adapter im ioBroker oder direkt per npm? Welche node.js Version setzt Du ein?
Die andere Fehlermeldung 'Uncaught Exception:' scheint verschwunden mit der neuen node-red Version.
Meine Deployment-Probleme bei Änderungen sind nachwievor da - (Error: no response from server)
Dh. die blauen Punkte für geänderte nodes verschwinden nicht - aber:
Bei einem Refresh der Seite im Browser sind die Änderungen dann doch deployed.
Hast Du eine Idee woran das liegen könnte (Timing Parameter ?)
Viele Grüße
Thomas
-
Hallo Thomas,
ich hab selbst keine piface-Boards und deswegen selbst den Node nicht installiert. Ich kann somit nur versuchen, mögliche Ursachen direkt aus dem Adapter-Code auf github zu suchen.
Ich selbst hab node.js 4.2.6 installiert. Ich glaube aber nicht, dass hier die Node-Version relevant ist.
Ich hab mir den Node mal etwas genauer angesehen. Der Node greift an mehren Stellen über das exec-Kommando auf das Programm gpio zu. Unter anderem auch direkt beim Start des Nodes.
Ich hatte vor ein paar Wochen Probleme mit child_proces.exec, was bei mir auch sporadisch zu Abstützen des node-Prozesses von node-red mit Uncaught Exception geführt hat.
Tauchen bei dir im Log noch Einträge mit Uncaught Exception auf?
-
Hallo Markus,
mit der Node-Red Version 13.1 laufen die Flows und Nodes stabil. Auch der Neustart des Iobrokers bzw. Reboot des PI's stellen kein Problem mehr da. –> Das ist sehr gut.
Die Version 13.1 hat noch ein paar Funktionserweiterungen. Z.B. beim Inject für Flows auch Globale Varianten verwenden zu können. Dass passt gut.
Die Uncaught Exception Fehler sind weg !!
Funktional läuft nun alles sauber - nur die Deployment-Probleme bleiben übrig.
Ich hab noch eine Frage: Kennst Du eine Lösung um globale Variablen (context.global …) bei Neustart bzw. beim neuen Deployment zu sichern bzw. beim Neustart auf die alten Werte zu setzten?
Ich bin dabei die Anwendung aktuell auf zwei PI's zu verteilen. Eine für die Heizungssteuerung mit Node-red, OWFS,MQTT und PI-Face und den Historian und VIS auf den anderen PI zu übernehmen. Dann bau ich die Heizungssteuerung eventuell ganz neu auf und schau mal ob der Deploymentfehler weg ist.
Danke für Deine Unterstützung.
Grüße
Thomas
-
Hallo Thomas,
wenn das soweit läuft und weder Abstütze noch Fehlermeldungen auftreten fällt mir jetzt auch nichts weiter ein. Es kann schon sein, dass die exec-Aufrufe für jeden piFaces-Adapter nach dem Deploy dafür führen, dass die Socket-Verbindung kurzzeitig abbricht.
Warum hier gpio über die Kommandoschnittstelle aufgerufen wird statt die APIs direkt anzusprechen erschließt sich mir nicht. Aber es ist halt so.
Die Inhalte vom context-Objekt persistent zu speichern ist erstmal nicht vorgesehen. Sie liegen im Hauptspeicher und sind weg, wenn der Node-Prozess beendet wird oder auch wenn ein Deployment durchgeführt wird. Man müsste die Objekte halt zusätzlich zu einer persistenten Stelle ausleiten (json-Datei, Datenbank usw.) und nach dem Neustart durch einen automatisch startenden Flow wieder einlesen lassen. Die einzig persistente Speichermöglichkeit ist beim Pi erstmal nur die SD-Karte (falls man keine zusätzliche HDD angeschlossen hat) und die mag es halt nicht, wenn immer die gleichen Speicherstellen überschrieben werden.
-
Hallo Markus,
ja das war auch mein Kenntnisstand. Mein PI läuft mit USB-Stick - SD-Karte nur zum Booten.
json-Datei hatte ich auch vorgesehen.
Ich habe aber gerade einen anderen Post von Dir gefunden, zum Abfragen von ioBroker states in Flows.
Das werde ich mal ausbrobieren.
9054_abwesend.jpg
9054_anwesend.jpg -
Hallo,
hab nun die die aktuelle Node-red Version 0.13.2 installiert.
Damit sind meine Deployment-Probleme mit "Error: connection to server lost" auch endlich gelöst.
cd /opt/iobroker/node_modules/iobroker.node-red iobroker stop node-red.0 npm i --unsafe-perm node-red@0.13.2 iobroker start node-red.0
Es läuft nun alles stabil….