ZEN32 Scene Controller - Z-Wave JS

I probably misunderstand your question… To view the rendered YAML, in the editor, click the three dots in the upper right-hand corner. Select “Edit in YAML”. You can view past runs of the automation by clicking Traces.

This looks great. Thanks for providing this template for import into NR. My only question is how do I know which “press” programs what? Like if I want to program what the main button does when held, how do I know which output to set?

tsukraw’s template as posted doesn’t have an option for held or released scenes.

You could use this instead:

[{"id":"bc32d04764594dca","type":"subflow","name":"ZEN32 Scenes","info":"","category":"","in":[{"x":40,"y":120,"wires":[{"id":"06ce5d08da1f53bb"}]}],"out":[{"x":580,"y":40,"wires":[{"id":"c72e7d0f0d14389c","port":0},{"id":"c72e7d0f0d14389c","port":7}]},{"x":590,"y":80,"wires":[{"id":"c72e7d0f0d14389c","port":1},{"id":"c72e7d0f0d14389c","port":8}]},{"x":590,"y":120,"wires":[{"id":"c72e7d0f0d14389c","port":2},{"id":"c72e7d0f0d14389c","port":9}]},{"x":590,"y":160,"wires":[{"id":"c72e7d0f0d14389c","port":3},{"id":"c72e7d0f0d14389c","port":10}]},{"x":590,"y":200,"wires":[{"id":"c72e7d0f0d14389c","port":4},{"id":"c72e7d0f0d14389c","port":11}]},{"x":830,"y":40,"wires":[{"id":"c72e7d0f0d14389c","port":5},{"id":"c72e7d0f0d14389c","port":12}]},{"x":840,"y":100,"wires":[{"id":"c72e7d0f0d14389c","port":6},{"id":"c72e7d0f0d14389c","port":13}]},{"x":580,"y":260,"wires":[{"id":"7758e3e7ca4d370f","port":0},{"id":"7758e3e7ca4d370f","port":7}]},{"x":590,"y":300,"wires":[{"id":"7758e3e7ca4d370f","port":1},{"id":"7758e3e7ca4d370f","port":8}]},{"x":590,"y":340,"wires":[{"id":"7758e3e7ca4d370f","port":2},{"id":"7758e3e7ca4d370f","port":9}]},{"x":590,"y":380,"wires":[{"id":"7758e3e7ca4d370f","port":3},{"id":"7758e3e7ca4d370f","port":10}]},{"x":590,"y":420,"wires":[{"id":"7758e3e7ca4d370f","port":4},{"id":"7758e3e7ca4d370f","port":11}]},{"x":830,"y":260,"wires":[{"id":"7758e3e7ca4d370f","port":5},{"id":"7758e3e7ca4d370f","port":12}]},{"x":840,"y":320,"wires":[{"id":"7758e3e7ca4d370f","port":6},{"id":"7758e3e7ca4d370f","port":13}]},{"x":580,"y":480,"wires":[{"id":"ec12c29947a86482","port":0},{"id":"ec12c29947a86482","port":7}]},{"x":590,"y":520,"wires":[{"id":"ec12c29947a86482","port":1},{"id":"ec12c29947a86482","port":8}]},{"x":590,"y":560,"wires":[{"id":"ec12c29947a86482","port":2},{"id":"ec12c29947a86482","port":9}]},{"x":590,"y":600,"wires":[{"id":"ec12c29947a86482","port":3},{"id":"ec12c29947a86482","port":10}]},{"x":590,"y":640,"wires":[{"id":"ec12c29947a86482","port":4},{"id":"ec12c29947a86482","port":11}]},{"x":830,"y":480,"wires":[{"id":"ec12c29947a86482","port":5},{"id":"ec12c29947a86482","port":12}]},{"x":840,"y":540,"wires":[{"id":"ec12c29947a86482","port":6},{"id":"ec12c29947a86482","port":13}]},{"x":580,"y":700,"wires":[{"id":"be89ca4f6422e9d5","port":0},{"id":"be89ca4f6422e9d5","port":7}]},{"x":590,"y":740,"wires":[{"id":"be89ca4f6422e9d5","port":1},{"id":"be89ca4f6422e9d5","port":8}]},{"x":590,"y":780,"wires":[{"id":"be89ca4f6422e9d5","port":2},{"id":"be89ca4f6422e9d5","port":9}]},{"x":590,"y":820,"wires":[{"id":"be89ca4f6422e9d5","port":3},{"id":"be89ca4f6422e9d5","port":10}]},{"x":590,"y":860,"wires":[{"id":"be89ca4f6422e9d5","port":4},{"id":"be89ca4f6422e9d5","port":11}]},{"x":830,"y":700,"wires":[{"id":"be89ca4f6422e9d5","port":5},{"id":"be89ca4f6422e9d5","port":12}]},{"x":840,"y":760,"wires":[{"id":"be89ca4f6422e9d5","port":6},{"id":"be89ca4f6422e9d5","port":13}]},{"x":590,"y":920,"wires":[{"id":"77398b27e581da5e","port":0},{"id":"77398b27e581da5e","port":7}]},{"x":600,"y":960,"wires":[{"id":"77398b27e581da5e","port":1},{"id":"77398b27e581da5e","port":8}]},{"x":600,"y":1000,"wires":[{"id":"77398b27e581da5e","port":2},{"id":"77398b27e581da5e","port":9}]},{"x":600,"y":1040,"wires":[{"id":"77398b27e581da5e","port":3},{"id":"77398b27e581da5e","port":10}]},{"x":600,"y":1080,"wires":[{"id":"77398b27e581da5e","port":4},{"id":"77398b27e581da5e","port":11}]},{"x":860,"y":1120,"wires":[{"id":"77398b27e581da5e","port":5},{"id":"77398b27e581da5e","port":12}]},{"x":850,"y":980,"wires":[{"id":"77398b27e581da5e","port":6},{"id":"77398b27e581da5e","port":13}]}],"env":[],"meta":{},"color":"#DDAA99","outputLabels":["Button 1 - TAP","Button 1 - TAP x 2","Button 1 - TAP x 3","Button 1 - TAP x 4","Button 1 - TAP x 5","Button 1 - HOLD","Button 1 - RELEASE","Button 2 - TAP","Button 2 - TAP x 2","Button 2 - TAP x 3","Button 2 - TAP x 4","Button 2 - TAP x 5","Button 2 - HOLD","Button 2 - RELEASE","Button 3 - TAP","Button 3 - TAP x 2","Button 3 - TAP x 3","Button 3 - TAP x 4","Button 3 - TAP x 5","Button 3 - HOLD","Button 3 - RELEASE","Button 4 - TAP","Button 4 - TAP x 2","Button 4 - TAP x 3","Button 4 - TAP x 4","Button 4 - TAP x 5","Button 4 - HOLD","Button 4 - RELEASE","Main Button - TAP","Main Button - TAP x 2","Main Button - TAP x 3","Main Button - TAP x 4","Main Button - TAP x 5","Main Button - HOLD","Main Button - RELEASE"]},{"id":"06ce5d08da1f53bb","type":"switch","z":"bc32d04764594dca","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"},{"t":"eq","v":"Scene 004","vt":"str"},{"t":"eq","v":"Scene 005","vt":"str"}],"checkall":"true","repair":false,"outputs":5,"x":100,"y":360,"wires":[["c72e7d0f0d14389c"],["7758e3e7ca4d370f"],["ec12c29947a86482"],["be89ca4f6422e9d5"],["77398b27e581da5e"]]},{"id":"c72e7d0f0d14389c","type":"switch","z":"bc32d04764594dca","name":"Button 1","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"},{"t":"eq","v":"KeyHeldDown","vt":"str"},{"t":"eq","v":"KeyReleased","vt":"str"},{"t":"eq","v":"0","vt":"str"},{"t":"eq","v":"3","vt":"str"},{"t":"eq","v":"4","vt":"str"},{"t":"eq","v":"5","vt":"str"},{"t":"eq","v":"6","vt":"str"},{"t":"eq","v":"2","vt":"str"},{"t":"eq","v":"1","vt":"str"}],"checkall":"true","repair":false,"outputs":14,"x":340,"y":120,"wires":[[],[],[],[],[],[],[],[],[],[],[],[],[],[]],"outputLabels":["TAP x 1","TAP x 2","TAP x 3","TAP x 4","TAP x 5","HOLD","RELEASE",null,null,null,null,null,null,null]},{"id":"7758e3e7ca4d370f","type":"switch","z":"bc32d04764594dca","name":"Button 2","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"},{"t":"eq","v":"KeyHeldDown","vt":"str"},{"t":"eq","v":"KeyReleased","vt":"str"},{"t":"eq","v":"0","vt":"str"},{"t":"eq","v":"3","vt":"str"},{"t":"eq","v":"4","vt":"str"},{"t":"eq","v":"5","vt":"str"},{"t":"eq","v":"6","vt":"str"},{"t":"eq","v":"2","vt":"str"},{"t":"eq","v":"1","vt":"str"}],"checkall":"true","repair":false,"outputs":14,"x":340,"y":340,"wires":[[],[],[],[],[],[],[],[],[],[],[],[],[],[]],"outputLabels":["TAP x 1","TAP x 2","TAP x 3","TAP x 4","TAP x 5","HOLD","RELEASE",null,null,null,null,null,null,null]},{"id":"ec12c29947a86482","type":"switch","z":"bc32d04764594dca","name":"Button 3","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"},{"t":"eq","v":"KeyHeldDown","vt":"str"},{"t":"eq","v":"KeyReleased","vt":"str"},{"t":"eq","v":"0","vt":"str"},{"t":"eq","v":"3","vt":"str"},{"t":"eq","v":"4","vt":"str"},{"t":"eq","v":"5","vt":"str"},{"t":"eq","v":"6","vt":"str"},{"t":"eq","v":"2","vt":"str"},{"t":"eq","v":"1","vt":"str"}],"checkall":"true","repair":false,"outputs":14,"x":340,"y":560,"wires":[[],[],[],[],[],[],[],[],[],[],[],[],[],[]],"outputLabels":["TAP x 1","TAP x 2","TAP x 3","TAP x 4","TAP x 5","HOLD","RELEASE",null,null,null,null,null,null,null]},{"id":"be89ca4f6422e9d5","type":"switch","z":"bc32d04764594dca","name":"Button 4","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"},{"t":"eq","v":"KeyHeldDown","vt":"str"},{"t":"eq","v":"KeyReleased","vt":"str"},{"t":"eq","v":"0","vt":"str"},{"t":"eq","v":"3","vt":"str"},{"t":"eq","v":"4","vt":"str"},{"t":"eq","v":"5","vt":"str"},{"t":"eq","v":"6","vt":"str"},{"t":"eq","v":"2","vt":"str"},{"t":"eq","v":"1","vt":"str"}],"checkall":"true","repair":false,"outputs":14,"x":340,"y":780,"wires":[[],[],[],[],[],[],[],[],[],[],[],[],[],[]],"outputLabels":["TAP x 1","TAP x 2","TAP x 3","TAP x 4","TAP x 5","HOLD","RELEASE",null,null,null,null,null,null,null]},{"id":"77398b27e581da5e","type":"switch","z":"bc32d04764594dca","name":"Main Button","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"},{"t":"eq","v":"KeyHeldDown","vt":"str"},{"t":"eq","v":"KeyReleased","vt":"str"},{"t":"eq","v":"0","vt":"str"},{"t":"eq","v":"3","vt":"str"},{"t":"eq","v":"4","vt":"str"},{"t":"eq","v":"5","vt":"str"},{"t":"eq","v":"6","vt":"str"},{"t":"eq","v":"2","vt":"str"},{"t":"eq","v":"1","vt":"str"}],"checkall":"true","repair":false,"outputs":14,"x":350,"y":1000,"wires":[[],[],[],[],[],[],[],[],[],[],[],[],[],[]],"outputLabels":["TAP x 1","TAP x 2","TAP x 3","TAP x 4","TAP x 5","HOLD","RELEASE",null,null,null,null,null,null,null]}]

Awesome. Thank you! What do you use to trigger these?

Use the “events: all” node with zwave_js_value_notification as the event type connected to a switch node with msg.payload.event.node_id as the property that contains the node id of your ZEN32.

example

Example:

[{"id":"137a3c41bf05db20","type":"switch","z":"273ee9770b457a2b","name":"","property":"payload.event.node_id","propertyType":"msg","rules":[{"t":"eq","v":"4","vt":"num"},{"t":"eq","v":"29","vt":"num"},{"t":"eq","v":"52","vt":"num"}],"checkall":"true","repair":false,"outputs":3,"x":330,"y":1040,"wires":[[],[],[]]},{"id":"48b449794e03b144","type":"server-events","z":"273ee9770b457a2b","name":"HA Events","server":"344e2ab6.3fcc66","version":2,"eventType":"zwave_js_value_notification","exposeToHomeAssistant":true,"eventData":"","haConfig":[{"property":"name","value":"node-red Main Bedroom Scenes"},{"property":"icon","value":""}],"waitForRunning":true,"outputProperties":[{"property":"payload","propertyType":"msg","value":"","valueType":"eventData"},{"property":"topic","propertyType":"msg","value":"$outputData(\"eventData\").event_type","valueType":"jsonata"}],"x":160,"y":1040,"wires":[["137a3c41bf05db20"]]},{"id":"344e2ab6.3fcc66","type":"server","name":"Home Assistant","addon":true,"rejectUnauthorizedCerts":true,"ha_boolean":"","connectionDelay":false,"cacheJson":true,"heartbeat":false,"heartbeatInterval":"","statusSeparator":"","enableGlobalContextStore":false,"credentials":{}}]

Perfect. Thanks so much!

1 Like

For others that are running into issues with this like I was.

My ZEN32 is sending the button press events with a numeric value instead of text like the blueprint up top has. I’ve lightly modified what @fxlt originally provided and renamed some of the user facing labels to identify the buttons with a little more clarity.

See my revisions on GitHub

Open your Home Assistant instance and show the blueprint import dialog with a specific blueprint pre-filled.

1 Like

@N1029676 Thanks for that!

I’m using the scene controller as a switch to control four lights, so I added some loop-events to the blueprint from this one here for some dimming and color temperature control.

Here’s the GitHub gist.

Open your Home Assistant instance and show the blueprint import dialog with a specific blueprint pre-filled.

1 Like

Thank You!!!

is there a way to run multiple switches from one blueprint? i’ve got a ZEN32 on each side of my garage and want to keep them in sync so that all five buttons do the same thing no matter which door you are standing by…

Not that I’m aware of.

After adding this blueprint to Home Assistant, no devices show up in the “device” dropdown even though I have a Zen32 added through Zwave-js-ui. Opening the blueprint in VSC I found the following error under “device”:

input:
  zooz_switch:
    name: Zooz Switch
    description: List of available Zooz ZEN32 switches.
    selector:
      device:
        integration: zwave_js    STRING DOES NOT MATCH THE PATTERN OF “DEPRECIATED^”
        manufacturer: Zooz   STRING DOES NOT MATCH THE PATTERN OF “DEPRECIATED^”
        model: ZEN32   STRING DOES NOT MATCH THE PATTERN OF “DEPRECIATED^”
        multiple: false
  scene_5:
    name: Big Button - Scene 5 - Pressed Once

Not sure if this is because I am using zwave-js-ui or not. Anyone know what the problem could be? Thanks!

Z-wave JS UI version 2.1.1

Edit: I figured it out. Looks the the syntax has changed according to The help docs. Looks like it should be adjusted to thi:

      selector:
        device:
          filter:
            integration: zwave_js
            manufacturer: Zooz
            model: ZEN32
          multiple: false

My Zen32 must have a different value for the model so I just removed the model filter and was able to find the device in the list.

1 Like

Glad you were able to figure it out. Updated the blueprint.

This blueprint seems to be completely borked on latest 11.1 update. Just says automation not available…

(HA needs a bit more improvement on breaking change testing… TP Link also went a little device name breaking.)

Update:
Went to the blueprint in visual studio:

        device:
          integration: zwave_js
          manufacturer: Zooz
          model: ZEN32

these are marked deprecated, that seems to be main culprit
I commented out those last 3 lines and copied the yaml to a new automation and seems working

Yes. I updated the blueprint 3 weeks ago with the new filter list:

        device:
          filter:
            integration: zwave_js
            manufacturer: Zooz
            model: ZEN32
          multiple: false

As far as I know, you have to re-import the blueprint for any changes I make here to be reflected in your local version. Removing the section you did would also work, but would likely allow you to apply the blueprint to any device.

Hello, I have used this blueprint successfully on my ZEN32’s. I recently installed a ZEN32 800LR. I am unable to enable this automation for that device. Does anyone know how to create a device filter that includes multiple device models? I believe that is all it would take to make the existing automation work with the ZEN32 800LR.

They’re just lists:

device:
  filter:
    - integration: zwave_js
      manufacturer: Zooz
      model: ZEN32
    - integration: zwave_js
      manufacturer: Zooz
      model: ZEN32 800LR

Selectors documentation

Looking at the zwave-js github repository, it looks like the model is “ZEN32 800LR”. Can you confirm so I can update the blueprint?

ZEN32 800LR is how it shows in Home Assistant.

Thank you for the assistance.

1 Like

Thanks for continuing to advance this! What is everyone doing to handle dimming of a single or group of lights from the Zen32. My use case is that several of our rooms we use button 5 as the scene control for the “main” lights in the room. Sometimes these are smart bulbs or dimmers. Am i just struggling to handle this or is there an easy way to create this using the blueprint and the “held” and “released” scenes?

Edit: Ideally holding the scene button would decreasingly dim the light/group for as long as its held. And if held and released and held again within a set time would increase the brightness.

Thanks!

1 Like

This is the selector code I used to update my local copy of the blueprint, enabling me to select either a ZEN32 or a ZEN32 800LR controller

      selector:
        device:
          filter:
            - integration: zwave_js
              manufacturer: Zooz
              model: ZEN32
            - integration: zwave_js
              manufacturer: Zooz
              model: ZEN32 800LR
          multiple: false