Heres a node red Inovelli scene subflow for Z Wave JS

Can set up to 16 unique “scenes”:

1x,2x,3x,4x,5x up/down
Up held
Up released
Down held
Down released
Config tap
Config tap 2x

Typical setup would be tying an events all node looking at zwave_js_event to a switch node to tell is what switch it cares about, before going into the subflow. In below example I have 2x up turning on lamp and 4x down turning off lamp.

Heres the actual subflow

[{"id":"3985bb90.d67e54","type":"subflow","name":"Inovelli scenes ZwaveJS","info":"","category":"","in":[{"x":65,"y":360,"wires":[{"id":"fe008dc7.1d271"}]}],"out":[{"x":749,"y":180,"wires":[{"id":"6592ff44.c9c2d","port":0}]},{"x":749,"y":225,"wires":[{"id":"6592ff44.c9c2d","port":1}]},{"x":749,"y":270,"wires":[{"id":"6592ff44.c9c2d","port":2}]},{"x":749,"y":315,"wires":[{"id":"6592ff44.c9c2d","port":3}]},{"x":749,"y":360,"wires":[{"id":"6592ff44.c9c2d","port":4}]},{"x":749,"y":405,"wires":[{"id":"6592ff44.c9c2d","port":5}]},{"x":749,"y":450,"wires":[{"id":"6592ff44.c9c2d","port":6}]},{"x":758,"y":522,"wires":[{"id":"54e15801.d11ee8","port":0}]},{"x":758,"y":567,"wires":[{"id":"54e15801.d11ee8","port":1}]},{"x":758,"y":612,"wires":[{"id":"54e15801.d11ee8","port":2}]},{"x":758,"y":657,"wires":[{"id":"54e15801.d11ee8","port":3}]},{"x":758,"y":702,"wires":[{"id":"54e15801.d11ee8","port":4}]},{"x":758,"y":747,"wires":[{"id":"54e15801.d11ee8","port":5}]},{"x":758,"y":792,"wires":[{"id":"54e15801.d11ee8","port":6}]},{"x":749,"y":882,"wires":[{"id":"31e08d55.b38372","port":0}]},{"x":749,"y":936,"wires":[{"id":"31e08d55.b38372","port":1}]}],"env":[],"color":"#DDAA99","outputLabels":["Up 1x","Up 2x","Up 3x","Up 4x","Up 5x","Up held","Up released","Down 1x","Down 2x","Down 3x","Down 4x","Down 5x","Down held","Down released","Config tap 1x","Config tap 2x"]},{"id":"fe008dc7.1d271","type":"switch","z":"3985bb90.d67e54","name":"Scene ID","property":"payload.event.property_key_name","propertyType":"msg","rules":[{"t":"eq","v":"001","vt":"num"},{"t":"eq","v":"002","vt":"num"},{"t":"eq","v":"003","vt":"num"}],"checkall":"true","repair":false,"outputs":3,"x":231,"y":360,"wires":[["54e15801.d11ee8"],["6592ff44.c9c2d"],["31e08d55.b38372"]]},{"id":"6592ff44.c9c2d","type":"switch","z":"3985bb90.d67e54","name":"Scene Value (Up)","property":"payload.event.value_raw","propertyType":"msg","rules":[{"t":"eq","v":"0","vt":"num"},{"t":"eq","v":"3","vt":"num"},{"t":"eq","v":"4","vt":"num"},{"t":"eq","v":"5","vt":"num"},{"t":"eq","v":"6","vt":"num"},{"t":"eq","v":"2","vt":"num"},{"t":"eq","v":"1","vt":"str"}],"checkall":"true","repair":false,"outputs":7,"x":558,"y":270,"wires":[[],[],[],[],[],[],[]],"outputLabels":["Up 1x","Up 2x","Up 3x","Up 4x","Up 5x","Up hold",null]},{"id":"31e08d55.b38372","type":"switch","z":"3985bb90.d67e54","name":"Scene Value (Config)","property":"payload.event.value_raw","propertyType":"msg","rules":[{"t":"eq","v":"0","vt":"num"},{"t":"eq","v":"3","vt":"str"}],"checkall":"true","repair":false,"outputs":2,"x":560,"y":909,"wires":[[],[]],"outputLabels":["Single Config Tap",null]},{"id":"54e15801.d11ee8","type":"switch","z":"3985bb90.d67e54","name":"Scene Value (Down)","property":"payload.event.value_raw","propertyType":"msg","rules":[{"t":"eq","v":"0","vt":"num"},{"t":"eq","v":"3","vt":"num"},{"t":"eq","v":"4","vt":"num"},{"t":"eq","v":"5","vt":"num"},{"t":"eq","v":"6","vt":"num"},{"t":"eq","v":"2","vt":"num"},{"t":"eq","v":"1","vt":"str"}],"checkall":"true","repair":false,"outputs":7,"x":550,"y":639,"wires":[[],[],[],[],[],[],[]],"outputLabels":["Down 1x","Down 2x","Down 3x","Down 4x","Down 5x","Down held",""]},{"id":"15848ee1.f54db1","type":"comment","z":"3985bb90.d67e54","name":"Edit to raw values. 3-6-21","info":"","x":156,"y":81,"wires":[]},{"id":"54326eea.b4b64","type":"comment","z":"3985bb90.d67e54","name":"Added up released and down released 3-21-21","info":"","x":226,"y":45,"wires":[]},{"id":"33b55a97.ca0466","type":"comment","z":"3985bb90.d67e54","name":"Add in config tap 2x 4-9-21","info":"","x":166,"y":117,"wires":[]}]

Heres the flow from the example picture below:

[{"id":"3985bb90.d67e54","type":"subflow","name":"Inovelli scenes ZwaveJS","info":"","category":"","in":[{"x":65,"y":360,"wires":[{"id":"fe008dc7.1d271"}]}],"out":[{"x":749,"y":180,"wires":[{"id":"6592ff44.c9c2d","port":0}]},{"x":749,"y":225,"wires":[{"id":"6592ff44.c9c2d","port":1}]},{"x":749,"y":270,"wires":[{"id":"6592ff44.c9c2d","port":2}]},{"x":749,"y":315,"wires":[{"id":"6592ff44.c9c2d","port":3}]},{"x":749,"y":360,"wires":[{"id":"6592ff44.c9c2d","port":4}]},{"x":749,"y":405,"wires":[{"id":"6592ff44.c9c2d","port":5}]},{"x":749,"y":450,"wires":[{"id":"6592ff44.c9c2d","port":6}]},{"x":758,"y":522,"wires":[{"id":"54e15801.d11ee8","port":0}]},{"x":758,"y":567,"wires":[{"id":"54e15801.d11ee8","port":1}]},{"x":758,"y":612,"wires":[{"id":"54e15801.d11ee8","port":2}]},{"x":758,"y":657,"wires":[{"id":"54e15801.d11ee8","port":3}]},{"x":758,"y":702,"wires":[{"id":"54e15801.d11ee8","port":4}]},{"x":758,"y":747,"wires":[{"id":"54e15801.d11ee8","port":5}]},{"x":758,"y":792,"wires":[{"id":"54e15801.d11ee8","port":6}]},{"x":758,"y":909,"wires":[{"id":"31e08d55.b38372","port":0}]}],"env":[],"color":"#DDAA99","outputLabels":["Up 1x","Up 2x","Up 3x","Up 4x","Up 5x","Up held","Up released","Down 1x","Down 2x","Down 3x","Down 4x","Down 5x","Down held","Down released","Config tap"]},{"id":"fe008dc7.1d271","type":"switch","z":"3985bb90.d67e54","name":"Scene ID","property":"payload.event.property_key_name","propertyType":"msg","rules":[{"t":"eq","v":"001","vt":"num"},{"t":"eq","v":"002","vt":"num"},{"t":"eq","v":"003","vt":"num"}],"checkall":"true","repair":false,"outputs":3,"x":231,"y":360,"wires":[["54e15801.d11ee8"],["6592ff44.c9c2d"],["31e08d55.b38372"]]},{"id":"6592ff44.c9c2d","type":"switch","z":"3985bb90.d67e54","name":"Scene Value (Up)","property":"payload.event.value_raw","propertyType":"msg","rules":[{"t":"eq","v":"0","vt":"num"},{"t":"eq","v":"3","vt":"num"},{"t":"eq","v":"4","vt":"num"},{"t":"eq","v":"5","vt":"num"},{"t":"eq","v":"6","vt":"num"},{"t":"eq","v":"2","vt":"num"},{"t":"eq","v":"1","vt":"str"}],"checkall":"true","repair":false,"outputs":7,"x":558,"y":270,"wires":[[],[],[],[],[],[],[]],"outputLabels":["Up 1x","Up 2x","Up 3x","Up 4x","Up 5x","Up hold",null]},{"id":"31e08d55.b38372","type":"switch","z":"3985bb90.d67e54","name":"Scene Value (Config)","property":"payload.event.value_raw","propertyType":"msg","rules":[{"t":"eq","v":"0","vt":"num"}],"checkall":"true","repair":false,"outputs":1,"x":560,"y":909,"wires":[[]],"outputLabels":["Single Config Tap"]},{"id":"54e15801.d11ee8","type":"switch","z":"3985bb90.d67e54","name":"Scene Value (Down)","property":"payload.event.value_raw","propertyType":"msg","rules":[{"t":"eq","v":"0","vt":"num"},{"t":"eq","v":"3","vt":"num"},{"t":"eq","v":"4","vt":"num"},{"t":"eq","v":"5","vt":"num"},{"t":"eq","v":"6","vt":"num"},{"t":"eq","v":"2","vt":"num"},{"t":"eq","v":"1","vt":"str"}],"checkall":"true","repair":false,"outputs":7,"x":550,"y":639,"wires":[[],[],[],[],[],[],[]],"outputLabels":["Down 1x","Down 2x","Down 3x","Down 4x","Down 5x","Down held",""]},{"id":"15848ee1.f54db1","type":"comment","z":"3985bb90.d67e54","name":"Edit to raw values. 3-6-21","info":"","x":156,"y":81,"wires":[]},{"id":"54326eea.b4b64","type":"comment","z":"3985bb90.d67e54","name":"Added up released and down released 3-21-21","info":"","x":226,"y":45,"wires":[]},{"id":"68678973.ea1fd8","type":"tab","label":"Office","disabled":false,"info":""},{"id":"323b5838.832278","type":"server-events","z":"68678973.ea1fd8","name":"zwave_js_event","server":"ab3e2c53.e3491","event_type":"zwave_js_event","exposeToHomeAssistant":false,"haConfig":[{"property":"name","value":""},{"property":"icon","value":""}],"waitForRunning":true,"x":116,"y":315,"wires":[["c4268357.51564"]]},{"id":"c4268357.51564","type":"switch","z":"68678973.ea1fd8","name":"Office switch","property":"payload.event.node_id","propertyType":"msg","rules":[{"t":"eq","v":"67","vt":"num"}],"checkall":"true","repair":false,"outputs":1,"x":341,"y":315,"wires":[["ef7a9ebe.f5da7"]]},{"id":"b5ddf76b.1b7488","type":"api-call-service","z":"68678973.ea1fd8","name":"ON: lamp","server":"ab3e2c53.e3491","version":1,"debugenabled":false,"service_domain":"light","service":"turn_on","entityId":"light.office_lamp","data":"{\"brightness_pct\":99}","dataType":"json","mergecontext":"","output_location":"","output_location_type":"none","mustacheAltTags":false,"x":1033,"y":261,"wires":[[]]},{"id":"5cbff09a.a8894","type":"api-call-service","z":"68678973.ea1fd8","name":"OFF: lamp","server":"ab3e2c53.e3491","version":1,"debugenabled":false,"service_domain":"light","service":"turn_off","entityId":"light.office_lamp","data":"","dataType":"json","mergecontext":"","output_location":"","output_location_type":"none","mustacheAltTags":false,"x":1042,"y":360,"wires":[[]]},{"id":"ef7a9ebe.f5da7","type":"subflow:3985bb90.d67e54","z":"68678973.ea1fd8","name":"","x":624,"y":315,"wires":[[],["b5ddf76b.1b7488"],[],[],[],[],[],[],[],[],["5cbff09a.a8894"],[],[],[],[]]},{"id":"ab3e2c53.e3491","type":"server","name":"AvilaSmartHomeRpi","legacy":false,"addon":true,"rejectUnauthorizedCerts":true,"ha_boolean":"y|yes|true|on|home|open","connectionDelay":true,"cacheJson":true}]

1 Like

I’m pretty new to Node-RED and HA in general. I’ve pasted your flow in and only really care (at this point) about triggering a scene with 5x-up taps on an Inovelli Red Series on/off switch. What sort of events should I be looking for in the Events:all node? Something containing the entity ID of the switch in question?

This is what mine looks like:

[{"id":"e7200d39.81ecf","type":"subflow","name":"Front Entry Light Scenes","info":"","category":"","in":[{"x":40,"y":220,"wires":[{"id":"21cc77bf.618e98"}]}],"out":[{"x":580,"y":280,"wires":[{"id":"77b384ae.3630ac","port":1}]},{"x":580,"y":340,"wires":[{"id":"77b384ae.3630ac","port":2}]},{"x":600,"y":380,"wires":[{"id":"77b384ae.3630ac","port":3}]}],"outputLabels":["Double tap down","Triple tap down","Quad tap down","5 taps down"]},{"id":"21cc77bf.618e98","type":"switch","z":"e7200d39.81ecf","name":"Scene ID","property":"payload.event.label","propertyType":"msg","rules":[{"t":"eq","v":"Scene 001","vt":"str"},{"t":"eq","v":"Scene 002","vt":"str"}],"checkall":"true","repair":false,"outputs":2,"x":140,"y":220,"wires":[["a911bb.81f6ee48"],["77b384ae.3630ac"]]},{"id":"a911bb.81f6ee48","type":"switch","z":"e7200d39.81ecf","name":"Scene Data - Off","property":"payload.event.value","propertyType":"msg","rules":[{"t":"eq","v":"KeyPressed2x","vt":"str"},{"t":"eq","v":"KeyPressed3x","vt":"str"},{"t":"eq","v":"KeyPressed4x","vt":"str"},{"t":"eq","v":"KeyPressed5x","vt":"str"},{"t":"eq","v":"KeyPressed6x","vt":"str"}],"checkall":"true","repair":false,"outputs":5,"x":310,"y":180,"wires":[["821f1dea.8947b"],[],[],[],[]]},{"id":"77b384ae.3630ac","type":"switch","z":"e7200d39.81ecf","name":"Scene Data - On","property":"payload.event.value","propertyType":"msg","rules":[{"t":"eq","v":"KeyPressed2x","vt":"str"},{"t":"eq","v":"KeyPressed3x","vt":"str"},{"t":"eq","v":"KeyPressed4x","vt":"str"},{"t":"eq","v":"KeyPresse5x","vt":"str"},{"t":"eq","v":"KeyPressed6x","vt":"str"}],"checkall":"true","repair":false,"outputs":5,"x":310,"y":260,"wires":[["e5214ca7.10633","516eba24.a9b7c4"],[],[],[],[]],"outputLabels":["Double Tap Up","Triple Tap Up","Quad Tap Up","5 Tap Up",null]},{"id":"821f1dea.8947b","type":"api-call-service","z":"e7200d39.81ecf","name":"Double Tap - Turn Off All Inside Lights","server":"43df4cba.6ea624","version":"1","debugenabled":false,"service_domain":"homeassistant","service":"turn_off","entityId":"group.all_inside_light_switches","data":"","dataType":"json","mergecontext":"","output_location":"payload","output_location_type":"msg","mustacheAltTags":false,"x":630,"y":80,"wires":[[]]},{"id":"e5214ca7.10633","type":"api-call-service","z":"e7200d39.81ecf","name":"Double Tap - Turn On All Kitchen Lights","server":"43df4cba.6ea624","version":"1","service_domain":"homeassistant","service":"turn_on","entityId":"group.kitchen_lights","data":"","dataType":"json","mergecontext":"","output_location":"payload","output_location_type":"msg","mustacheAltTags":false,"x":660,"y":180,"wires":[[]]},{"id":"516eba24.a9b7c4","type":"api-call-service","z":"e7200d39.81ecf","name":"Double Tap - Turn On Front Entry Light","server":"43df4cba.6ea624","version":1,"service_domain":"homeassistant","service":"turn_on","entityId":"switch.front_entry_light","data":"","dataType":"json","mergecontext":"","output_location":"payload","output_location_type":"msg","mustacheAltTags":false,"x":790,"y":220,"wires":[[]]},{"id":"62e6ed2f.313644","type":"server-events","z":"6204af9d.f7a5","name":"ZWave Scenes","server":"43df4cba.6ea624","event_type":"zwave_js_event","exposeToHomeAssistant":false,"haConfig":[{"property":"name","value":""},{"property":"icon","value":""}],"waitForRunning":true,"x":100,"y":80,"wires":[["879c08cf.4374c8"]]},{"id":"879c08cf.4374c8","type":"switch","z":"6204af9d.f7a5","name":"Which Enitity?","property":"payload.event.node_id","propertyType":"msg","rules":[{"t":"eq","v":"55","vt":"num"},{"t":"eq","v":"50","vt":"num"},{"t":"eq","v":"62","vt":"str"}],"checkall":"true","repair":false,"outputs":3,"x":280,"y":80,"wires":[["316d4fa8.fe445"],["316d4fa8.fe445"],["bd853fde.649f2"]],"outputLabels":["Ericas Switch","",""]},{"id":"316d4fa8.fe445","type":"subflow:e7200d39.81ecf","z":"6204af9d.f7a5","name":"Front Entry/Ensuite Light Scenes","env":[],"x":540,"y":40,"wires":[[],[],[]]},{"id":"43df4cba.6ea624","type":"server","name":"Home Assistant","legacy":false,"addon":true,"rejectUnauthorizedCerts":true,"ha_boolean":"y|yes|true|on|home|open","connectionDelay":true}]

Sublow:

Basically, monitor zwave_js_event and switch off the node ID (msg.payload.event.node_id) of the device you’re triggering the scene from. For an “off” event you’ll see 'Scene 002" and for “on” you’ll see “Scene 001” (msg.payload.event.label). From there you can switch off the number of key presses (msg.payload.event.value) i.e KeyPressedX2, KeyPressedX3 etc.

In the events all node, your just looking for zwave_js_event then you can choose to put a switch node looking at the entity_id between the events all node and the subflow node. This way only 5x presses from the entities you want get passed on to the sublow, all other just get ignored.

1 Like

Outstanding. I just got my first scene working from the switch. I learned a lot playing with this subflow, thanks!

I’ve upgraded ZwaveJS2MQTT to 0.6.0 and HA to 2021.3.0 and found these subflows no longer work… I wouldn’t think they’d be affected, though?

Here’s the result of a debug nodes on the output of the “zwave scenes” and “which entity” nodes:

3/4/2021, 5:36:44 PMnode: 7eb38175.bbda2
zwave_js_event : msg.payload : Object
{ event_type: "zwave_js_event", entity_id: undefined, event: object, origin: "LOCAL", time_fired: "2021-03-04T22:36:44.209979+00:…" … }
3/4/2021, 5:36:44 PMnode: 55e44e71.04ac4
zwave_js_event : msg.payload : Object
{ event_type: "zwave_js_event", entity_id: undefined, event: object, origin: "LOCAL", time_fired: "2021-03-04T22:36:44.209979+00:…" … }

There is no output from the scene data subflow for some reason.

EDIT: Ah… it would appear this is a known issue that broke this in the last version of the ZwaveJS add-on: https://github.com/home-assistant/core/issues/47331

@DeltaNu1142 I see. Are they going to change back to text or not?

Either way, Ill update the subflow late tomorrow to work with numbers.

Following the link:

This is a known issue that we are trying to fix. It should come out in a minor release once we get it resolved

Heres updated subflow using raw_value’s. Also added in if your hold up or down paddle for 3 secs. I think firmware needs to be 1.5x for this?

Anyway I see something odd when testing it, I dont know if its my setup but heres what im seeing.

  1. Press up 2x
  2. 2x scene triggers
  3. Press up 3x
  4. 2x scene triggers
  5. Press up 3x
  6. 3x scene triggers

I know I am pressing correctly. But I can see on debug, everytime I fire a new scene from the dimmer, it sends the previous scene the first time and then sends the correct value the 2nd time. Seems more like an inovelli issue. But just be aware.

[{"id":"8411e384.fb1f9","type":"subflow","name":"Inovelli Scenes Z Wave JS","info":"","category":"","in":[{"x":140,"y":280,"wires":[{"id":"1adf8d0e.cac7f3"}]}],"out":[{"x":680,"y":40,"wires":[{"id":"3faf3597.ea43ba","port":0}]},{"x":680,"y":80,"wires":[{"id":"3faf3597.ea43ba","port":1}]},{"x":680,"y":120,"wires":[{"id":"3faf3597.ea43ba","port":2}]},{"x":680,"y":160,"wires":[{"id":"3faf3597.ea43ba","port":3}]},{"x":680,"y":200,"wires":[{"id":"3faf3597.ea43ba","port":4}]},{"x":680,"y":240,"wires":[{"id":"3faf3597.ea43ba","port":5}]},{"x":680,"y":280,"wires":[{"id":"8b49eafc.a02138","port":0}]},{"x":680,"y":320,"wires":[{"id":"8b49eafc.a02138","port":1}]},{"x":680,"y":360,"wires":[{"id":"8b49eafc.a02138","port":2}]},{"x":680,"y":400,"wires":[{"id":"8b49eafc.a02138","port":3}]},{"x":680,"y":440,"wires":[{"id":"8b49eafc.a02138","port":4}]},{"x":680,"y":480,"wires":[{"id":"8b49eafc.a02138","port":5}]},{"x":680,"y":540,"wires":[{"id":"7247d146.a727a","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":"1adf8d0e.cac7f3","type":"switch","z":"8411e384.fb1f9","name":"Scene ID","property":"payload.event.property_key_name","propertyType":"msg","rules":[{"t":"eq","v":"001","vt":"num"},{"t":"eq","v":"002","vt":"num"},{"t":"eq","v":"003","vt":"num"}],"checkall":"true","repair":false,"outputs":3,"x":260,"y":280,"wires":[["8b49eafc.a02138"],["3faf3597.ea43ba"],["7247d146.a727a"]]},{"id":"3faf3597.ea43ba","type":"switch","z":"8411e384.fb1f9","name":"Scene Value (Up)","property":"payload.event.value_raw","propertyType":"msg","rules":[{"t":"eq","v":"0","vt":"num"},{"t":"eq","v":"3","vt":"num"},{"t":"eq","v":"4","vt":"num"},{"t":"eq","v":"5","vt":"num"},{"t":"eq","v":"6","vt":"num"},{"t":"eq","v":"2","vt":"num"}],"checkall":"true","repair":false,"outputs":6,"x":450,"y":160,"wires":[[],[],[],[],[],[]],"outputLabels":["Single Tap Up","Double Tap Up","Triple Tap Up","Quad Tap Up","5 Tap Up","Up held"]},{"id":"7247d146.a727a","type":"switch","z":"8411e384.fb1f9","name":"Scene Value (Config)","property":"payload.event.value_raw","propertyType":"msg","rules":[{"t":"eq","v":"1","vt":"num"}],"checkall":"true","repair":false,"outputs":1,"x":470,"y":540,"wires":[[]],"outputLabels":["Single Config Tap"]},{"id":"8b49eafc.a02138","type":"switch","z":"8411e384.fb1f9","name":"Scene Value (Down)","property":"payload.event.value_raw","propertyType":"msg","rules":[{"t":"eq","v":"0","vt":"num"},{"t":"eq","v":"3","vt":"num"},{"t":"eq","v":"4","vt":"num"},{"t":"eq","v":"5","vt":"num"},{"t":"eq","v":"6","vt":"num"},{"t":"eq","v":"2","vt":"num"}],"checkall":"true","repair":false,"outputs":6,"x":460,"y":400,"wires":[[],[],[],[],[],[]],"outputLabels":["Single Tap Up","Double Tap Up","Triple Tap Up","Quad Tap Up","5 Tap Up","Down held"]},{"id":"c7d51729.fa8688","type":"comment","z":"8411e384.fb1f9","name":"Edit to raw values. 3-6-21","info":"","x":160,"y":80,"wires":[]}]

Updated subflow to add Up/down released options. Changes in first post.

1 Like

Excellent subflow, much appreciated. This was my first Node-Red project and this subflow really shortened the learning curve - a few more Inovellis to add, but looking sweet so far:

Btw I came across a few approaches to Inovelli dimming - combined a few into a subflow that loops +15% for up, -15% for down. Still need the extra ‘stop’ but it’s pretty clean:

Relevant node libraries:

[{"id":"262c8575.6a270a","type":"subflow","name":"Dimmer Loop","info":"","category":"","in":[{"x":40,"y":80,"wires":[{"id":"794d0f18.444d1"}]}],"out":[{"x":580,"y":80,"wires":[{"id":"e162b9ba.124e18","port":0}]}],"env":[],"color":"#DDAA99"},{"id":"794d0f18.444d1","type":"looptimer","z":"262c8575.6a270a","duration":".25","units":"Second","maxloops":"20","maxtimeout":"10","maxtimeoutunits":"Second","name":"Dimmer Loop","x":200,"y":80,"wires":[["e162b9ba.124e18"],[]]},{"id":"e162b9ba.124e18","type":"function","z":"262c8575.6a270a","name":"Dim Up/Down","func":"var updown = msg.payload.event.property_key;\nif(updown == \"002\"){\n    msg.dim = 10;\n} else { msg.dim = -10;}\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","x":420,"y":80,"wires":[[]]},{"id":"c4a7bd17.d0abd","type":"change","z":"6455b5c5.b7ccbc","name":"Stop","rules":[{"t":"set","p":"payload","pt":"msg","to":"stop","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":2970,"y":4140,"wires":[["4e9a066c.e32e98"]]},{"id":"4e9a066c.e32e98","type":"subflow:262c8575.6a270a","z":"6455b5c5.b7ccbc","name":"","env":[],"x":3000,"y":4080,"wires":[["23af4f2f.756a2"]]},{"id":"23af4f2f.756a2","type":"api-call-service","z":"6455b5c5.b7ccbc","name":"Dim Up/Down","server":"ba462cf4.bce49","version":1,"debugenabled":false,"service_domain":"light","service":"turn_on","entityId":"light.den_overhead","data":"{\"brightness_step_pct\":\"{{dim}}\",\"transition\":0.25}","dataType":"json","mergecontext":"","output_location":"","output_location_type":"none","mustacheAltTags":false,"x":3200,"y":4080,"wires":[[]]},{"id":"ba462cf4.bce49","type":"server","name":"Home Assistant","addon":true}]

Playing with the dimmer loop, I realized you can apply this to the LZW30 switches - just call the loop on 2x up/down keypress, and send stop command on config press (or whatever). Would need to adjust the property_key identifier, and maybe reduce the dimming steps to give you time to issue the stop when you want it…

I’m finding this no longer works for me after the latest ZwaveJS upgrade (0.11.0). Here’s what I’m seeing on one dimmer with a double-tap up… though honestly, I’m not sure if this is any different than what it was before:

2021-04-14 09:56:52.548 INFO ZWAVE: Node 60: value notification: 91-0-scene-002 3

The event type changed. You now need to watch for this:
image

I also updated first post to newest subflow which adds config tap 2x if on firmware 1.49+

Thanks - I discovered that yesterday over on the Inovelli forums and updated all of my subflows. For the first time, all of my scene control and the LED notifications are working simultaneously…