BiancoRoyal/node-red-contrib-modbus

Node-RED crash (SIGSEGV) when any writable file is set as the serial device

Matthew-Kirk opened this issue · 6 comments

Which node-red-contrib-modbus version are you using?

5.25.0

What happened?

Version of node.js? (should be >= 16)

v16.16.0

Version of Node-RED? (should be >= 3)

v3.0.2

Version of node-red-contrib-modbus? (should be >= 5)

v5.25.0

What is your platform? (Linux, macOS, ...)

Linux (Balena OS on Raspberry Pi)

Using the official Docker image

What does DEBUG=contribModbus:,modbus-serial node-red -v log? (log files are welcome)

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

20 Jan 10:54:50 - [info] Node-RED version: v3.0.2
20 Jan 10:54:50 - [info] Node.js  version: v16.16.0
20 Jan 10:54:50 - [info] Linux 5.10.95-v8 arm64 LE
20 Jan 10:54:54 - [info] Loading palette nodes
20 Jan 10:54:55 - [debug] Module: node-red-contrib-modbus 5.25.0 /data/node_modules/node-red-contrib-modbus
20 Jan 10:54:55 - [debug] Module: node-red-dashboard 3.3.1 /data/node_modules/node-red-dashboard
20 Jan 10:54:55 - [debug] Module: node-red-contrib-stoptimer-varidelay 0.5.2 /usr/src/node-red/node_modules/node-red-contrib-stoptimer-varidelay
20 Jan 10:55:00 - [info] Dashboard version 3.3.1 started at /ui
20 Jan 10:55:00 - [info] Settings file  : /data/settings.js
20 Jan 10:55:00 - [info] Context store  : 'default' [module=memory]
20 Jan 10:55:00 - [info] User directory : /data
20 Jan 10:55:00 - [warn] Projects disabled : set editorTheme.projects.enabled=true to enable
20 Jan 10:55:00 - [info] Flows file     : /data/flows.json
20 Jan 10:55:00 - [info] Server now running at http://127.0.0.1:1880/
20 Jan 10:55:00 - [debug] loaded flow revision: ca1b2db29b26aac1d5cc662158cbc46c
20 Jan 10:55:00 - [debug] red/runtime/nodes/credentials.load : no user key present
20 Jan 10:55:00 - [debug] red/runtime/nodes/credentials.load : using default key
20 Jan 10:55:00 - [debug] red/runtime/nodes/credentials.load : keyType=system
20 Jan 10:55:00 - [trace] runtime event: {"id":"runtime-state","retain":true}
20 Jan 10:55:00 - [trace] runtime event: {"id":"runtime-deploy","payload":{"revision":"ca1b2db29b26aac1d5cc662158cbc46c"},"retain":true}
20 Jan 10:55:01 - [info] Starting flows
20 Jan 10:55:01 - [debug] red/nodes/flows.start : starting flow : global
20 Jan 10:55:01 - [debug] red/nodes/flows.start : starting flow : 2ce6df32-439c-428e-bc8a-bfc3053d71e7
20 Jan 10:55:01 - [debug] red/nodes/flows.start : starting flow : f2a00bec621417c5
20 Jan 10:55:01 - [trace] [flow:global] start flow [global]
  contribModbus:queue:core queue serial lock command node name: Modbus Server id: 2995c31d.ca614c +0ms
20 Jan 10:55:01 - [info] Started flows
./entrypoint.sh: line 14:     7 Segmentation fault      (core dumped) /usr/local/bin/node $NODEOPTIONS node_modules/node-red/red.js --userDir /data $FLOWS

(excess details like flow logs omitted for brevity as the flow is below, though they can be given if needed)

Flow file

[{"id":"13b3589542b6b0c9","type":"tab","label":"Flow 1","disabled":false,"info":""},{"id":"ec1c1510c31267ba","type":"modbus-read","z":"13b3589542b6b0c9","name":"Register 35","topic":"test","showStatusActivities":false,"logIOActivities":false,"showErrors":false,"unitid":"4","dataType":"HoldingRegister","adr":"35","quantity":"1","rate":"2","rateUnit":"s","delayOnStart":false,"startDelayTime":"","server":"2995c31d.ca614c","useIOFile":false,"ioFile":"","useIOForPayload":false,"emptyMsgOnFail":false,"x":250,"y":180,"wires":[["79748a843185534c","27f6aa74102b975f"],["b4fc3298987d3c32"]]},{"id":"8702895103125274","type":"debug","z":"13b3589542b6b0c9","name":"","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":810,"y":200,"wires":[]},{"id":"b4fc3298987d3c32","type":"debug","z":"13b3589542b6b0c9","name":"","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":500,"y":240,"wires":[]},{"id":"af697262864bf4e7","type":"modbus-read","z":"13b3589542b6b0c9","name":"Register 4","topic":"test","showStatusActivities":false,"logIOActivities":false,"showErrors":false,"unitid":"4","dataType":"HoldingRegister","adr":"4","quantity":"1","rate":"2","rateUnit":"s","delayOnStart":false,"startDelayTime":"","server":"2995c31d.ca614c","useIOFile":false,"ioFile":"","useIOForPayload":false,"emptyMsgOnFail":false,"x":320,"y":580,"wires":[["99515002f3069944","23d180926aa53f32"],["a0be5ee50b109ba3"]]},{"id":"781b43de616918a9","type":"debug","z":"13b3589542b6b0c9","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":710,"y":580,"wires":[]},{"id":"a0be5ee50b109ba3","type":"debug","z":"13b3589542b6b0c9","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":580,"y":640,"wires":[]},{"id":"79748a843185534c","type":"function","z":"13b3589542b6b0c9","name":"","func":"msg.payload = \"Register 35: \" + msg.payload; \nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":500,"y":180,"wires":[["8702895103125274"]]},{"id":"02b774a462fffc01","type":"modbus-write","z":"13b3589542b6b0c9","name":"Write register 35","showStatusActivities":false,"showErrors":false,"unitid":"4","dataType":"HoldingRegister","adr":"35","quantity":"1","server":"2995c31d.ca614c","emptyMsgOnFail":false,"keepMsgProperties":false,"x":600,"y":380,"wires":[["ed3daaa4a8ac7105"],[]]},{"id":"ed3daaa4a8ac7105","type":"debug","z":"13b3589542b6b0c9","name":"","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","targetType":"full","statusVal":"","statusType":"auto","x":790,"y":380,"wires":[]},{"id":"99515002f3069944","type":"function","z":"13b3589542b6b0c9","name":"","func":"msg.payload = \"Register 4: \" + msg.payload; \nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":540,"y":580,"wires":[["781b43de616918a9"]]},{"id":"0483cb81e9d3f38c","type":"ui_text_input","z":"13b3589542b6b0c9","name":"Timer","label":"Timer","tooltip":"","group":"2e9652e4.a9280e","order":1,"width":0,"height":0,"passthru":true,"mode":"text","delay":"800","topic":"topic","topicType":"msg","x":230,"y":380,"wires":[["9c220ab025ac2356"]]},{"id":"9c220ab025ac2356","type":"function","z":"13b3589542b6b0c9","name":"Parse to Int","func":"msg.payload = parseInt(msg.payload);\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":410,"y":380,"wires":[["02b774a462fffc01"]]},{"id":"b6de73b7886f2348","type":"ui_text","z":"13b3589542b6b0c9","group":"2e9652e4.a9280e","order":2,"width":0,"height":0,"name":"Register 35 (Timer)","label":"Register 35 (Timer)","format":"{{msg.payload}}","layout":"row-spread","x":770,"y":80,"wires":[]},{"id":"27f6aa74102b975f","type":"function","z":"13b3589542b6b0c9","name":"Parse to Int","func":"msg.payload = parseInt(msg.payload);\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":510,"y":80,"wires":[["b6de73b7886f2348"]]},{"id":"aa4a4429ab779ab9","type":"modbus-write","z":"13b3589542b6b0c9","name":"Write register 4","showStatusActivities":false,"showErrors":false,"unitid":"4","dataType":"HoldingRegister","adr":"4","quantity":"1","server":"2995c31d.ca614c","emptyMsgOnFail":false,"keepMsgProperties":false,"x":560,"y":1120,"wires":[["2ec14b43288c7c88"],["56007b081fd4362c","f8fbfcd73863c590"]]},{"id":"2ec14b43288c7c88","type":"debug","z":"13b3589542b6b0c9","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","targetType":"full","statusVal":"","statusType":"auto","x":790,"y":1060,"wires":[]},{"id":"d4d4914fd15a96d0","type":"ui_text_input","z":"13b3589542b6b0c9","name":"Valve","label":"Valve","tooltip":"","group":"e405fe8f.3d27a","order":1,"width":0,"height":0,"passthru":true,"mode":"text","delay":"800","topic":"topic","sendOnBlur":true,"className":"","topicType":"msg","x":110,"y":1120,"wires":[["86f3485603e93e87","961b4efa4a4118b6"]]},{"id":"86f3485603e93e87","type":"function","z":"13b3589542b6b0c9","name":"Parse to Int","func":"var msg1 = {};\nmsg1.payload = parseInt(msg.payload);\nreturn msg1;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":310,"y":1120,"wires":[["aa4a4429ab779ab9","fe313863b8d149ab"]]},{"id":"6408fcc38d16960f","type":"ui_text","z":"13b3589542b6b0c9","group":"e405fe8f.3d27a","order":2,"width":0,"height":0,"name":"Register 4 (Valve)","label":"Register 4 (Valve)","format":"{{msg.payload}}","layout":"row-spread","x":750,"y":520,"wires":[]},{"id":"23d180926aa53f32","type":"function","z":"13b3589542b6b0c9","name":"Parse to Int","func":"msg.payload = parseInt(msg.payload);\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":490,"y":520,"wires":[["6408fcc38d16960f"]]},{"id":"2ba4b4f5017f66c2","type":"modbus-read","z":"13b3589542b6b0c9","name":"Register 5","topic":"test","showStatusActivities":false,"logIOActivities":false,"showErrors":false,"unitid":"","dataType":"HoldingRegister","adr":"5","quantity":"1","rate":"2","rateUnit":"s","delayOnStart":false,"startDelayTime":"","server":"2995c31d.ca614c","useIOFile":false,"ioFile":"","useIOForPayload":false,"emptyMsgOnFail":false,"x":320,"y":960,"wires":[["f71e3361c6aa9f95","6de9536da3e78eed"],["fcfe96e91b49cddb"]]},{"id":"30d81dc0ba2f15e5","type":"debug","z":"13b3589542b6b0c9","name":"","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":710,"y":960,"wires":[]},{"id":"fcfe96e91b49cddb","type":"debug","z":"13b3589542b6b0c9","name":"","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":580,"y":1020,"wires":[]},{"id":"f71e3361c6aa9f95","type":"function","z":"13b3589542b6b0c9","name":"","func":"msg.payload = \"Register 4: \" + msg.payload; \nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":540,"y":960,"wires":[["30d81dc0ba2f15e5"]]},{"id":"0a11359d81e987ca","type":"ui_text","z":"13b3589542b6b0c9","group":"34e895d.2e9a16a","order":2,"width":0,"height":0,"name":"Register 5 (Outlets)","label":"Register 5 (Outlets)","format":"{{msg.payload}}","layout":"row-spread","x":750,"y":900,"wires":[]},{"id":"6de9536da3e78eed","type":"function","z":"13b3589542b6b0c9","name":"Parse to Int","func":"msg.payload = parseInt(msg.payload);\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":490,"y":900,"wires":[["0a11359d81e987ca"]]},{"id":"961b4efa4a4118b6","type":"delay","z":"13b3589542b6b0c9","name":"","pauseType":"delay","timeout":"100","timeoutUnits":"milliseconds","rate":"1","nbRateUnits":"1","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"x":310,"y":1260,"wires":[["d5a4908348389102"]]},{"id":"d5a4908348389102","type":"function","z":"13b3589542b6b0c9","name":"Parse to Int","func":"msg.payload = parseInt(msg.payload);\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":490,"y":1260,"wires":[["2ea8eb5f043a0a23","f5e0b3f6bd883eae"]]},{"id":"2ea8eb5f043a0a23","type":"switch","z":"13b3589542b6b0c9","name":"Valve on","property":"payload","propertyType":"msg","rules":[{"t":"eq","v":"1","vt":"num"}],"checkall":"true","repair":false,"outputs":1,"x":670,"y":1260,"wires":[["3b4ee2699671e17c"]]},{"id":"3b4ee2699671e17c","type":"change","z":"13b3589542b6b0c9","name":"Turn solenoids on","rules":[{"t":"set","p":"payload","pt":"msg","to":"3","tot":"num"}],"action":"","property":"","from":"","to":"","reg":false,"x":880,"y":1260,"wires":[["e1e1020a4b47fa5d"]]},{"id":"f5e0b3f6bd883eae","type":"switch","z":"13b3589542b6b0c9","name":"Valve off","property":"payload","propertyType":"msg","rules":[{"t":"eq","v":"0","vt":"num"}],"checkall":"true","repair":false,"outputs":1,"x":660,"y":1340,"wires":[["6cf28b0a2bfbba8a"]]},{"id":"6cf28b0a2bfbba8a","type":"change","z":"13b3589542b6b0c9","name":"Turn solenoids off","rules":[{"t":"set","p":"payload","pt":"msg","to":"0","tot":"num"}],"action":"","property":"","from":"","to":"","reg":false,"x":870,"y":1340,"wires":[[]]},{"id":"e1e1020a4b47fa5d","type":"modbus-write","z":"13b3589542b6b0c9","name":"Write register 5","showStatusActivities":false,"showErrors":false,"unitid":"4","dataType":"HoldingRegister","adr":"5","quantity":"1","server":"2995c31d.ca614c","emptyMsgOnFail":false,"keepMsgProperties":false,"x":1120,"y":1300,"wires":[["dad9ebc6643ebe30"],[]]},{"id":"dad9ebc6643ebe30","type":"debug","z":"13b3589542b6b0c9","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","targetType":"full","statusVal":"","statusType":"auto","x":1310,"y":1300,"wires":[]},{"id":"c49e548078f8196c","type":"modbus-read","z":"13b3589542b6b0c9","name":"Register 6","topic":"test","showStatusActivities":false,"logIOActivities":false,"showErrors":false,"unitid":"","dataType":"HoldingRegister","adr":"6","quantity":"1","rate":"2","rateUnit":"s","delayOnStart":false,"startDelayTime":"","server":"2995c31d.ca614c","useIOFile":false,"ioFile":"","useIOForPayload":false,"emptyMsgOnFail":false,"x":340,"y":1460,"wires":[["80382d9fa1ec0d8e","598ebcdb67f1afac"],["afae8363cb04efd7"]]},{"id":"90b04f1a993aaac3","type":"debug","z":"13b3589542b6b0c9","name":"","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":730,"y":1460,"wires":[]},{"id":"afae8363cb04efd7","type":"debug","z":"13b3589542b6b0c9","name":"","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":600,"y":1520,"wires":[]},{"id":"80382d9fa1ec0d8e","type":"function","z":"13b3589542b6b0c9","name":"","func":"msg.payload = \"Register 4: \" + msg.payload; \nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":560,"y":1460,"wires":[["90b04f1a993aaac3"]]},{"id":"8d5329e82cf47860","type":"ui_text","z":"13b3589542b6b0c9","group":"34e895d.2e9a16a","order":2,"width":0,"height":0,"name":"Register 6 (Outlet temp)","label":"Register 6(Outlet temp)","format":"{{msg.payload}}","layout":"row-spread","x":910,"y":1400,"wires":[]},{"id":"598ebcdb67f1afac","type":"function","z":"13b3589542b6b0c9","name":"Parse to Int","func":"msg.payload = parseInt(msg.payload);\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":510,"y":1400,"wires":[["3a8d6f8a4d01a182"]]},{"id":"3a8d6f8a4d01a182","type":"function","z":"13b3589542b6b0c9","name":"Parse to Int","func":"msg.payload = msg.payload *0.1;\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":690,"y":1400,"wires":[["8d5329e82cf47860"]]},{"id":"602e67728fb6750f","type":"modbus-read","z":"13b3589542b6b0c9","name":"Register 36","topic":"test","showStatusActivities":false,"logIOActivities":false,"showErrors":false,"unitid":"","dataType":"HoldingRegister","adr":"36","quantity":"1","rate":"2","rateUnit":"s","delayOnStart":false,"startDelayTime":"","server":"2995c31d.ca614c","useIOFile":false,"ioFile":"","useIOForPayload":false,"emptyMsgOnFail":false,"x":370,"y":1980,"wires":[["5c35a78704a70241","916f53fd266d0471"],["8b6d3d7b3ad716d3"]]},{"id":"6a44b7a31e3ddba3","type":"debug","z":"13b3589542b6b0c9","name":"","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":750,"y":1980,"wires":[]},{"id":"8b6d3d7b3ad716d3","type":"debug","z":"13b3589542b6b0c9","name":"","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":620,"y":2040,"wires":[]},{"id":"5c35a78704a70241","type":"function","z":"13b3589542b6b0c9","name":"","func":"msg.payload = \"Register 4: \" + msg.payload; \nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":580,"y":1980,"wires":[["6a44b7a31e3ddba3"]]},{"id":"c134cde50a018ef8","type":"ui_text","z":"13b3589542b6b0c9","group":"498b6059.f3434","order":2,"width":0,"height":0,"name":"Register 31 (Max SP outlet 1)","label":"Register 36(Max SP outlet 1)","format":"{{msg.payload}}","layout":"row-spread","x":940,"y":1920,"wires":[]},{"id":"916f53fd266d0471","type":"function","z":"13b3589542b6b0c9","name":"Parse to Int","func":"msg.payload = parseInt(msg.payload);\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":530,"y":1920,"wires":[["039c80f110bfa53a"]]},{"id":"039c80f110bfa53a","type":"function","z":"13b3589542b6b0c9","name":"Parse to Int","func":"msg.payload = msg.payload *0.1;\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":710,"y":1920,"wires":[["c134cde50a018ef8"]]},{"id":"fdd34a06c5da4c0b","type":"modbus-read","z":"13b3589542b6b0c9","name":"Register 37","topic":"test","showStatusActivities":false,"logIOActivities":false,"showErrors":false,"unitid":"","dataType":"HoldingRegister","adr":"37","quantity":"1","rate":"2","rateUnit":"s","delayOnStart":false,"startDelayTime":"","server":"2995c31d.ca614c","useIOFile":false,"ioFile":"","useIOForPayload":false,"emptyMsgOnFail":false,"x":370,"y":2280,"wires":[["08a182a578025494","0d1046fdbcbd3b96"],["f56a8f67183e614f"]]},{"id":"5b7b2815c2f1f176","type":"debug","z":"13b3589542b6b0c9","name":"","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":750,"y":2280,"wires":[]},{"id":"f56a8f67183e614f","type":"debug","z":"13b3589542b6b0c9","name":"","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":620,"y":2340,"wires":[]},{"id":"08a182a578025494","type":"function","z":"13b3589542b6b0c9","name":"","func":"msg.payload = \"Register 4: \" + msg.payload; \nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":580,"y":2280,"wires":[["5b7b2815c2f1f176"]]},{"id":"7b48a967c5a3faef","type":"ui_text","z":"13b3589542b6b0c9","group":"498b6059.f3434","order":2,"width":0,"height":0,"name":"Register 37 (Min SP outlet 1)","label":"Register 37(Min SP outlet 1)","format":"{{msg.payload}}","layout":"row-spread","x":940,"y":2220,"wires":[]},{"id":"0d1046fdbcbd3b96","type":"function","z":"13b3589542b6b0c9","name":"Parse to Int","func":"msg.payload = parseInt(msg.payload);\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":530,"y":2220,"wires":[["e79d5cf24e23d410"]]},{"id":"e79d5cf24e23d410","type":"function","z":"13b3589542b6b0c9","name":"Scale","func":"msg.payload = msg.payload *0.1;\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":690,"y":2220,"wires":[["7b48a967c5a3faef"]]},{"id":"e6c6568131dc0022","type":"modbus-read","z":"13b3589542b6b0c9","name":"Register 38","topic":"test","showStatusActivities":false,"logIOActivities":false,"showErrors":false,"unitid":"","dataType":"HoldingRegister","adr":"38","quantity":"1","rate":"2","rateUnit":"s","delayOnStart":false,"startDelayTime":"","server":"2995c31d.ca614c","useIOFile":false,"ioFile":"","useIOForPayload":false,"emptyMsgOnFail":false,"x":350,"y":2560,"wires":[["e5e4d0c1b44cfd2c","e64ab030c4aaa097"],["9d2beda4a786b8a8"]]},{"id":"1c996e3a28268235","type":"debug","z":"13b3589542b6b0c9","name":"","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":730,"y":2560,"wires":[]},{"id":"9d2beda4a786b8a8","type":"debug","z":"13b3589542b6b0c9","name":"","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":600,"y":2620,"wires":[]},{"id":"e5e4d0c1b44cfd2c","type":"function","z":"13b3589542b6b0c9","name":"","func":"msg.payload = \"Register 4: \" + msg.payload; \nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":560,"y":2560,"wires":[["1c996e3a28268235"]]},{"id":"697a9160b05553c5","type":"ui_text","z":"13b3589542b6b0c9","group":"498b6059.f3434","order":2,"width":0,"height":0,"name":"Register 38 (Default  SP outlet 1)","label":"Register 38(Default SP outlet 1)","format":"{{msg.payload}}","layout":"row-spread","x":930,"y":2500,"wires":[]},{"id":"e64ab030c4aaa097","type":"function","z":"13b3589542b6b0c9","name":"Parse to Int","func":"msg.payload = parseInt(msg.payload);\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":510,"y":2500,"wires":[["b4cb39e7b2cb4d78"]]},{"id":"b4cb39e7b2cb4d78","type":"function","z":"13b3589542b6b0c9","name":"Parse to Int","func":"msg.payload = msg.payload *0.1;\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":690,"y":2500,"wires":[["697a9160b05553c5"]]},{"id":"2e3e2dfef79bf4bb","type":"modbus-write","z":"13b3589542b6b0c9","name":"Write register 36","showStatusActivities":false,"showErrors":false,"unitid":"4","dataType":"HoldingRegister","adr":"36","quantity":"1","server":"2995c31d.ca614c","emptyMsgOnFail":false,"keepMsgProperties":false,"x":920,"y":1840,"wires":[["f08b9073afeb18a0"],[]]},{"id":"f08b9073afeb18a0","type":"debug","z":"13b3589542b6b0c9","name":"","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","targetType":"full","statusVal":"","statusType":"auto","x":1110,"y":1840,"wires":[]},{"id":"dcbccea1006570fe","type":"ui_text_input","z":"13b3589542b6b0c9","name":"Timer","label":"Register 36 Max SP","tooltip":"","group":"498b6059.f3434","order":1,"width":0,"height":0,"passthru":true,"mode":"text","delay":"800","topic":"topic","topicType":"msg","x":390,"y":1840,"wires":[["22128286cbb76b9f"]]},{"id":"22128286cbb76b9f","type":"function","z":"13b3589542b6b0c9","name":"Parse to Int","func":"msg.payload = parseInt(msg.payload);\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":570,"y":1840,"wires":[["67281a5f2798fbbe"]]},{"id":"236545912026e009","type":"modbus-write","z":"13b3589542b6b0c9","name":"Write register 37","showStatusActivities":false,"showErrors":false,"unitid":"4","dataType":"HoldingRegister","adr":"37","quantity":"1","server":"2995c31d.ca614c","emptyMsgOnFail":false,"keepMsgProperties":false,"x":900,"y":2160,"wires":[["b34dd0490e0f6963"],[]]},{"id":"b34dd0490e0f6963","type":"debug","z":"13b3589542b6b0c9","name":"","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","targetType":"full","statusVal":"","statusType":"auto","x":1090,"y":2160,"wires":[]},{"id":"af96762a9e9924b9","type":"ui_text_input","z":"13b3589542b6b0c9","name":"Timer","label":"Register 37 Min SP","tooltip":"","group":"498b6059.f3434","order":1,"width":0,"height":0,"passthru":true,"mode":"text","delay":"800","topic":"topic","topicType":"msg","x":390,"y":2160,"wires":[["38429156c9cb197e"]]},{"id":"38429156c9cb197e","type":"function","z":"13b3589542b6b0c9","name":"Parse to Int","func":"msg.payload = parseInt(msg.payload);\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":570,"y":2160,"wires":[["47f17cdeb40e7dc4"]]},{"id":"67281a5f2798fbbe","type":"function","z":"13b3589542b6b0c9","name":"Scale","func":"msg.payload = msg.payload *10;\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":730,"y":1840,"wires":[["2e3e2dfef79bf4bb"]]},{"id":"47f17cdeb40e7dc4","type":"function","z":"13b3589542b6b0c9","name":"Scale","func":"msg.payload = msg.payload *10;\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":730,"y":2160,"wires":[["236545912026e009"]]},{"id":"c7d5f27e30e769d2","type":"modbus-write","z":"13b3589542b6b0c9","name":"Write register 38","showStatusActivities":false,"showErrors":false,"unitid":"4","dataType":"HoldingRegister","adr":"38","quantity":"1","server":"2995c31d.ca614c","emptyMsgOnFail":false,"keepMsgProperties":false,"x":860,"y":2440,"wires":[["a6e6a12f3a3a28fd"],[]]},{"id":"a6e6a12f3a3a28fd","type":"debug","z":"13b3589542b6b0c9","name":"","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","targetType":"full","statusVal":"","statusType":"auto","x":1050,"y":2440,"wires":[]},{"id":"6dfc219ccebda1fe","type":"ui_text_input","z":"13b3589542b6b0c9","name":"Timer","label":"Register 38 Default SP","tooltip":"","group":"498b6059.f3434","order":1,"width":0,"height":0,"passthru":true,"mode":"text","delay":"800","topic":"topic","topicType":"msg","x":350,"y":2440,"wires":[["6c188708f622b84f"]]},{"id":"6c188708f622b84f","type":"function","z":"13b3589542b6b0c9","name":"Parse to Int","func":"msg.payload = parseInt(msg.payload);\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":530,"y":2440,"wires":[["2acff7877753a481"]]},{"id":"2acff7877753a481","type":"function","z":"13b3589542b6b0c9","name":"Scale","func":"msg.payload = msg.payload *10;\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":690,"y":2440,"wires":[["c7d5f27e30e769d2"]]},{"id":"f3fe3f817af5233f","type":"modbus-read","z":"13b3589542b6b0c9","name":"Register 1","topic":"test","showStatusActivities":false,"logIOActivities":false,"showErrors":false,"unitid":"","dataType":"HoldingRegister","adr":"1","quantity":"1","rate":"2","rateUnit":"s","delayOnStart":false,"startDelayTime":"","server":"2995c31d.ca614c","useIOFile":false,"ioFile":"","useIOForPayload":false,"emptyMsgOnFail":false,"x":340,"y":2840,"wires":[["c9c113363a5b9a71","40639511be0c098b"],["0e1f611e724d812b"]]},{"id":"22e40f84207e037d","type":"debug","z":"13b3589542b6b0c9","name":"","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":730,"y":2840,"wires":[]},{"id":"0e1f611e724d812b","type":"debug","z":"13b3589542b6b0c9","name":"","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":600,"y":2900,"wires":[]},{"id":"c9c113363a5b9a71","type":"function","z":"13b3589542b6b0c9","name":"","func":"msg.payload = \"Register 4: \" + msg.payload; \nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":560,"y":2840,"wires":[["22e40f84207e037d"]]},{"id":"1485fb5caff241bb","type":"ui_text","z":"13b3589542b6b0c9","group":"498b6059.f3434","order":2,"width":0,"height":0,"name":"Register 1 (Setpoint temp)","label":"Register 1 (Setpoint temp)","format":"{{msg.payload}}","layout":"row-spread","x":910,"y":2780,"wires":[]},{"id":"40639511be0c098b","type":"function","z":"13b3589542b6b0c9","name":"Parse to Int","func":"msg.payload = parseInt(msg.payload);\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":510,"y":2780,"wires":[["e9c2e6417fec47cd"]]},{"id":"e9c2e6417fec47cd","type":"function","z":"13b3589542b6b0c9","name":"Parse to Int","func":"msg.payload = msg.payload *0.1;\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":690,"y":2780,"wires":[["1485fb5caff241bb"]]},{"id":"2431a4503934eaf2","type":"modbus-write","z":"13b3589542b6b0c9","name":"Write register 1","showStatusActivities":false,"showErrors":false,"unitid":"4","dataType":"HoldingRegister","adr":"1","quantity":"1","server":"2995c31d.ca614c","emptyMsgOnFail":false,"keepMsgProperties":false,"x":860,"y":2720,"wires":[["e8a1eeeff2067dff"],[]]},{"id":"e8a1eeeff2067dff","type":"debug","z":"13b3589542b6b0c9","name":"","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","targetType":"full","statusVal":"","statusType":"auto","x":1050,"y":2720,"wires":[]},{"id":"0da13681ea3f36c9","type":"ui_text_input","z":"13b3589542b6b0c9","name":"Timer","label":"Register 1 Setpoint Temp","tooltip":"","group":"498b6059.f3434","order":1,"width":0,"height":0,"passthru":true,"mode":"text","delay":"800","topic":"topic","sendOnBlur":true,"className":"","topicType":"msg","x":350,"y":2720,"wires":[["33fa5cc4561cd89b"]]},{"id":"33fa5cc4561cd89b","type":"function","z":"13b3589542b6b0c9","name":"Parse to Int","func":"msg.payload = parseInt(msg.payload);\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":530,"y":2720,"wires":[["29a78b4c79325d61"]]},{"id":"29a78b4c79325d61","type":"function","z":"13b3589542b6b0c9","name":"Scale","func":"msg.payload = msg.payload *10;\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":690,"y":2720,"wires":[["2431a4503934eaf2"]]},{"id":"248fd6a49d4a56d8","type":"ui_button","z":"13b3589542b6b0c9","name":"","group":"e405fe8f.3d27a","order":4,"width":0,"height":0,"passthru":false,"label":"Valve On","tooltip":"","color":"","bgcolor":"","className":"","icon":"","payload":"1","payloadType":"num","topic":"topic","topicType":"msg","x":120,"y":1060,"wires":[["27fa2a87ab8c7a4f"]]},{"id":"b673ac54a7eebb68","type":"debug","z":"13b3589542b6b0c9","name":"","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","targetType":"full","statusVal":"","statusType":"auto","x":390,"y":1020,"wires":[]},{"id":"56007b081fd4362c","type":"modbus-response","z":"13b3589542b6b0c9","name":"","registerShowMax":20,"x":830,"y":1120,"wires":[]},{"id":"27fa2a87ab8c7a4f","type":"change","z":"13b3589542b6b0c9","name":"","rules":[{"t":"set","p":"payload","pt":"msg","to":"1","tot":"num"}],"action":"","property":"","from":"","to":"","reg":false,"x":280,"y":1060,"wires":[["aa4a4429ab779ab9","b673ac54a7eebb68"]]},{"id":"f8fbfcd73863c590","type":"debug","z":"13b3589542b6b0c9","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","targetType":"full","statusVal":"","statusType":"auto","x":810,"y":1160,"wires":[]},{"id":"fe313863b8d149ab","type":"debug","z":"13b3589542b6b0c9","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":540,"y":1080,"wires":[]},{"id":"2995c31d.ca614c","type":"modbus-client","name":"Modbus Server","clienttype":"simpleser","bufferCommands":true,"stateLogEnabled":false,"queueLogEnabled":false,"tcpHost":"127.0.0.1","tcpPort":"502","tcpType":"DEFAULT","serialPort":"/dev/ttyUSB0","serialType":"RTU-BUFFERD","serialBaudrate":"9600","serialDatabits":"8","serialStopbits":"1","serialParity":"none","serialConnectionDelay":"100","serialAsciiResponseStartDelimiter":"","unit_id":"4","commandDelay":"1","clientTimeout":"3000","reconnectOnTimeout":true,"reconnectTimeout":"1000","parallelUnitIdsAllowed":true},{"id":"2e9652e4.a9280e","type":"ui_group","name":"Temperature","tab":"162d8b7bf252795a","order":1,"disp":true,"width":"18","collapse":false,"className":""},{"id":"e405fe8f.3d27a","type":"ui_group","name":"Valve","tab":"20c87f54.bc8f7","order":2,"disp":true,"width":"6","collapse":false,"className":""},{"id":"34e895d.2e9a16a","type":"ui_group","name":"Outlets","tab":"20c87f54.bc8f7","order":3,"disp":true,"width":"6","collapse":false},{"id":"498b6059.f3434","type":"ui_group","name":"Setpoints","tab":"20c87f54.bc8f7","order":4,"disp":true,"width":"6","collapse":false},{"id":"162d8b7bf252795a","type":"ui_tab","name":"Dashboard","icon":"dashboard","disabled":false,"hidden":false},{"id":"20c87f54.bc8f7","type":"ui_tab","name":"Control","icon":"dashboard","disabled":false,"hidden":false}]

Hi there,

We're having an issue where Node-RED is crashing at startup if the Modbus server is given a serial port to which it has write access. Initially Node-RED was not crashing because we hadn't yet given the Docker container write access to /dev/ttyUSB0. This was solved by adding the node-red user inside the container to the dialout group however it surfaced this crashing issue. Some more investigation showed this same behaviour can be replicated by specifying any file that exists and is writable. E.g., if the serial port is set to /tmp/foobar when it does not exist, Node-RED is fine, but as soon as a regular file is created with that name, Node-RED crashes in the same way.

We have been able to replicate this with v2 and v3 of Node-RED.

Server

Modbus-Server Node

How can this be reproduced?

  • Import the flow
  • Set the serial port on the Modbus server to an appropriate device file, or any extant regular file
  • Deploy the changes and watch the logs for a segfault

What did you expect to happen?

No response

Other Information

No response

Hi there,

To give an update to this: we found the problem actually lies within the https://www.npmjs.com/package/modbus-serial package while running on Alpine Linux. Moving from the official Node-RED Docker Hub package (which uses Alpine) to Debian fixed the issue.

My guess is something in the chain depends on a peculiarity or a non-standard feature within glibc that musl-powered Alpine gets stuck on.

This issue can probably be closed, perhaps with a note somewhere that there may be issues using this package on Alpine?

I'm seeing the same when using the official Node-RED Docker Hub package.

I agree... if this really can't work with those official Docker images, it should probably be noted somewhere since this project is specifically a Node-RED module.

Resolved this issue for me

node-red-contrib-modbus works fine with official Node-RED Docker images if the npm command includes --unsafe-perm --build-from-source.

So in my case, in my Dockerfile I changed...

RUN cd /data && npm install --only=production

...to...

RUN cd /data && npm install --only=production --unsafe-perm --build-from-source

Also, this works for both versions 5.21 and 5.25.

@papakpmartin

Could you please post the actual dockerfile you are using that works for you ?
thanks

Sure! Here's the basics of what is now working for me:

FROM nodered/node-red:2.2.2-14

# Copy package.json to /data so npm installs the added modules for Node-RED
COPY package.json /data/package.json

# Install inside /data. Doing otherwise may wreck the Node-RED installation
RUN cd /data && npm install --only=production --unsafe-perm --build-from-source

# Copy _your_ Node-RED project files into place
COPY settings.js /data/settings.js
COPY flows.json /data/flows.json

# Start the container normally
CMD ["npm", "start"]

This issue is stale because it has been open 60 days with no activity. It will be closed in 30 days, but can be saved by removing the stale label or commenting.