ZEN32 Scene Controller - Z-Wave JS

I’ve fixed the breaking change, and improved the logging section:

blueprint:
  name: ZEN32 (Z-Wave JS)
  description: Create automations for the Zooz ZEN32 switch using the Z-Wave JS integration.
  domain: automation
  input:
    zooz_switch:
      name: Zooz Switch
      description: List of available Zooz ZEN32 switches.
      selector:
        device:
          integration: zwave_js
          manufacturer: Zooz
          model: ZEN32
    scene_5:
      name: Scene 5 - Pressed Once
      description: Action to run when button is pressed once.
      default: []
      selector:
        action:
    scene_1:
      name: Scene 1 - Pressed Once
      description: Action to run when button is pressed once.
      default: []
      selector:
        action:
    scene_2:
      name: Scene 2 - Pressed Once
      description: Action to run when button is pressed once.
      default: []
      selector:
        action:
    scene_3:
      name: Scene 3 - Pressed Once
      description: Action to run when button is pressed once.
      default: []
      selector:
        action:
    scene_4:
      name: Scene 4 - Pressed Once
      description: Action to run when button is pressed once.
      default: []
      selector:
        action:
    scene_5h:
      name: Scene 5 - Held
      description: Action to run when button is held.
      default: []
      selector:
        action:
    scene_1h:
      name: Scene 1 - Held
      description: Action to run when button is held.
      default: []
      selector:
        action:
    scene_2h:
      name: Scene 2 - Held
      description: Action to run when button is held.
      default: []
      selector:
        action:
    scene_3h:
      name: Scene 3 - Held
      description: Action to run when button is held.
      default: []
      selector:
        action:
    scene_4h:
      name: Scene 4 - Held
      description: Action to run when button is held.
      default: []
      selector:
        action:
    scene_5r:
      name: Scene 5 - Released
      description: Action to run when button is released.
      default: []
      selector:
        action:
    scene_1r:
      name: Scene 1 - Released
      description: Action to run when button is released.
      default: []
      selector:
        action:
    scene_2r:
      name: Scene 2 - Released
      description: Action to run when button is released.
      default: []
      selector:
        action:
    scene_3r:
      name: Scene 3 - Released
      description: Action to run when button is released.
      default: []
      selector:
        action:
    scene_4r:
      name: Scene 4 - Released
      description: Action to run when button is released.
      default: []
      selector:
        action:
    scene_52:
      name: Scene 5 - Pressed 2x
      description: Action to run when button is pressed twice.
      default: []
      selector:
        action:
    scene_12:
      name: Scene 1 - Pressed 2x
      description: Action to run when button is pressed twice.
      default: []
      selector:
        action:
    scene_22:
      name: Scene 2 - Pressed 2x
      description: Action to run when button is pressed twice.
      default: []
      selector:
        action:
    scene_32:
      name: Scene 3 - Pressed 2x
      description: Action to run when button is pressed twice.
      default: []
      selector:
        action:
    scene_42:
      name: Scene 4 - Pressed 2x
      description: Action to run when button is pressed twice.
      default: []
      selector:
        action:
    scene_53:
      name: Scene 5 - Pressed 3x
      description: Action to run when button is pressed three times.
      default: []
      selector:
        action:
    scene_13:
      name: Scene 1 - Pressed 3x
      description: Action to run when button is pressed three times.
      default: []
      selector:
        action:
    scene_23:
      name: Scene 2 - Pressed 3x
      description: Action to run when button is pressed three times.
      default: []
      selector:
        action:
    scene_33:
      name: Scene 3 - Pressed 3x
      description: Action to run when button is pressed three times.
      default: []
      selector:
        action:
    scene_43:
      name: Scene 4 - Pressed 3x
      description: Action to run when button is pressed three times.
      default: []
      selector:
        action:
    scene_54:
      name: Scene 5 - Pressed 4x
      description: Action to run when button is pressed four times.
      default: []
      selector:
        action:
    scene_14:
      name: Scene 1 - Pressed 4x
      description: Action to run when button is pressed four times.
      default: []
      selector:
        action:
    scene_24:
      name: Scene 2 - Pressed 4x
      description: Action to run when button is pressed four times.
      default: []
      selector:
        action:
    scene_34:
      name: Scene 3 - Pressed 4x
      description: Action to run when button is pressed four times.
      default: []
      selector:
        action:
    scene_44:
      name: Scene 4 - Pressed 4x
      description: Action to run when button is pressed four times.
      default: []
      selector:
        action:
    scene_55:
      name: Scene 5 - Pressed 5x
      description: Action to run when button is pressed five times.
      default: []
      selector:
        action:
    scene_15:
      name: Scene 1 - Pressed 5x
      description: Action to run when button is pressed five times.
      default: []
      selector:
        action:
    scene_25:
      name: Scene 2 - Pressed 5x
      description: Action to run when button is pressed five times.
      default: []
      selector:
        action:
    scene_35:
      name: Scene 3 - Pressed 5x
      description: Action to run when button is pressed five times.
      default: []
      selector:
        action:
    scene_45:
      name: Scene 4 - Pressed 5x
      description: Action to run when button is pressed five times.
      default: []
      selector:
        action:
  source_url: https://community.home-assistant.io/t/zen32-scene-controller-z-wave-js/292610
mode: single
max_exceeded: silent
variables:
  device_id: !input 'zooz_switch'
trigger:
- platform: event
  event_type: zwave_js_value_notification
condition: '{{ trigger.event.data.device_id == device_id }}'
action:
- variables:
    property_key_name: '{{ trigger.event.data.property_key_name }}'
    label: '{{ trigger.event.data.label }}'
    command_class_name: '{{ trigger.event.data.command_class_name }}'
    value: '{{ trigger.event.data.value }}'
- service: logbook.log
  data:
    name: 'Z-Wave JS'
    message: 'received event: {{ command_class_name }} - {{ value }} - {{ label }}'
- choose:
  - conditions: '{{ property_key_name == ''001'' and value == ''KeyPressed'' }}'
    sequence: !input 'scene_1'
  - conditions: '{{ property_key_name == ''001'' and value == ''KeyHeldDown'' }}'
    sequence: !input 'scene_1h'
  - conditions: '{{ property_key_name == ''001'' and value == ''KeyReleased'' }}'
    sequence: !input 'scene_1r'
  - conditions: '{{ property_key_name == ''001'' and value == ''KeyPressed2x'' }}'
    sequence: !input 'scene_12'
  - conditions: '{{ property_key_name == ''001'' and value == ''KeyPressed3x'' }}'
    sequence: !input 'scene_13'
  - conditions: '{{ property_key_name == ''001'' and value == ''KeyPressed4x'' }}'
    sequence: !input 'scene_14'
  - conditions: '{{ property_key_name == ''001'' and value == ''KeyPressed5x'' }}'
    sequence: !input 'scene_15'
  - conditions: '{{ property_key_name == ''002'' and value == ''KeyPressed'' }}'
    sequence: !input 'scene_2'
  - conditions: '{{ property_key_name == ''002'' and value == ''KeyHeldDown'' }}'
    sequence: !input 'scene_2h'
  - conditions: '{{ property_key_name == ''002'' and value == ''KeyReleased'' }}'
    sequence: !input 'scene_2r'
  - conditions: '{{ property_key_name == ''002'' and value == ''KeyPressed2x'' }}'
    sequence: !input 'scene_22'
  - conditions: '{{ property_key_name == ''002'' and value == ''KeyPressed3x'' }}'
    sequence: !input 'scene_23'
  - conditions: '{{ property_key_name == ''002'' and value == ''KeyPressed4x'' }}'
    sequence: !input 'scene_24'
  - conditions: '{{ property_key_name == ''002'' and value == ''KeyPressed5x'' }}'
    sequence: !input 'scene_25'
  - conditions: '{{ property_key_name == ''003'' and value == ''KeyPressed'' }}'
    sequence: !input 'scene_3'
  - conditions: '{{ property_key_name == ''003'' and value == ''KeyHeldDown'' }}'
    sequence: !input 'scene_3h'
  - conditions: '{{ property_key_name == ''003'' and value == ''KeyReleased'' }}'
    sequence: !input 'scene_3r'
  - conditions: '{{ property_key_name == ''003'' and value == ''KeyPressed2x'' }}'
    sequence: !input 'scene_32'
  - conditions: '{{ property_key_name == ''003'' and value == ''KeyPressed3x'' }}'
    sequence: !input 'scene_33'
  - conditions: '{{ property_key_name == ''003'' and value == ''KeyPressed4x'' }}'
    sequence: !input 'scene_34'
  - conditions: '{{ property_key_name == ''003'' and value == ''KeyPressed5x'' }}'
    sequence: !input 'scene_35'
  - conditions: '{{ property_key_name == ''004'' and value == ''KeyPressed'' }}'
    sequence: !input 'scene_4'
  - conditions: '{{ property_key_name == ''004'' and value == ''KeyHeldDown'' }}'
    sequence: !input 'scene_4h'
  - conditions: '{{ property_key_name == ''004'' and value == ''KeyReleased'' }}'
    sequence: !input 'scene_4r'
  - conditions: '{{ property_key_name == ''004'' and value == ''KeyPressed2x'' }}'
    sequence: !input 'scene_42'
  - conditions: '{{ property_key_name == ''004'' and value == ''KeyPressed3x'' }}'
    sequence: !input 'scene_43'
  - conditions: '{{ property_key_name == ''004'' and value == ''KeyPressed4x'' }}'
    sequence: !input 'scene_44'
  - conditions: '{{ property_key_name == ''004'' and value == ''KeyPressed5x'' }}'
    sequence: !input 'scene_45'
  - conditions: '{{ property_key_name == ''005'' and value == ''KeyPressed'' }}'
    sequence: !input 'scene_5'
  - conditions: '{{ property_key_name == ''005'' and value == ''KeyHeldDown'' }}'
    sequence: !input 'scene_5h'
  - conditions: '{{ property_key_name == ''005'' and value == ''KeyReleased'' }}'
    sequence: !input 'scene_5r'
  - conditions: '{{ property_key_name == ''005'' and value == ''KeyPressed2x'' }}'
    sequence: !input 'scene_52'
  - conditions: '{{ property_key_name == ''005'' and value == ''KeyPressed3x'' }}'
    sequence: !input 'scene_53'
  - conditions: '{{ property_key_name == ''005'' and value == ''KeyPressed4x'' }}'
    sequence: !input 'scene_54'
  - conditions: '{{ property_key_name == ''005'' and value == ''KeyPressed5x'' }}'
    sequence: !input 'scene_55'

5 Likes

Thanks for this works great!

Hey guys,
Fairly new to all this.
I have loaded the blueprint for the ZEN32. However the only button I see in the logbook is the main relay button. The 4 scene buttons when pressed dont show anything in the log book.

Any ideas?

Hi Tucker! The scene switch is a little funny, the only “switch” in Home Assistant is the “relay” in the switch. This relay is usually controlled by the big button on the front (can be changed using the configuration parameters). Each of the small buttons and multi-presses on any of the buttons trigger a “scene change” which is not a switch or a log book entry it is an event.

The easiest place to look for the “scene changes” is to go to the “Developer Tools” → “Events”. This is also one of the places to check for problems with this blueprint. On the right hand side there should be a column listing “available events” check for something labeled zwave. If it is “zwave_js_event” then you can import the blueprint use the forum url (but be warned that in the future when you update HASS to a new version that blueprint will break) if it is “zwave_js_value_notification” then you are going to need to copy and manually create the version by @blhoward2 (here).

That events page is the best place to check if everything is working. So in the “Listen to events” and type in zwave_js_value_notification (or the previous name) and choose “start listening”. Then go push the buttons on your scene controller, you should see them show up in the listener, if you don’t see them then there are other issues.

Now that you know the events are showing up, you should be able to create an automation from the blueprint for that switch. Then in the blueprint you can assign actions for when that button is pushed.

Hope that helps.
Matt

Hey Matt,
Thank you! That was the trick. I needed to update that event_type: zwave_js_value_notification
I could see this switch/scene controller being real nice for people.

In my case, I have a number of LED strips around the house but didn’t have a easy way for your every day person to control them in a old school method.

Example: I have LED strip under my kitchen island, but currently couldn’t control outside of HA or phone app.
So I am going to swap out the kitchen light switch with the ZEN32. Then setup the 4 scene buttons for pre assigned island LED colors so your every day person can just push a button to turn them on/off.

I know the ZEN32 is a fairly new unit on the market. Do you think this will eventually be built into HA or will it always require the blueprint and modifying after upgrades?

1 Like

So I took this a little bit farther for anyone interested in Node-Red option.
Made a sub flow now that I understand how the event information works :slight_smile:
Gets to be a lot of outputs since each button has 5 pushes.

image

[{"id":"3985bb90.d67e54","type":"subflow","name":"ZEN32 scenes ZwaveJS","info":"","category":"","in":[{"x":60,"y":180,"wires":[{"id":"fe008dc7.1d271"}]}],"out":[{"x":840,"y":80,"wires":[{"id":"46310b70.e20634","port":0}]},{"x":840,"y":120,"wires":[{"id":"46310b70.e20634","port":1}]},{"x":840,"y":160,"wires":[{"id":"46310b70.e20634","port":2}]},{"x":840,"y":200,"wires":[{"id":"46310b70.e20634","port":3}]},{"x":840,"y":240,"wires":[{"id":"46310b70.e20634","port":4}]},{"x":840,"y":300,"wires":[{"id":"54e15801.d11ee8","port":0}]},{"x":840,"y":340,"wires":[{"id":"54e15801.d11ee8","port":1}]},{"x":840,"y":380,"wires":[{"id":"54e15801.d11ee8","port":2}]},{"x":840,"y":420,"wires":[{"id":"54e15801.d11ee8","port":3}]},{"x":840,"y":460,"wires":[{"id":"54e15801.d11ee8","port":4}]},{"x":840,"y":520,"wires":[{"id":"8c9608dc.26b058","port":0}]},{"x":840,"y":560,"wires":[{"id":"8c9608dc.26b058","port":1}]},{"x":840,"y":600,"wires":[{"id":"8c9608dc.26b058","port":2}]},{"x":840,"y":640,"wires":[{"id":"8c9608dc.26b058","port":3}]},{"x":840,"y":680,"wires":[{"id":"8c9608dc.26b058","port":4}]},{"x":840,"y":740,"wires":[{"id":"5fbe928d.fa05fc","port":0}]},{"x":840,"y":780,"wires":[{"id":"5fbe928d.fa05fc","port":1}]},{"x":840,"y":820,"wires":[{"id":"5fbe928d.fa05fc","port":2}]},{"x":840,"y":860,"wires":[{"id":"5fbe928d.fa05fc","port":3}]},{"x":840,"y":900,"wires":[{"id":"5fbe928d.fa05fc","port":4}]},{"x":840,"y":960,"wires":[{"id":"19d15a6.6a2fca6","port":0}]},{"x":840,"y":1000,"wires":[{"id":"19d15a6.6a2fca6","port":1}]},{"x":840,"y":1040,"wires":[{"id":"19d15a6.6a2fca6","port":2}]},{"x":840,"y":1080,"wires":[{"id":"19d15a6.6a2fca6","port":3}]},{"x":840,"y":1120,"wires":[{"id":"19d15a6.6a2fca6","port":4}]}],"env":[],"meta":{},"color":"#DDAA99","outputLabels":["Main - 1 Press","Main - 2 Press","Main - 3 Press","Main - 4 Press","Main - 5 Press","Scene 1 - 1 Press","Scene 1 - 2 Press","Scene 1 - 3 Press","Scene 1 - 4 Press","Scene 1 - 5 Press","Scene 2 - 1 Press","Scene 2 - 2 Press","Scene 2 - 3 Press","Scene 2 - 4 Press","Scene 2 - 5 Press","Scene 3 - 1 Press","Scene 3 - 2 Press","Scene 3 - 3 Press","Scene 3 - 4 Press","Scene 3 - 5 Press","Scene 4 - 1 Press","Scene 4 - 2 Press","Scene 4 - 3 Press","Scene 4 - 4 Press","Scene 4 - 5 Press"]},{"id":"fe008dc7.1d271","type":"switch","z":"3985bb90.d67e54","name":"Scene ID Button","property":"payload.event.property_key_name","propertyType":"msg","rules":[{"t":"eq","v":"005","vt":"str"},{"t":"eq","v":"001","vt":"num"},{"t":"eq","v":"002","vt":"num"},{"t":"eq","v":"003","vt":"num"},{"t":"eq","v":"004","vt":"str"}],"checkall":"true","repair":false,"outputs":5,"x":240,"y":180,"wires":[["46310b70.e20634"],["54e15801.d11ee8"],["8c9608dc.26b058"],["5fbe928d.fa05fc"],["19d15a6.6a2fca6"]],"outputLabels":["Main Button","Scene 1","Scene 2","Scene 3","Scene 4"]},{"id":"54e15801.d11ee8","type":"switch","z":"3985bb90.d67e54","name":"Scene Key 1","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"}],"checkall":"true","repair":false,"outputs":5,"x":690,"y":380,"wires":[[],[],[],[],[]],"outputLabels":["1 Press","2 Press","3 Press","4 Press","5 Press"]},{"id":"33b55a97.ca0466","type":"comment","z":"3985bb90.d67e54","name":"Zooz ZEN32 - 5/3/2021","info":"","x":140,"y":20,"wires":[]},{"id":"46310b70.e20634","type":"switch","z":"3985bb90.d67e54","name":"Main Relay","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"}],"checkall":"true","repair":false,"outputs":5,"x":690,"y":160,"wires":[[],[],[],[],[]],"outputLabels":["1 Press","2 Press","3 Press","4 Press","5 Press"]},{"id":"8c9608dc.26b058","type":"switch","z":"3985bb90.d67e54","name":"Scene Key 2","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"}],"checkall":"true","repair":false,"outputs":5,"x":690,"y":600,"wires":[[],[],[],[],[]],"outputLabels":["1 Press","2 Press","3 Press","4 Press","5 Press"]},{"id":"5fbe928d.fa05fc","type":"switch","z":"3985bb90.d67e54","name":"Scene Key 3","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"}],"checkall":"true","repair":false,"outputs":5,"x":690,"y":820,"wires":[[],[],[],[],[]],"outputLabels":["1 Press","2 Press","3 Press","4 Press","5 Press"]},{"id":"19d15a6.6a2fca6","type":"switch","z":"3985bb90.d67e54","name":"Scene Key 4","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"}],"checkall":"true","repair":false,"outputs":5,"x":690,"y":1040,"wires":[[],[],[],[],[]],"outputLabels":["1 Press","2 Press","3 Press","4 Press","5 Press"]},{"id":"f18ec9d8.e1cbf8","type":"comment","z":"3985bb90.d67e54","name":"Each Output Represents a Key Press","info":"","x":190,"y":60,"wires":[]}]
5 Likes

No. Scene events are stateless messages meant to be reacted to, which is what the blueprint does.

@tsukraw , I tried to copy your flow into my Node-Red in HA but it does not seem to display correctly. The import seems to work but I don’t get any of the nodes or flow lines to display. I just get a blank flow page. Any idea if it may be related to the size of the flow?

@Papester
So the code i provided only loads the subflow “The second picture”.
This should add it in the nodes list labeled a “ZEN32 scenes Zwave.SJ”

Here is the code for the first screen shot where have the nodes that utilize the sub flow.
Let me know if this works for you.

[{"id":"3985bb90.d67e54","type":"subflow","name":"ZEN32 scenes ZwaveJS","info":"","category":"","in":[{"x":60,"y":180,"wires":[{"id":"fe008dc7.1d271"}]}],"out":[{"x":840,"y":80,"wires":[{"id":"46310b70.e20634","port":0}]},{"x":840,"y":120,"wires":[{"id":"46310b70.e20634","port":1}]},{"x":840,"y":160,"wires":[{"id":"46310b70.e20634","port":2}]},{"x":840,"y":200,"wires":[{"id":"46310b70.e20634","port":3}]},{"x":840,"y":240,"wires":[{"id":"46310b70.e20634","port":4}]},{"x":840,"y":300,"wires":[{"id":"54e15801.d11ee8","port":0}]},{"x":840,"y":340,"wires":[{"id":"54e15801.d11ee8","port":1}]},{"x":840,"y":380,"wires":[{"id":"54e15801.d11ee8","port":2}]},{"x":840,"y":420,"wires":[{"id":"54e15801.d11ee8","port":3}]},{"x":840,"y":460,"wires":[{"id":"54e15801.d11ee8","port":4}]},{"x":840,"y":520,"wires":[{"id":"8c9608dc.26b058","port":0}]},{"x":840,"y":560,"wires":[{"id":"8c9608dc.26b058","port":1}]},{"x":840,"y":600,"wires":[{"id":"8c9608dc.26b058","port":2}]},{"x":840,"y":640,"wires":[{"id":"8c9608dc.26b058","port":3}]},{"x":840,"y":680,"wires":[{"id":"8c9608dc.26b058","port":4}]},{"x":840,"y":740,"wires":[{"id":"5fbe928d.fa05fc","port":0}]},{"x":840,"y":780,"wires":[{"id":"5fbe928d.fa05fc","port":1}]},{"x":840,"y":820,"wires":[{"id":"5fbe928d.fa05fc","port":2}]},{"x":840,"y":860,"wires":[{"id":"5fbe928d.fa05fc","port":3}]},{"x":840,"y":900,"wires":[{"id":"5fbe928d.fa05fc","port":4}]},{"x":840,"y":960,"wires":[{"id":"19d15a6.6a2fca6","port":0}]},{"x":840,"y":1000,"wires":[{"id":"19d15a6.6a2fca6","port":1}]},{"x":840,"y":1040,"wires":[{"id":"19d15a6.6a2fca6","port":2}]},{"x":840,"y":1080,"wires":[{"id":"19d15a6.6a2fca6","port":3}]},{"x":840,"y":1120,"wires":[{"id":"19d15a6.6a2fca6","port":4}]}],"env":[],"meta":{},"color":"#DDAA99","outputLabels":["Main - 1 Press","Main - 2 Press","Main - 3 Press","Main - 4 Press","Main - 5 Press","Scene 1 - 1 Press","Scene 1 - 2 Press","Scene 1 - 3 Press","Scene 1 - 4 Press","Scene 1 - 5 Press","Scene 2 - 1 Press","Scene 2 - 2 Press","Scene 2 - 3 Press","Scene 2 - 4 Press","Scene 2 - 5 Press","Scene 3 - 1 Press","Scene 3 - 2 Press","Scene 3 - 3 Press","Scene 3 - 4 Press","Scene 3 - 5 Press","Scene 4 - 1 Press","Scene 4 - 2 Press","Scene 4 - 3 Press","Scene 4 - 4 Press","Scene 4 - 5 Press"]},{"id":"fe008dc7.1d271","type":"switch","z":"3985bb90.d67e54","name":"Scene ID Button","property":"payload.event.property_key_name","propertyType":"msg","rules":[{"t":"eq","v":"005","vt":"str"},{"t":"eq","v":"001","vt":"num"},{"t":"eq","v":"002","vt":"num"},{"t":"eq","v":"003","vt":"num"},{"t":"eq","v":"004","vt":"str"}],"checkall":"true","repair":false,"outputs":5,"x":240,"y":180,"wires":[["46310b70.e20634"],["54e15801.d11ee8"],["8c9608dc.26b058"],["5fbe928d.fa05fc"],["19d15a6.6a2fca6"]],"outputLabels":["Main Button","Scene 1","Scene 2","Scene 3","Scene 4"]},{"id":"54e15801.d11ee8","type":"switch","z":"3985bb90.d67e54","name":"Scene Key 1","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"}],"checkall":"true","repair":false,"outputs":5,"x":690,"y":380,"wires":[[],[],[],[],[]],"outputLabels":["1 Press","2 Press","3 Press","4 Press","5 Press"]},{"id":"33b55a97.ca0466","type":"comment","z":"3985bb90.d67e54","name":"Zooz ZEN32 - 5/3/2021","info":"","x":140,"y":20,"wires":[]},{"id":"46310b70.e20634","type":"switch","z":"3985bb90.d67e54","name":"Main Relay","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"}],"checkall":"true","repair":false,"outputs":5,"x":690,"y":160,"wires":[[],[],[],[],[]],"outputLabels":["1 Press","2 Press","3 Press","4 Press","5 Press"]},{"id":"8c9608dc.26b058","type":"switch","z":"3985bb90.d67e54","name":"Scene Key 2","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"}],"checkall":"true","repair":false,"outputs":5,"x":690,"y":600,"wires":[[],[],[],[],[]],"outputLabels":["1 Press","2 Press","3 Press","4 Press","5 Press"]},{"id":"5fbe928d.fa05fc","type":"switch","z":"3985bb90.d67e54","name":"Scene Key 3","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"}],"checkall":"true","repair":false,"outputs":5,"x":690,"y":820,"wires":[[],[],[],[],[]],"outputLabels":["1 Press","2 Press","3 Press","4 Press","5 Press"]},{"id":"19d15a6.6a2fca6","type":"switch","z":"3985bb90.d67e54","name":"Scene Key 4","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"}],"checkall":"true","repair":false,"outputs":5,"x":690,"y":1040,"wires":[[],[],[],[],[]],"outputLabels":["1 Press","2 Press","3 Press","4 Press","5 Press"]},{"id":"f18ec9d8.e1cbf8","type":"comment","z":"3985bb90.d67e54","name":"Each Output Represents a Key Press","info":"","x":190,"y":60,"wires":[]},{"id":"b0776f72.909e2","type":"tab","label":"Scene-export","disabled":false,"info":""},{"id":"d9473beb.de9c58","type":"server-events","z":"b0776f72.909e2","name":"zwave_js_value_notification","server":"8d399f83.3bc09","event_type":"zwave_js_value_notification","exposeToHomeAssistant":false,"haConfig":[{"property":"name","value":""},{"property":"icon","value":""}],"waitForRunning":true,"x":160,"y":200,"wires":[["bcb031ab.43f3"]]},{"id":"bcb031ab.43f3","type":"switch","z":"b0776f72.909e2","name":"Zen32 Switch","property":"payload.event.node_id","propertyType":"msg","rules":[{"t":"eq","v":"11","vt":"str"}],"checkall":"true","repair":false,"outputs":1,"x":380,"y":200,"wires":[["861c77b3.db4728"]]},{"id":"861c77b3.db4728","type":"subflow:3985bb90.d67e54","z":"b0776f72.909e2","name":"Zen32","env":[],"x":530,"y":200,"wires":[[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[]]},{"id":"8d399f83.3bc09","type":"server","name":"Home Assistant","addon":true}]
1 Like

Got it. Thanks for your help and effort towards this flow.

Anyone know if there’s a way to disable the multi-presses? I notices that pressing the main relay has a slight delay, and activating it through HA actually seems way faster. I’m guessing this is because it has to leave a slight gap for multi-presses. I’d love to get rid of that, as I’m not a big multi-press fan and will probably only have 5 scenes.

My guess is that this responsibility would lie with ZWaveJS, I believe they’d need to set up this device profile as something that shows as 5 switches (or more).

I think some Zooz switches have a configuration bit to do something like you describe, but I don’t see it for this one. You can e-mail the support people at Zooz asking about it, they have been very responsive to my e-mails an inquiries in the past.

If anyone wants to here is an import button which uses the latest version posted by @blhoward2 above, plus some small changes to make it clear which button is for which scene in the automation.

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

3 Likes

Thank you @blhoward2 and @MattMattMattMattttMattMattMatt

I’ve been watching this thread so that keep up with any issues and how to resolve them. I had the old blueprint, and saw that it had issues. Updating and removing traces of the old fixed and got everything working as expected.

Is there a way to control the leds on the Zen32? My automation has multiple steps, and I wanted the led to be a different color for each step. Is this feasible?

@triwizard Absolutely there is, I use a separate automation for that because I also want the LEDs updated when the devices are turned on from other sources. This is an example I did using the MQTT method (Keep states in sync between scene controller and Z-Wave switched outlet - #8 by MattMattMattMatt)

However you can do the same thing with the Zwave JS (not MQTT) method. This is an example of a script that I call to turn on or off the led based on if the fan is running:


alias: 'Patio-DR/LR: Sync Scene Switch Lights: Fan'
sequence:
  - choose:
      - conditions:
          - condition: state
            entity_id: fan.patio_ceiling_fan
            state: 'off'
        sequence:
          - service: zwave_js.bulk_set_partial_config_parameters
            target:
              device_id:
                - 6d0726d77c652e5f37071bf7ad0eae42
                - d7617e673d18382dde61419078f4c021
            data:
              parameter: '5'
              value: 2
    default:
      - service: zwave_js.bulk_set_partial_config_parameters
        target:
          device_id:
            - 6d0726d77c652e5f37071bf7ad0eae42
            - d7617e673d18382dde61419078f4c021
        data:
          parameter: '5'
          value: 3
mode: single

Note the “bulk set” is used to set multiple devices (I’m syncing two switches), not sure if it matters or not if you just want to update one or not.

4 Likes

@MattMattMattMatt Thank you

Thank you so much for creating the sub-flow for the ZEN32. It made adding the ZEN32 to my setup super easy!

Commands triggered via the ZEN32 seem to be super slow, and it may well be a coincidence but I noticed this in the Zwave log and am wondering whether it is excessive:

Node 104 is my new (and only) ZEN32. It keeps repeating “treating BasicCC::Set as a report” but I do not know what that means and google was of no help. Something that might be related is Parameter 20 which I enabled. I disabled the relay and use the main button to turn on/off the LIFX bulb powered by this controller. It was my guess that I had to enable parameter 20 in order for Home Assistant to be able to use Scene 5 (big button) to control my LIFX without switching the relay. Is that not so? If not, what is Parameter 20 for?

2021-09-26T02:31:51.406Z CNTRLR   [Node 104] treating BasicCC::Set as a report
2021-09-26T02:32:04.657Z CNTRLR   [Node 104] treating BasicCC::Set as a report
2021-09-26T02:32:11.488Z CNTRLR   [Node 042] treating BasicCC::Set as a value event
2021-09-26T02:32:53.612Z CNTRLR   [Node 104] treating BasicCC::Set as a report
2021-09-26T02:33:06.860Z CNTRLR   [Node 104] treating BasicCC::Set as a report
2021-09-26T02:33:19.717Z CNTRLR   [Node 104] treating BasicCC::Set as a report
2021-09-26T02:33:32.969Z CNTRLR   [Node 104] treating BasicCC::Set as a report
2021-09-26T02:33:44.984Z CNTRLR   [Node 104] treating BasicCC::Set as a report
2021-09-26T02:33:54.038Z CNTRLR   [Node 104] treating BasicCC::Set as a report
2021-09-26T02:34:04.443Z CNTRLR   [Node 104] treating BasicCC::Set as a report
2021-09-26T02:34:20.482Z CNTRLR   [Node 104] treating BasicCC::Set as a report
2021-09-26T02:34:29.161Z CNTRLR   [Node 104] treating BasicCC::Set as a report
2021-09-26T02:34:40.126Z CNTRLR   [Node 104] treating BasicCC::Set as a report
2021-09-26T02:34:53.362Z CNTRLR   [Node 104] treating BasicCC::Set as a report
2021-09-26T02:35:08.479Z CNTRLR   [Node 104] treating BasicCC::Set as a report
2021-09-26T02:35:21.716Z CNTRLR   [Node 104] treating BasicCC::Set as a report
2021-09-26T02:35:30.396Z CNTRLR   [Node 104] treating BasicCC::Set as a report
2021-09-26T02:35:42.433Z CNTRLR   [Node 104] treating BasicCC::Set as a report
2021-09-26T02:35:55.668Z CNTRLR   [Node 104] treating BasicCC::Set as a report
2021-09-26T02:36:30.609Z CNTRLR   [Node 104] treating BasicCC::Set as a report
2021-09-26T02:36:44.645Z CNTRLR   [Node 104] treating BasicCC::Set as a report
2021-09-26T02:36:58.671Z CNTRLR   [Node 104] treating BasicCC::Set as a report
2021-09-26T02:37:27.315Z CNTRLR   [Node 104] treating BasicCC::Set as a report
2021-09-26T02:37:41.402Z CNTRLR   [Node 104] treating BasicCC::Set as a report
2021-09-26T02:37:46.461Z CNTRLR « [Node 079] received wakeup notification
2021-09-26T02:37:46.462Z CNTRLR   [Node 079] The node is now awake.
2021-09-26T02:37:47.514Z CNTRLR » [Node 079] Sending node back to sleep...
2021-09-26T02:37:47.566Z CNTRLR   [Node 079] The node is now asleep.
2021-09-26T02:39:58.520Z CNTRLR   [Node 104] treating BasicCC::Set as a report
2021-09-26T02:40:09.016Z CNTRLR   [Node 104] treating BasicCC::Set as a report
2021-09-26T02:40:21.593Z CNTRLR « [Node 064] received wakeup notification
2021-09-26T02:40:21.595Z CNTRLR   [Node 064] The node is now awake.
2021-09-26T02:40:22.258Z CNTRLR   [Node 104] treating BasicCC::Set as a report
2021-09-26T02:40:22.695Z CNTRLR » [Node 064] Sending node back to sleep...
2021-09-26T02:40:22.745Z CNTRLR   [Node 064] The node is now asleep.
2021-09-26T02:40:37.573Z CNTRLR   [Node 104] treating BasicCC::Set as a report
2021-09-26T02:40:51.665Z CNTRLR   [Node 104] treating BasicCC::Set as a report
2021-09-26T02:41:00.345Z CNTRLR   [Node 104] treating BasicCC::Set as a report
2021-09-26T02:41:13.580Z CNTRLR   [Node 104] treating BasicCC::Set as a report
2021-09-26T02:42:17.966Z CNTRLR « [Node 063] received wakeup notification
2021-09-26T02:42:17.967Z CNTRLR   [Node 063] The node is now awake.
2021-09-26T02:42:18.969Z CNTRLR » [Node 063] Sending node back to sleep...
2021-09-26T02:42:19.034Z CNTRLR   [Node 063] The node is now asleep.
2021-09-26T02:43:12.142Z CNTRLR   [Node 104] treating BasicCC::Set as a report
2021-09-26T02:43:27.317Z CNTRLR   [Node 104] treating BasicCC::Set as a report
2021-09-26T02:44:55.927Z CNTRLR   [Node 104] treating BasicCC::Set as a report
2021-09-26T02:45:09.159Z CNTRLR   [Node 104] treating BasicCC::Set as a report
2021-09-26T02:45:20.070Z CNTRLR   [Node 104] treating BasicCC::Set as a report
2021-09-26T02:45:33.295Z CNTRLR   [Node 104] treating BasicCC::Set as a report
2021-09-26T02:47:53.947Z CNTRLR   [Node 104] treating BasicCC::Set as a report
2021-09-26T02:48:02.630Z CNTRLR   [Node 104] treating BasicCC::Set as a report
2021-09-26T02:48:12.999Z CNTRLR   [Node 104] treating BasicCC::Set as a report
2021-09-26T02:48:25.495Z CNTRLR   [Node 104] treating BasicCC::Set as a report
2021-09-26T02:48:31.638Z CNTRLR « [Node 055] Received updated node info