[TIP] Home Assistant + Node-Red Scene Manager

Y’all are awesome!

Well, as long as we are posting subflows:

Here is mine - it has one input and one output. You put into the config the number of taps up, down, or of the config button. If that event is caught, it allows the message to flow through. Otherwise, it is blocked. It can also filter on zwave device if you want to just push all the zwave events into it.

Edit: See paste below for correctly formatted code

@BuilderTroy

Node red giving me errors when I try to import that

Hmm - me too. Looks like the quotes got messed up somehow. Let me try formatting this another way.

[{"id":"fd34f499.48bcd8","type":"subflow","name":"Inovelli Scene Filter","info":"","category":"","in":[{"x":100,"y":300,"wires":[{"id":"b25ae54a.b6d5b8"},{"id":"6628bb9d.58f374"}]}],"out":[{"x":1100,"y":300,"wires":[{"id":"6e81f0c6.383db","port":0},{"id":"f5d5e0e0.082a5","port":0},{"id":"15759d1d.2e0b83","port":0},{"id":"60d09b01.805c84","port":0},{"id":"6c108c33.ff5134","port":0},{"id":"9347865c.2c34c8","port":0},{"id":"36ab10af.0af5c","port":0},{"id":"4e008bd8.8a9f24","port":0},{"id":"7b24e607.a35d88","port":0},{"id":"d43f271.c1c65d8","port":0},{"id":"1a2d84d9.7b29ab","port":0}]}],"env":[{"name":"zwave_switch","type":"str","value":"zwave.xxxxx"},{"name":"Taps_Up","type":"num","value":"0"},{"name":"Taps_Down","type":"num","value":"0"},{"name":"Taps_Config","type":"num","value":"0"}],"color":"#3FADB5","inputLabels":["zwave scene event"],"outputLabels":["selected scene"],"icon":"node-red/inject.svg"},{"id":"77db2a56.663904","type":"switch","z":"fd34f499.48bcd8","name":"Scene ID","property":"payload.event.scene_id","propertyType":"msg","rules":[{"t":"eq","v":"1","vt":"str"},{"t":"eq","v":"2","vt":"str"},{"t":"eq","v":"3","vt":"str"}],"checkall":"true","repair":false,"outputs":3,"x":440,"y":300,"wires":[["88b48062.8af1f"],["f8f9f40f.334958"],["f4ab5d09.d7779"]]},{"id":"88b48062.8af1f","type":"switch","z":"fd34f499.48bcd8","name":"Scene Data","property":"payload.event.scene_data","propertyType":"msg","rules":[{"t":"eq","v":"7680","vt":"str"},{"t":"eq","v":"7860","vt":"str"},{"t":"eq","v":"7920","vt":"str"},{"t":"eq","v":"7980","vt":"str"},{"t":"eq","v":"8040","vt":"str"}],"checkall":"true","repair":false,"outputs":5,"x":610,"y":260,"wires":[["6e81f0c6.383db"],["f5d5e0e0.082a5"],["15759d1d.2e0b83"],["60d09b01.805c84"],["6c108c33.ff5134"]],"outputLabels":["Single Tap Down","Double Tap Down","Triple Tap Down","Quad Tap Down","5 Tap Down"]},{"id":"f8f9f40f.334958","type":"switch","z":"fd34f499.48bcd8","name":"Scene Data","property":"payload.event.scene_data","propertyType":"msg","rules":[{"t":"eq","v":"7680","vt":"str"},{"t":"eq","v":"7860","vt":"str"},{"t":"eq","v":"7920","vt":"str"},{"t":"eq","v":"7980","vt":"str"},{"t":"eq","v":"8040","vt":"str"}],"checkall":"true","repair":false,"outputs":5,"x":610,"y":340,"wires":[["9347865c.2c34c8"],["36ab10af.0af5c"],["4e008bd8.8a9f24"],["7b24e607.a35d88"],["d43f271.c1c65d8"]],"outputLabels":["Single Tap Up","Double Tap Up","Triple Tap Up","Quad Tap Up","5 Tap Up"]},{"id":"f4ab5d09.d7779","type":"switch","z":"fd34f499.48bcd8","name":"Scene Data","property":"payload.event.scene_data","propertyType":"msg","rules":[{"t":"eq","v":"7680","vt":"str"}],"checkall":"true","repair":false,"outputs":1,"x":610,"y":400,"wires":[["1a2d84d9.7b29ab"]],"outputLabels":["Single Config Tap"]},{"id":"6e81f0c6.383db","type":"switch","z":"fd34f499.48bcd8","name":"Filter 1 Tap Down","property":"Taps_Down","propertyType":"env","rules":[{"t":"eq","v":"1","vt":"num"}],"checkall":"true","repair":false,"outputs":1,"x":870,"y":120,"wires":[[]]},{"id":"f5d5e0e0.082a5","type":"switch","z":"fd34f499.48bcd8","name":"Filter 2 Taps Down","property":"Taps_Down","propertyType":"env","rules":[{"t":"eq","v":"2","vt":"num"}],"checkall":"true","repair":false,"outputs":1,"x":870,"y":160,"wires":[[]]},{"id":"15759d1d.2e0b83","type":"switch","z":"fd34f499.48bcd8","name":"Filter 3 Taps Down","property":"Taps_Down","propertyType":"env","rules":[{"t":"eq","v":"3","vt":"num"}],"checkall":"true","repair":false,"outputs":1,"x":870,"y":200,"wires":[[]]},{"id":"60d09b01.805c84","type":"switch","z":"fd34f499.48bcd8","name":"Filter 4 Taps Down","property":"Taps_Down","propertyType":"env","rules":[{"t":"eq","v":"4","vt":"num"}],"checkall":"true","repair":false,"outputs":1,"x":870,"y":240,"wires":[[]]},{"id":"6c108c33.ff5134","type":"switch","z":"fd34f499.48bcd8","name":"Filter 5 Taps Down","property":"Taps_Down","propertyType":"env","rules":[{"t":"eq","v":"5","vt":"num"}],"checkall":"true","repair":false,"outputs":1,"x":870,"y":280,"wires":[[]]},{"id":"9347865c.2c34c8","type":"switch","z":"fd34f499.48bcd8","name":"Filter 1 Tap Up","property":"Taps_Up","propertyType":"env","rules":[{"t":"eq","v":"1","vt":"num"}],"checkall":"true","repair":false,"outputs":1,"x":860,"y":320,"wires":[[]]},{"id":"36ab10af.0af5c","type":"switch","z":"fd34f499.48bcd8","name":"Filter 2 Taps Up","property":"Taps_Up","propertyType":"env","rules":[{"t":"eq","v":"2","vt":"num"}],"checkall":"true","repair":false,"outputs":1,"x":860,"y":360,"wires":[[]]},{"id":"4e008bd8.8a9f24","type":"switch","z":"fd34f499.48bcd8","name":"Filter 3 Taps Up","property":"Taps_Up","propertyType":"env","rules":[{"t":"eq","v":"3","vt":"num"}],"checkall":"true","repair":false,"outputs":1,"x":860,"y":400,"wires":[[]]},{"id":"7b24e607.a35d88","type":"switch","z":"fd34f499.48bcd8","name":"Filter 4 Taps Up","property":"Taps_Up","propertyType":"env","rules":[{"t":"eq","v":"4","vt":"num"}],"checkall":"true","repair":false,"outputs":1,"x":860,"y":440,"wires":[[]]},{"id":"d43f271.c1c65d8","type":"switch","z":"fd34f499.48bcd8","name":"Filter 5 Taps Up","property":"Taps_Up","propertyType":"env","rules":[{"t":"eq","v":"5","vt":"num"}],"checkall":"true","repair":false,"outputs":1,"x":860,"y":480,"wires":[[]]},{"id":"1a2d84d9.7b29ab","type":"switch","z":"fd34f499.48bcd8","name":"Filter 1 Config Tap","property":"Taps_Config","propertyType":"env","rules":[{"t":"eq","v":"1","vt":"num"}],"checkall":"true","repair":false,"outputs":1,"x":870,"y":520,"wires":[[]]},{"id":"b25ae54a.b6d5b8","type":"switch","z":"fd34f499.48bcd8","name":"Filter Switch","property":"payload.entity_id","propertyType":"msg","rules":[{"t":"eq","v":"zwave_switch","vt":"env"}],"checkall":"true","repair":false,"outputs":1,"x":250,"y":300,"wires":[["77db2a56.663904"]],"outputLabels":["MB Ceiling Light"]},{"id":"6628bb9d.58f374","type":"switch","z":"fd34f499.48bcd8","name":"Allow All Switches","property":"zwave_switch","propertyType":"env","rules":[{"t":"eq","v":"all","vt":"str"}],"checkall":"true","repair":false,"outputs":1,"x":250,"y":260,"wires":[["77db2a56.663904"]],"outputLabels":["MB Ceiling Light"]},{"id":"f94032c8.ba5f4","type":"subflow:fd34f499.48bcd8","z":"b5a90fd9.59dd7","name":"Bedroom Lamp Switch 2 Taps Down","env":[{"name":"zwave_switch","value":"zwave.switch_master_bedroom_bed_lamps","type":"str"},{"name":"Taps_Down","value":"2","type":"num"}],"x":490,"y":380,"wires":[["3da81ab0.d3c076","54a85de8.7563c4","a6a0a80e.7b0728"]]}]

Just tried that and confirmed it will import on my machine. Trick is to use “Preformatted Text” when pasting in to this forum. Cheers!

@BuilderTroy
I got it imported but cant get it to work. My light switch entity ID is zwave.light_switch_laundry_room

I entered that into your filter switch.

Do I need to have something else at the start of this flow?

Sorry for the delay. And yes, you are correct. Sorry I didn’t document the routine better.

Have it fed by an events: all node with the configuration parameter of zwave.scene_activated. Here is a screenshot of the node configuration:

Screen Shot 2020-10-20 at 7.20.55 PM

Ah, very nice. I can see the use case for that. I’ll save that! Cheers.

Hi all,

If you’ve just updated to the new ZwaveJS HA add-on then fear not, the Inovelli NodeRed Scene Manager lives to fight another day. Here’s an updated flow:

[{"id":"ea5f7d19.c5c51","type":"subflow","name":"Inovelli Scenes ZwaveJS","info":"","category":"","in":[{"x":80,"y":240,"wires":[{"id":"b8edf475.b3de68"}]}],"out":[{"x":680,"y":40,"wires":[{"id":"615e226e.f1117c","port":0}]},{"x":680,"y":80,"wires":[{"id":"615e226e.f1117c","port":1}]},{"x":680,"y":120,"wires":[{"id":"615e226e.f1117c","port":2}]},{"x":680,"y":160,"wires":[{"id":"615e226e.f1117c","port":3}]},{"x":680,"y":200,"wires":[{"id":"615e226e.f1117c","port":4}]},{"x":680,"y":240,"wires":[{"id":"201e754c.da2d82","port":0}]},{"x":680,"y":280,"wires":[{"id":"201e754c.da2d82","port":1}]},{"x":680,"y":320,"wires":[{"id":"201e754c.da2d82","port":2}]},{"x":680,"y":360,"wires":[{"id":"201e754c.da2d82","port":3}]},{"x":680,"y":400,"wires":[{"id":"201e754c.da2d82","port":4}]},{"x":680,"y":440,"wires":[{"id":"e0668bd.9f40678","port":0}]}],"env":[],"color":"#DDAA99","outputLabels":["Single tap up","Double tap up","Triple tap up","Quad tap up","5 taps up","Single tap down","Double tap down","Triple tap down","Quad Tap down","5 taps down","Config tap"]},{"id":"b8edf475.b3de68","type":"switch","z":"ea5f7d19.c5c51","name":"Scene ID","property":"payload.event.label","propertyType":"msg","rules":[{"t":"eq","v":"Scene 001","vt":"str"},{"t":"eq","v":"Scene 002","vt":"str"},{"t":"eq","v":"Scene 003","vt":"str"}],"checkall":"true","repair":false,"outputs":3,"x":220,"y":240,"wires":[["201e754c.da2d82"],["615e226e.f1117c"],["e0668bd.9f40678"]]},{"id":"201e754c.da2d82","type":"switch","z":"ea5f7d19.c5c51","name":"Scene Value (Down)","property":"payload.event.value","propertyType":"msg","rules":[{"t":"eq","v":"KeyPressed","vt":"str"},{"t":"eq","v":"KeyPressed2x","vt":"str"},{"t":"eq","v":"KeyPressed3x","vt":"str"},{"t":"eq","v":"KeyPressed4x","vt":"str"},{"t":"eq","v":"KeyPressed5x","vt":"str"}],"checkall":"true","repair":false,"outputs":5,"x":460,"y":260,"wires":[[],[],[],[],[]],"outputLabels":["Single Tap Down","Double Tap Down","Triple Tap Down","Quad Tap Down","5 Tap Down"]},{"id":"615e226e.f1117c","type":"switch","z":"ea5f7d19.c5c51","name":"Scene Value (Up)","property":"payload.event.value","propertyType":"msg","rules":[{"t":"eq","v":"KeyPressed","vt":"str"},{"t":"eq","v":"KeyPressed2x","vt":"str"},{"t":"eq","v":"KeyPressed3x","vt":"str"},{"t":"eq","v":"KeyPressed4x","vt":"str"},{"t":"eq","v":"KeyPressed5x","vt":"str"}],"checkall":"true","repair":false,"outputs":5,"x":450,"y":180,"wires":[[],[],[],[],[]],"outputLabels":["Single Tap Up","Double Tap Up","Triple Tap Up","Quad Tap Up","5 Tap Up"]},{"id":"e0668bd.9f40678","type":"switch","z":"ea5f7d19.c5c51","name":"Scene Value (Config)","property":"payload.event.value","propertyType":"msg","rules":[{"t":"eq","v":"KeyPressed","vt":"str"}],"checkall":"true","repair":false,"outputs":1,"x":460,"y":320,"wires":[[]],"outputLabels":["Single Config Tap"]},{"id":"a70cd9b8.3fe448","type":"tab","label":"Flow 1","disabled":false,"info":""},{"id":"a6d1cd5d.211ab8","type":"server-events","z":"a70cd9b8.3fe448","name":"Listen for ZwaveJS Scene Activation","server":"1be9c72c.0fd339","event_type":"zwave_js_event","exposeToHomeAssistant":false,"haConfig":[{"property":"name","value":""},{"property":"icon","value":""}],"waitForRunning":true,"x":220,"y":220,"wires":[["99891e1d.52b2f"]]},{"id":"99891e1d.52b2f","type":"switch","z":"a70cd9b8.3fe448","name":"Which Switch","property":"payload.event.node_id","propertyType":"msg","rules":[{"t":"eq","v":"1","vt":"str"},{"t":"eq","v":"2","vt":"str"},{"t":"eq","v":"4","vt":"str"},{"t":"eq","v":"5","vt":"str"},{"t":"eq","v":"6","vt":"str"},{"t":"eq","v":"7","vt":"str"}],"checkall":"true","repair":false,"outputs":6,"x":520,"y":220,"wires":[["83fa59c1.20b898"],[],[],[],[],[]],"outputLabels":["Living Room","Kitchen","Dining Room","Entrance","Patio","Backsplash"]},{"id":"83fa59c1.20b898","type":"subflow:ea5f7d19.c5c51","z":"a70cd9b8.3fe448","name":"Living Room Switch (example)","env":[],"x":850,"y":200,"wires":[[],[],[],[],[],[],[],[],[],[],[]]},{"id":"1be9c72c.0fd339","type":"server","name":"Home Assistant","addon":true}]
3 Likes

Interesting… You just taught me that subflows exist.

These devices also have a a scene named KeyReleased for the Up and Down buttons, and the latest beta firmware has an additional scene for double-pressing the config button. It might be worth adding these to your flow.

You have the scene ID’s and scene values for those? That way I can edit the subflow for 1.4 users.

I havent validated all these because I am no longer on OZW 1.4, but here are the Scene IDs and values I am aware of.

Button ZwaveJS Scene OZW 1.4 Scene
Up 002 2
Down 001 1
Config 003 3
Action ZwaveJS2MQTT value ZwaveJS HA Value OZW 1.4 value
Pressed 1 Time 0 KeyPressed 7680
Key Released 1 KeyReleased 7740
Key Held down 2 KeyHeldDown 7800
Pressed 2 Times 3 KeyPressed2x 7860
Pressed 3 Times 4 KeyPressed3x 7920
Pressed 4 Times 5 KeyPressed4x 7980
Pressed 5 Times 6 KeyPressed5x 8040
1 Like

My friends still on 1.4, seeing if he wouldn’t mind testing those values. I threw them into a subflow on my end since I already had everything from before I migrated to OZW. Following the pattern of values, I’d expect config tap x2 to be 7860, so I also included that. I have no idea if that works though, but also indicated this is for firmwares 1.52+.

[{"id":"3f60e735.9db1a8","type":"subflow","name":"Inovelli Scenes 1.4","info":"","category":"","in":[{"x":260,"y":440,"wires":[{"id":"daee7611.539b78"}]}],"out":[{"x":800,"y":100,"wires":[{"id":"df8196c7.74b5c8","port":0}]},{"x":800,"y":140,"wires":[{"id":"df8196c7.74b5c8","port":1}]},{"x":800,"y":180,"wires":[{"id":"df8196c7.74b5c8","port":2}]},{"x":800,"y":220,"wires":[{"id":"df8196c7.74b5c8","port":3}]},{"x":800,"y":260,"wires":[{"id":"df8196c7.74b5c8","port":4}]},{"x":800,"y":300,"wires":[{"id":"df8196c7.74b5c8","port":5}]},{"x":800,"y":340,"wires":[{"id":"df8196c7.74b5c8","port":6}]},{"x":800,"y":380,"wires":[{"id":"28f99a5c.03f676","port":0}]},{"x":800,"y":420,"wires":[{"id":"28f99a5c.03f676","port":1}]},{"x":800,"y":460,"wires":[{"id":"28f99a5c.03f676","port":2}]},{"x":800,"y":500,"wires":[{"id":"28f99a5c.03f676","port":3}]},{"x":800,"y":540,"wires":[{"id":"28f99a5c.03f676","port":4}]},{"x":800,"y":580,"wires":[{"id":"28f99a5c.03f676","port":5}]},{"x":800,"y":620,"wires":[{"id":"28f99a5c.03f676","port":6}]},{"x":800,"y":660,"wires":[{"id":"6ed890f7.9c56e","port":0}]},{"x":800,"y":700,"wires":[{"id":"6ed890f7.9c56e","port":1}]}],"env":[],"color":"#0066cc","outputLabels":["Single tap down","Double tap down","Triple tap down","Quad tap down","5 taps down","Long press down","Down key released","Single tap up","Double tap up","Triple tap up","Quad Tap up","5 taps up","Long press up","Up key released","Config tap","Config tap x2 (guessing and only supported v1.52+)"]},{"id":"daee7611.539b78","type":"switch","z":"3f60e735.9db1a8","name":"Scene ID","property":"payload.event.scene_id","propertyType":"msg","rules":[{"t":"eq","v":"1","vt":"str"},{"t":"eq","v":"2","vt":"str"},{"t":"eq","v":"3","vt":"str"}],"checkall":"true","repair":false,"outputs":3,"x":400,"y":440,"wires":[["df8196c7.74b5c8"],["28f99a5c.03f676"],["6ed890f7.9c56e"]]},{"id":"df8196c7.74b5c8","type":"switch","z":"3f60e735.9db1a8","name":"Scene Data","property":"payload.event.scene_data","propertyType":"msg","rules":[{"t":"eq","v":"7680","vt":"str"},{"t":"eq","v":"7860","vt":"str"},{"t":"eq","v":"7920","vt":"str"},{"t":"eq","v":"7980","vt":"str"},{"t":"eq","v":"8040","vt":"str"},{"t":"eq","v":"7800","vt":"str"},{"t":"eq","v":"7740","vt":"str"}],"checkall":"true","repair":false,"outputs":7,"x":610,"y":360,"wires":[[],[],[],[],[],[],[]],"outputLabels":["Single Tap Down","Double Tap Down","Triple Tap Down","Quad Tap Down","5 Tap Down","",""]},{"id":"28f99a5c.03f676","type":"switch","z":"3f60e735.9db1a8","name":"Scene Data","property":"payload.event.scene_data","propertyType":"msg","rules":[{"t":"eq","v":"7680","vt":"str"},{"t":"eq","v":"7860","vt":"str"},{"t":"eq","v":"7920","vt":"str"},{"t":"eq","v":"7980","vt":"str"},{"t":"eq","v":"8040","vt":"str"},{"t":"eq","v":"7800","vt":"str"},{"t":"eq","v":"7740","vt":"str"}],"checkall":"true","repair":false,"outputs":7,"x":610,"y":480,"wires":[[],[],[],[],[],[],[]],"outputLabels":["Single Tap Up","Double Tap Up","Triple Tap Up","Quad Tap Up","5 Tap Up","",""]},{"id":"6ed890f7.9c56e","type":"switch","z":"3f60e735.9db1a8","name":"Scene Data","property":"payload.event.scene_data","propertyType":"msg","rules":[{"t":"eq","v":"7680","vt":"str"},{"t":"eq","v":"7860","vt":"str"}],"checkall":"true","repair":false,"outputs":2,"x":610,"y":560,"wires":[[],[]],"outputLabels":["Single Config Tap",null]},{"id":"cad37bb.7fe8888","type":"subflow:3f60e735.9db1a8","z":"f2826dc8.24285","name":"","env":[],"x":840,"y":660,"wires":[[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[]]}]

With update I am no longer getting scenes. Did we lose the msg.payload.event.value:

{"type":"value_notification","domain":"zwave_js","node_id":38,"home_id":4241925910,"endpoint":null,"device_id":"ef121446fea38ca4790779a0b2cd6ba6","command_class":91,"command_class_name":"Central Scene","label":null,"property":"scene","property_name":"scene","property_key":"002","property_key_name":"002","value":0,"value_raw":0}

Working issue on github:

I made a temporary subflow using value_raw instead of the text and 0 through 4 and will test to see if that works for now.

I’m interested… but I probably won’t do anything if it’s going to be fixed in a near-term release…

Works perfectly. I’m sure eventually it’ll get fixed but for now if you change to event_raw then change to number and 0 to 4 for each press quantity it works great.

Thank the Lord for subflows!

I am attempting to update the subflow to work for the Fan/Light combo switch (I am running OZW 1.6). Does anyone have any suggestions on how to neatly account for the overlap of the scene data compared to the other switches?

I am currently using a switch node based on node id after the event trigger, then taking the scene data and mapping into the LZW36 subflow, which isn’t fully developed but works for my minimal needs.

So now my parameter 13 and 16 aren’t working with numbers being passed because of the partial parameters (was working a week ago)? Any ideas?