Node-red crasht - restart duaert ewig

Hallo Leute

Ich hoffe, ihr habt mir einen Tipp. Habe hier ein paar schöne Node-red flows auf meinem Raspi mit homegear. Unteranderem binde ich einen Max! Taster ein, der mir meinen Sonos One steuert. Oder ich schalte per Max! die Philips Hue Lampen ein.
Wenn ich nun einen Slider im Node-red UI zu schnell bewege passiert, dass Node-red plötzlich crasht!
In der Node-red UI steht dann “Connection Loast”. Im Node-red Flow Editor steht nix, aber es reagiert auch nichts mehr.

Leider konnte ich bei Tante Goggle nix schalues zu Crahs logs finden. Wisst ihr, wo ich infos zu den Crashes finden könnte? Oder wie ich sonst der Crash Ursache auf den Grund gehen kann?

45

Sers,

node-red Version? nodejs Version? Wie findet die Verbindung zwischen node-red und homegear statt?
Was sagt das node-red log wenn node-red crasht?

Gruß,
Patrik

Node-RED version: v0.19.4
Node.js version: v8.12.0
Beide Services laufen auf dem gleichen Raspi, die Verbindung findet via MQTT statt.
Log konnte ich leider keines finden. Wo müsste das sein?

https://nodered.org/docs/hardware/raspberrypi#running-node-red

Homegear läuft währenddessen weiter, oder? Das scheint mir irgendwie ein node-red Problem zu sein. Dein “Connection Lost” im dashboard ist nur die Meldung, dass node-red im Hintergrund nicht erreicht werden konnte. Das kann auch an einer (schlechten) WLAN-Verbindung liegen.

Was sagt /var/log/homegear/homegear.log zu diesen Zeitpunkt?

Ja, Node-red schient weiter zu laufen, ist per Web aber nicht zu erreichen. Wenn ich die Max! Taster drücke, reagieren die Hue Lampen nicht mehr.

Hier das Log. Darin steht auch noch etwas von Smappee, dies läuft aber nicht.

TuneIn Station ID:109641
[ '##RESOURCETITLE##', 284 ]
16 Nov 19:50:15 - [error] [ui_text:Artist] TypeError: Cannot read property 'update' of null
16 Nov 19:50:15 - [error] [ui_template:AlbumArt] TypeError: Cannot read property 'update' of null
16 Nov 19:52:17 - [info] Stopping flows
16 Nov 19:52:18 - [info] [device-config:Smappee] Disconnected from: ws://192.168.101.16:1884/mqtt
16 Nov 19:52:18 - [info] [mqtt-broker:febbade0.51b9] Disconnected from broker: mqtt://localhost:1883
16 Nov 19:52:18 - [info] Stopped flows
16 Nov 19:52:18 - [info] Starting flows
16 Nov 19:52:20 - [info] Started flows
16 Nov 19:52:22 - [info] [mqtt-broker:febbade0.51b9] Connected to broker: mqtt://localhost:1883
16 Nov 19:54:26 - [info] Stopping flows
16 Nov 19:54:27 - [info] [device-config:Smappee] Disconnected from: ws://192.168.101.16:1884/mqtt
16 Nov 19:54:27 - [info] [mqtt-broker:febbade0.51b9] Disconnected from broker: mqtt://localhost:1883
16 Nov 19:54:27 - [info] Stopped flows
16 Nov 19:54:27 - [info] Starting flows
16 Nov 19:54:28 - [info] Started flows
16 Nov 19:54:28 - [info] [mqtt-broker:febbade0.51b9] Connected to broker: mqtt://localhost:1883
16 Nov 19:55:04 - [info] Stopping flows
16 Nov 19:55:04 - [info] [device-config:Smappee] Disconnected from: ws://192.168.101.16:1884/mqtt
16 Nov 19:55:05 - [info] [mqtt-broker:febbade0.51b9] Disconnected from broker: mqtt://localhost:1883
16 Nov 19:55:05 - [info] Stopped flows
16 Nov 19:55:05 - [info] Starting flows
16 Nov 19:55:06 - [info] Started flows
16 Nov 19:55:09 - [info] [mqtt-broker:febbade0.51b9] Connected to broker: mqtt://localhost:1883

Hmm… das ist wirklich sehr node-red spezifisch und hat jetzt nicht wirklich was mit homegear zu tun :wink:

Wie oft hast du da deployed? Weil wenn du einen full-deploy machst, werden auch alle Verbindungen neu aufgebaut. Das ist das, was man da im log sieht - allerdings natürlich nicht jede Sekunde, außer du hast so oft deployed.

Werd mal das Smappee los… meine Vermutung ist, dass deswegen node-red immer wieder neu startet.
Eventuell siehst du mehr, wenn du per Terminal node-red stops (siehe link von eben) und dann einfach mal mit dem user pi node-red eingibst. Dann wird node-red nicht im Hintergrund ausgeführt, sondern in deinem Terminal.

Das habe ich befürchtet. Ich kenne aber kein Besseres Forum wie das hier :star_struck:
Laut Terminal läuft Node-red, doch ich erreiche es nicht via Web. Kann ich die Smappee und die anderen nciht verwendeten Nodes einfach via Terminal löschen?

Ja.

Bist du da auf einem pi? Wenn ja:

ssh pi@raspberrypi.local
cd ~/.node-red/
npm remove node-red-contrib-smapee (oder wie auch immer der heißt)

Ist es normal, dass node-red-stop etwa eine Minute dauert, bis es ausgeführt ist?

Ich habe probehalber npm view eingegeben, dann kam folgene Meldung:

npm ERR! Invalid package.json

npm ERR! A complete log of this run can be found in:
npm ERR!     /home/pi/.npm/_logs/2018-11-16T19_59_22_536Z-debug.log

Im Log steht:

0 info it worked if it ends with ok
1 verbose cli [ '/usr/bin/node', '/usr/bin/npm', 'view' ]
2 info using npm@6.4.1
3 info using node@v8.12.0
4 verbose config Skipping project config: /home/pi/.npmrc. (matches userconfig)
5 verbose stack Error: Invalid package.json
5 verbose stack     at /usr/lib/node_modules/npm/lib/view.js:98:30
5 verbose stack     at ReadFileContext.<anonymous> (/usr/lib/node_modules/npm/node_modules/read-package-json/read-json.js:124:21)
5 verbose stack     at ReadFileContext.callback (/usr/lib/node_modules/npm/node_modules/graceful-fs/graceful-fs.js:78:16)
5 verbose stack     at FSReqWrap.readFileAfterOpen [as oncomplete] (fs.js:420:13)
6 verbose cwd /home/pi/.node-gyp/8.12.0/include/node
7 verbose Linux 4.14.70+
8 verbose argv "/usr/bin/node" "/usr/bin/npm" "view"
9 verbose node v8.12.0
10 verbose npm  v6.4.1
11 error Invalid package.json
12 verbose exit [ 1, true ]

Ich glaube ich habe hier ein paar generelle NPM Probleme:

pi@gear:~/.node-gyp/8.12.0/include/node $ npm install -g node-red-admin
npm WARN deprecated bcrypt@0.8.7: bcrypt < v2.0.0 is susceptible to bcrypt wrap-around bug. Upgrade to bcrypt >= v2.0.0 for improved support for newer bcrypt hashes
npm WARN deprecated node-uuid@1.4.8: Use uuid module instead
npm WARN deprecated hoek@2.16.3: This version is no longer maintained. Please upgrade to the latest version.
npm WARN deprecated boom@2.10.1: This version is no longer maintained. Please upgrade to the latest version.
npm WARN deprecated cryptiles@2.0.5: This version is no longer maintained. Please upgrade to the latest version.
npm WARN checkPermissions Missing write access to /usr/lib/node_modules
npm ERR! path /usr/lib/node_modules
npm ERR! code EACCES
npm ERR! errno -13
npm ERR! syscall access
npm ERR! Error: EACCES: permission denied, access '/usr/lib/node_modules'
npm ERR!  { Error: EACCES: permission denied, access '/usr/lib/node_modules'
npm ERR!   stack: 'Error: EACCES: permission denied, access \'/usr/lib/node_modules\'',
npm ERR!   errno: -13,
npm ERR!   code: 'EACCES',
npm ERR!   syscall: 'access',
npm ERR!   path: '/usr/lib/node_modules' }
npm ERR! 
npm ERR! The operation was rejected by your operating system.
npm ERR! It is likely you do not have the permissions to access this file as the current user
npm ERR! 
npm ERR! If you believe this might be a permissions issue, please double-check the
npm ERR! permissions of the file and its containing directories, or try running
npm ERR! the command again as root/Administrator (though this is not recommended).

npm ERR! A complete log of this run can be found in:
npm ERR!     /home/pi/.npm/_logs/2018-11-16T20_11_07_126Z-debug.log
pi@gear:~/.node-gyp/8.12.0/include/node $

npm bitte nur in ~/.node-red/ ausführen.

Wie hast du da alles installiert?

Wenn du mit node-red-stop node-red beendet hast und dann mit node-red im Terminal gestartet hast, was passiert?

pi@gear:~/.node-red $ node-red
16 Nov 21:15:06 - [info] 

Welcome to Node-RED
===================

16 Nov 21:15:06 - [info] Node-RED version: v0.19.4
16 Nov 21:15:06 - [info] Node.js  version: v8.12.0
16 Nov 21:15:06 - [info] Linux 4.14.70+ arm LE
16 Nov 21:15:11 - [info] Loading palette nodes
[info] "2018-11-16T20:15:33.499Z"  'Loading knx: KNXnet/IP protocol implementation for Node(>=4.x), version: 2.3.1'
16 Nov 21:15:43 - [info] Dashboard version 2.9.8 started at /ui
16 Nov 21:15:48 - [info] Settings file  : /home/pi/.node-red/settings.js
16 Nov 21:15:48 - [info] Context store  : 'default' [module=memory]
16 Nov 21:15:48 - [info] User directory : /home/pi/.node-red
16 Nov 21:15:48 - [warn] Projects disabled : set editorTheme.projects.enabled=true to enable
16 Nov 21:15:48 - [info] Flows file     : /home/pi/.node-red/flows_gear.json
16 Nov 21:15:48 - [info] Server now running at http://127.0.0.1:1880/
16 Nov 21:15:48 - [warn] 

---------------------------------------------------------------------
Your flow credentials file is encrypted using a system-generated key.

If the system-generated key is lost for any reason, your credentials
file will not be recoverable, you will have to delete it and re-enter
your credentials.

You should set your own key using the 'credentialSecret' option in
your settings file. Node-RED will then re-encrypt your credentials
file using your chosen key the next time you deploy a change.
---------------------------------------------------------------------

16 Nov 21:15:49 - [info] Starting flows
16 Nov 21:15:55 - [info] Started flows
16 Nov 21:15:56 - [info] [mqtt-broker:febbade0.51b9] Connected to broker: mqtt://localhost:1883

In der letzten Zeile bleibt es nun schon 5 Minuten.
Doch das Web UI läuft wieder.

Hmmm…

node-red “so” ausführen ist das gleiche wie sudo systemctl start nodered und anschließendem node-red-log. Er lädt ja immer die Config aus ~/.node-red/.

Du könntest es nochmal als Dienst starten und dann mal in node-red-log den Start anschauen… ob da etwas anders ist.

Ich konnte nun diverse Nodes uninstallieren. Macht es Sinn Node-red und node.js upzudaten?

16 Nov 22:05:45 - [info] Node-RED version: v0.19.4
16 Nov 22:05:45 - [info] Node.js  version: v8.12.0
16 Nov 22:05:45 - [info] Linux 4.14.70+ arm LE

Du bist schon recht aktuell, ansonsten einfach: https://nodered.org/docs/hardware/raspberrypi#install--upgrade

1 Like

Das Problem schient, dass ich noch Nodes habe, die ich nicht uninstallen kann.
Ich habe es nochmals probiert:

pi@gear:~/.node-red $ sudo npm remove node-red-contrib-smappee
npm WARN node-red-project@0.0.1 No repository field.
npm WARN node-red-project@0.0.1 No license field.

removed 12 packages and audited 866 packages in 126.587s
found 0 vulnerabilities

Scheinbar wurden dadurch diverse Nodes deinstalliert, was ich nicht verstehe:
36

pi@gear:~/.node-red $ node-red
16 Nov 23:00:01 - [info] 

Welcome to Node-RED
===================

16 Nov 23:00:02 - [info] Node-RED version: v0.19.4
16 Nov 23:00:02 - [info] Node.js  version: v8.12.0
16 Nov 23:00:02 - [info] Linux 4.14.70+ arm LE
16 Nov 23:00:07 - [info] Loading palette nodes
16 Nov 23:00:32 - [info] Dashboard version 2.10.1 started at /ui
16 Nov 23:00:36 - [info] Settings file  : /home/pi/.node-red/settings.js
16 Nov 23:00:36 - [info] Context store  : 'default' [module=memory]
16 Nov 23:00:36 - [info] User directory : /home/pi/.node-red
16 Nov 23:00:36 - [warn] Projects disabled : set editorTheme.projects.enabled=true to enable
16 Nov 23:00:36 - [info] Flows file     : /home/pi/.node-red/flows_gear.json
16 Nov 23:00:37 - [info] Server now running at http://127.0.0.1:1880/
16 Nov 23:00:37 - [warn] 

---------------------------------------------------------------------
Your flow credentials file is encrypted using a system-generated key.

If the system-generated key is lost for any reason, your credentials
file will not be recoverable, you will have to delete it and re-enter
your credentials.

You should set your own key using the 'credentialSecret' option in
your settings file. Node-RED will then re-encrypt your credentials
file using your chosen key the next time you deploy a change.
---------------------------------------------------------------------

16 Nov 23:00:38 - [info] Waiting for missing types to be registered:
16 Nov 23:00:38 - [info]  - better-sonos-config
16 Nov 23:00:38 - [info]  - device-config
16 Nov 23:00:38 - [info]  - better-sonos-status
16 Nov 23:00:38 - [info]  - better-sonos-control
16 Nov 23:00:38 - [info]  - aggregated
16 Nov 23:00:38 - [info]  - device

Du solltest die node’s nicht mit sudo installieren, dadurch machst du dir mehr Probleme als dir lieb ist - eventuell das hier jetzt auch dadurch.

Grundliegend: node’s liegen im home-Verzeichnis des Users pi und werden demnach nicht als root (sudo) installiert. Einzig Dinge die global (-g) installiert werden benötigen sudo. Auf dem Pi erledigt das aber das offizielle bash-script sowieso alles für dich.

Google bitte mal “remove missing nodes” im Kontext von node-red. Die musst du im schlimmsten Fall aus deinen .flow-files händisch entfernen.

Eventuell kannst du sie auch mit npm wieder installieren und dann “ordentlich” entfernen.

2 Likes

Hurrah Patrik, es funzt wieder.
Zwar laufen immer noch ein paar altlasten mit, die ich noch nicht bereinigt bekommen habe und die updates spare ich mir auch erstmal noch auf, aber 1000 Dank dir!

1 Like