Due to lack of “native emergency stop logic” in VenusOS (for the entire system, there is safety switch assistant for Multiplus but not for MPPT). I created my first node red project (probably not optimized but working as I intended).
Requirements:
- Red latching mushroom (twist/pull to re-engage)
- On pressing E-stop (digital input on Cerbo) → Stop multiplus and MPPT + ring buzzer
- On pulling out E-stop → No automatic restart of system
- To restart system → Press “Reset E-stop” on local display
- “Reset E-stop” logic doesn’t work as long as E-stop is latched/pressed
- When E-stop is latched/pressed → Not possible to start installation from display (keeps getting pushed to off)
[{"id":"6416621de0897f91","type":"tab","label":"Noodstop","disabled":false,"info":"","env":[]},{"id":"1897af01897b01cf","type":"junction","z":"6416621de0897f91","x":1420,"y":140,"wires":[["bcec5004f15a8df9"]]},{"id":"2a9bf647d2802711","type":"junction","z":"6416621de0897f91","x":1400,"y":320,"wires":[["e1a85c0fe5878095"]]},{"id":"bcec5004f15a8df9","type":"victron-output-vebus","z":"6416621de0897f91","service":"com.victronenergy.vebus/276","path":"/Mode","serviceObj":{"service":"com.victronenergy.vebus/276","name":"MultiPlus-II 48/5000/70-50","communityTag":"vebus"},"pathObj":{"path":"/Mode","type":"enum","name":"Switch Position","enum":{"1":"Charger Only","2":"Inverter Only","3":"On","4":"Off"},"mode":"both"},"initial":3,"name":"","onlyChanges":true,"outputs":0,"conditionalMode":false,"outputTrue":"","outputFalse":"","debounce":"","x":1630,"y":140,"wires":[]},{"id":"7c12d71d2aa17527","type":"victron-input-digitalinput","z":"6416621de0897f91","service":"com.victronenergy.digitalinput/4","path":"/Alarm","serviceObj":{"service":"com.victronenergy.digitalinput/4","name":"Noodstop","communityTag":"digitalinput"},"pathObj":{"path":"/Alarm","type":"enum","name":"Digital input alarm","enum":{"0":"No alarm","1":"Warning","2":"Alarm"}},"name":"","onlyChanges":false,"roundValues":"no","rateLimit":0,"outputs":1,"conditionalMode":false,"outputTrue":"true","outputFalse":"false","debounce":"2000","x":160,"y":200,"wires":[["5222b4809b1d2bf0"]]},{"id":"5bdbc1fe49d87dfd","type":"change","z":"6416621de0897f91","name":"ON","rules":[{"t":"set","p":"payload","pt":"msg","to":"3","tot":"num"}],"action":"","property":"","from":"","to":"","reg":false,"x":1310,"y":160,"wires":[["1897af01897b01cf"]]},{"id":"fc93f45abeb835a3","type":"change","z":"6416621de0897f91","name":"OFF","rules":[{"t":"set","p":"payload","pt":"msg","to":"4","tot":"num"}],"action":"","property":"","from":"","to":"","reg":false,"x":1310,"y":120,"wires":[["1897af01897b01cf"]]},{"id":"c740baed7e04fe30","type":"victron-input-digitalinput","z":"6416621de0897f91","service":"com.victronenergy.digitalinput/4","path":"/State","serviceObj":{"service":"com.victronenergy.digitalinput/4","name":"Noodstop","communityTag":"digitalinput"},"pathObj":{"path":"/State","type":"enum","name":"Digital input state","enum":{"0":"low","1":"high","2":"off","3":"on","4":"no","5":"yes","6":"open","7":"closed","8":"ok","9":"alarm","10":"running","11":"stopped"}},"name":"","onlyChanges":false,"roundValues":"no","rateLimit":0,"outputs":1,"conditionalMode":false,"outputTrue":"true","outputFalse":"false","debounce":"2000","x":160,"y":280,"wires":[[]]},{"id":"732941aeb88ec2af","type":"victron-input-system","z":"6416621de0897f91","service":"com.victronenergy.system/0","path":"/Buzzer/State","serviceObj":{"service":"com.victronenergy.system/0","name":"Venus system","communityTag":"system"},"pathObj":{"path":"/Buzzer/State","type":"float","name":"Buzzer State","enum":{"0":"Off","1":"On"}},"name":"","onlyChanges":false,"roundValues":"no","rateLimit":0,"outputs":1,"conditionalMode":false,"outputTrue":"true","outputFalse":"false","debounce":"2000","x":160,"y":360,"wires":[[]]},{"id":"a9c23c52e14d4002","type":"victron-virtual-switch","z":"6416621de0897f91","name":"Reset Noodstop","outputs":2,"switch_1_type":"0","switch_1_initial":0,"switch_1_label":"","switch_1_customname":"Reset Noodstop","switch_1_group":"Noodstop","switch_1_include_measurement":false,"switch_1_rgb_color_wheel":false,"switch_1_cct_wheel":false,"switch_1_rgb_white_dimmer":false,"x":120,"y":480,"wires":[[],["5bca505c304c153d"]]},{"id":"67d2cd73cb74e6e4","type":"BooleanLogicUltimate","z":"6416621de0897f91","name":"","payloadPropName":"payload","filtertrue":"onlytrue","persist":true,"sInitializeWith":"WaitForPayload","triggertopic":"trigger","outputtriggeredby":"all","inputCount":2,"topic":"result","restrictinputevaluation":true,"delayEvaluation":"0","translatorConfig":"","x":1000,"y":360,"wires":[["5bdbc1fe49d87dfd","9725c3795969b4b2"],[],[]]},{"id":"c1ac1d16284eb90a","type":"InvertUltimate","z":"6416621de0897f91","name":"Invert","payloadPropName":"payload","x":650,"y":200,"wires":[["4ed6f9f7cb4b0a0b"]]},{"id":"4ed6f9f7cb4b0a0b","type":"rbe","z":"6416621de0897f91","name":"","func":"rbe","gap":"","start":"","inout":"out","septopics":false,"property":"payload","topi":"topic","x":810,"y":200,"wires":[["67d2cd73cb74e6e4"]]},{"id":"33cdb84cbae4447c","type":"trigger","z":"6416621de0897f91","name":"","op1":"true","op2":"0","op1type":"bool","op2type":"str","duration":"-10","extend":false,"overrideDelay":false,"units":"s","reset":"false","bytopic":"all","topic":"topic","outputs":1,"x":670,"y":120,"wires":[["fc93f45abeb835a3","9e20568f743a97c4"]]},{"id":"5222b4809b1d2bf0","type":"function","z":"6416621de0897f91","name":"Convert to boolean","func":"if (msg.payload === 0) {\n msg.payload = false;\n} else if (msg.payload === 2) {\n msg.payload = true;\n} else {\n return null; // ignore any other value\n}\n\nreturn msg;","outputs":1,"timeout":0,"noerr":0,"initialize":"","finalize":"","libs":[],"x":410,"y":200,"wires":[["33cdb84cbae4447c","c1ac1d16284eb90a"]]},{"id":"5bca505c304c153d","type":"function","z":"6416621de0897f91","name":"Convert to boolean","func":"if (msg.payload === 0) {\n msg.payload = false;\n} else if (msg.payload === 1) {\n msg.payload = true;\n} else {\n return null; // ignore any other value\n}\n\nreturn msg;","outputs":1,"timeout":0,"noerr":0,"initialize":"","finalize":"","libs":[],"x":330,"y":480,"wires":[["bccfee9b3cfbdf5f"]]},{"id":"bccfee9b3cfbdf5f","type":"rbe","z":"6416621de0897f91","name":"","func":"rbe","gap":"","start":"","inout":"out","septopics":false,"property":"payload","topi":"topic","x":530,"y":480,"wires":[["67d2cd73cb74e6e4"]]},{"id":"e1a85c0fe5878095","type":"victron-output-solarcharger","z":"6416621de0897f91","service":"com.victronenergy.solarcharger/0","path":"/Mode","serviceObj":{"service":"com.victronenergy.solarcharger/0","name":"MPPT 450/100 HQ2508WPJKK","communityTag":"solarcharger"},"pathObj":{"path":"/Mode","type":"enum","name":"Charger on/off","enum":{"1":"On","4":"Off"},"mode":"both"},"initial":1,"name":"","onlyChanges":false,"roundValues":"no","rateLimit":0,"outputs":0,"conditionalMode":false,"condition1Operator":">","condition2Enabled":false,"condition2Service":"","condition2Path":"","condition2Operator":">","logicOperator":"AND","outputTrue":"true","outputFalse":"false","outputOnChange":false,"debounce":2000,"x":1640,"y":320,"wires":[]},{"id":"9725c3795969b4b2","type":"change","z":"6416621de0897f91","name":"ON","rules":[{"t":"set","p":"payload","pt":"msg","to":"1","tot":"num"}],"action":"","property":"","from":"","to":"","reg":false,"x":1310,"y":340,"wires":[["2a9bf647d2802711"]]},{"id":"9e20568f743a97c4","type":"change","z":"6416621de0897f91","name":"OFF","rules":[{"t":"set","p":"payload","pt":"msg","to":"4","tot":"num"}],"action":"","property":"","from":"","to":"","reg":false,"x":1310,"y":300,"wires":[["2a9bf647d2802711"]]},{"id":"86f5556f25433c8e","type":"global-config","env":[],"modules":{"@victronenergy/node-red-contrib-victron":"1.6.60","node-red-contrib-boolean-logic-ultimate":"1.2.6"}}]