ZEN32 Scene Controller - Z-Wave JS

thats what i thought, and just went through the factory reset process but at the end it was still connected to my zwave network, and i can not run the factory reset again.

guess its a defective switch so ill send a ticket in to zooz.

Try powering it off at the breaker and restarting it before you toss in a towel… One of mine did weird things like this right after I upgraded it to the 10. x firmware. Killing power and bringing it back then a factory reset and it’s been ticking along ever since.

Also if you joined it using qr code smart start in ZwJS2mqtt this thing gets AGRESSIVE about trying to re-add itself. :rofl:

that seems to sort of done something i was able to factory reset it but when trying to add it back in its stuck at interviewing node for the past 5+ minutes. never had a node take this long at initial interview. guess i’ll give it some time and see.

however i’m seeing some weird error in the logs which seem to indicate there is something wrong with the auth.


even though it completed S2 auth according to zwave js.
image

as a hail mary i excluded it again and tried including it with no security. it completed inclusion and now i can see the button presses in the zwave js logs. i have a ticket open with zooz so we’ll see what they say.

just for anyone else seeing this, i get firmware 10.20 from zooz and after upgrade it the zen32 joined S2 authenticate with no issues and its running fine.

2 Likes

m1dhun,

Thank you so much! I had noticed that as well when looking through the events. Updated the blueprint and all is well! Wonder what prompted Zooz to change the value from KeyPressed to numeral values

Hi, thanks for providing this blueprint. I used some of the stuff in here to create a couple of blueprints that I thought I’d share :slight_smile:

One lets you use one of the buttons as a light switch (tap for toggle, double-tap for full brightness, hold for night light). I like to use this for a light group on the big button and individual lights on the small buttons. The other automation will update the indicator light to match the state of that light you linked the button to.
Control a Light with a Button on a Zooz ZEN32 Scene Controller - Blueprints Exchange - Home Assistant Community (home-assistant.io)
Set the Indicator Light on a Zooz ZEN32 Scene Controller button to Match the State of a Light - Blueprints Exchange - Home Assistant Community (home-assistant.io)

Hey Guys need some help with the ZEN32 Switch. I have a no load ZEN32 ontop of the stairs and a load at the bottom, looking to set them up as a virtual 3 way. I am trying to have the BIG button on either switch turn the load on. When I try to do it with the blueprints here. I am getting the following error:

Error: UndefinedError: ‘dict object’ has no attribute ‘event’

My Automation is below.

id: '1659664906380'
alias: New Automation Test
description: ''
use_blueprint:
  path: Matt-PMCT/ZoozZen32forZwaveJs.yaml
  input:
    zooz_switch: 6934220da1244cfa185b1a7e861b7ac4
    scene_5:
      - type: turn_on
        device_id: 96236bddf1fe75cf856ea42e5a3bf416
        entity_id: switch.stairs_bottom
        domain: switch

Came here to share my experience with this Blueprint and echo the feedback others have already posted above.

If you’ve recently added a Zen32 to your Zwave collection, make sure you are running the latest firmware. My Zen32 came with Firmware 10.32 and refused to work with this blueprint. Once I upgraded the firmware to 10.32.2, everything worked perfectly.

To get the latest firmware updates, you need to either register your product with Zooz (which will get you direct access to all firmware files) or email [email protected] and request the latest file for your Zen32.

Works with v10.20.1 as well. Haven’t had an issue so I haven’t felt the need to update.

Mine run fine with this Blueprint and firmware version 10.30.2 (at least that’s what they report through Z-Wave JS), which according to Zooz’ OTA Page is the latest for ZEN32.
But my ZSE40s report firmware 32.32.1 which is newer than what they have on that page as well, so you may actually have received a newer firmware than what they posted on that page.

I’m still getting this error on mine
2023-01-09 02:08:27.260 ERROR (MainThread) [homeassistant.helpers.template] Template variable error: ‘dict object’ has no attribute ‘event’ when rendering ‘{{ trigger.event.data.property_key_name }}’

2023-01-09 02:08:27.265 ERROR (MainThread) [homeassistant.components.automation.zen32_z_wave_js_test] ZEN32 (Z-Wave JS) TEST: Error executing script. Error rendering template for variables at pos 1: UndefinedError: ‘dict object’ has no attribute ‘event’

Weird, I’m having no luck with this blueprint as well. We have 4 of these scene switches. The issue I’m having is that the button presses are not causing any actions:

YAML looks like:

- id: '1674170072141'
  alias: ScenePad_LRActions
  description: Actions that the Living Room Scene pad invokes
  use_blueprint:
    path: Matt-PMCT/ZoozZen32forZwaveJs.yaml
    input:
      zooz_switch: be76af9ff099ae0e67a8e8ea4a805f5c
      scene_1:
      - service: scene.turn_on
        target:
          entity_id: scene.ambientlighting
        metadata: {}
      - service: scene.turn_on
        target:
          entity_id: scene.nightscene
        metadata: {}

But those two scenes are not activated by the button press. I see the following in the log book:

Z-Wave JS received event: Central Scene - 0 - Scene 001 triggered by automation ScenePad_LRActions triggered by event ‘zwave_js_value_notification’

No errors in the logs. Any ideas?

This works just fine by the way:

- id: '1674178222788'
  alias: ScenePad_LRButton1
  description: ''
  trigger:
  - platform: event
    event_type: zwave_js_value_notification
    event_data:
      node_id: 5
      label: "Scene 001"
      value: 0
  condition: []
  action:
  - service: scene.turn_on
    target:
      entity_id: scene.brightkitchen
    metadata: {}
  mode: single

I really wish I knew why the blueprint works for some and not others.

I did notice one difference. My generated automations use data: {} instead of metadata: {}.

      scene_1:
      - service: scene.turn_on
        data: {}
        target:
          entity_id: scene.pergola_lighting

Is there a way to see the rendered output of the blueprint? (Newbie here)

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?