Zooz ZEN30 Double Switch Automation Helper

This blueprint is for simplifying the scene configuration for the Zooz ZEN30 Double Switch, for use with the new Z-Wave JS Integration. It’s very similar to @vypurr’s blueprint, but built for Z-Wave JS and ZEN30 vs OZW and ZEN21.

Each of the three ‘buttons’ on this switch has ~7 different configurable scene options:

  • 1x, 2x, 3x, 4x, 5x Tap Up Button
  • 1x, 2x, 3x, 4x, 5x Tap Down Button
  • 1x, 2x, 3x, 4x, 5x Tap Relay Button
  • Hold Up Button
  • Hold Down Button
  • Hold Relay Button
  • Release Up Button
  • Release Down Button
  • Release Relay Button

Taking some heavy cues from @freshcoast’s recent Minimote blueprint, this blueprint aims to simply and condense all of the scene triggers into a single automation.

Note that a few of the options conflict with default configuration options, and have been commented out in the blueprint action area. You can remove the comment tags at your own risk to remap them.
For example, triple tapping enters the inclusion/exclusion modes, and press-and-hold manually adjusts the dimmer level. Single taps would also be important to leave as-is, unless you’re using smart bulbs and only want the switch to trigger them. Full info from Zooz here. I made notes on the scenes with default behaviors in the input area.

blueprint:
  name: Zooz ZEN30
  description: Automations helper for the Zooz ZEN30 Double Switch using the
    Zwave JS integration.
  domain: automation
  input:
    zooz_zen30:
      name: Zooz ZEN30
      description: The ZEN30 Double Switch to interact with.
      selector:
        device:
          integration: zwave_js
          manufacturer: Zooz
          model: ZEN30
    dimmer_up_1x:
      name: Top Paddle 1x
      description: "Action to run on dimmer upper paddle single tap.
      Default: Turn on dimmer switch load to last/custom brightness."
      default: []
      selector:
        action: {}
    dimmer_up_2x:
      name: Top Paddle 2x
      description: Action to run on dimmer upper paddle double tap.
      default: []
      selector:
        action: {}
    dimmer_up_3x:
      name: Top Paddle 3x
      description: "Action to run on dimmer upper paddle triple tap.
      Default: Enter inclusion/pairing mode."
      default: []
      selector:
        action: {}
    dimmer_up_4x:
      name: Top Paddle 4x
      description: Action to run on dimmer upper paddle quadruple tap.
      default: []
      selector:
        action: {}
    dimmer_up_5x:
      name: Top Paddle 5x
      description: Action to run on dimmer upper paddle quintuple tap.
      default: []
      selector:
        action: {}
    dimmer_up_hold:
      name: Top Paddle Hold
      description: "Action to run on dimmer upper paddle press-and-hold.
      Default: Increase dimmer brightness level."
      default: []
      selector:
        action: {}
    dimmer_up_release:
      name: Top Paddle Release
      description: Action to run on dimmer upper paddle release.
      default: []
      selector:
        action: {}

    dimmer_down_1x:
      name: Lower Paddle 1x
      description: "Action to run on dimmer lower paddle single tap.
      Default: Turn off dimmer switch load."
      default: []
      selector:
        action: {}
    dimmer_down_2x:
      name: Lower Paddle 2x
      description: Action to run on dimmer lower paddle double tap.
      default: []
      selector:
        action: {}
    dimmer_down_3x:
      name: Lower Paddle 3x
      description: "Action to run on dimmer lower paddle triple tap.
      Default: Enter exclusion/un-pairing mode."
      default: []
      selector:
        action: {}
    dimmer_down_4x:
      name: Lower Paddle 4x
      description: Action to run on dimmer lower paddle quadruple tap.
      default: []
      selector:
        action: {}
    dimmer_down_5x:
      name: Lower Paddle 5x
      description: Action to run on dimmer lower paddle quintuple tap.
      default: []
      selector:
        action: {}
    dimmer_down_hold:
      name: Bottom Paddle Hold
      description: "Action to run on dimmer lower paddle press-and-hold.
      Default: Decrease dimmer brightness level."
      default: []
      selector:
        action: {}
    dimmer_down_release:
      name: Bottom Paddle Release
      description: Action to run on dimmer lower paddle double tap.
      default: []
      selector:
        action: {}

    relay_1x:
      name: Relay 1x
      description: "Action to run on relay button single tap.
      Default: Toggle relay switch load."
      default: []
      selector:
        action: {}
    relay_2x:
      name: Relay 2x
      description: Action to run on relay button double tap.
      default: []
      selector:
        action: {}
    relay_3x:
      name: Relay 3x
      description: "Action to run on relay button triple tap.
      Default: Enter inclusion/pairing mode."
      default: []
      selector:
        action: {}
    relay_4x:
      name: Relay 4x
      description: Action to run on relay button quadruple tap.
      default: []
      selector:
        action: {}
    relay_5x:
      name: Relay 5x
      description: Action to run on relay button quintuple tap.
      default: []
      selector:
        action: {}
    relay_hold:
      name: Relay Hold
      description: "Action to run on relay button press-and-hold.
    Default: Increase dimmer brightness level."
      default: []
      selector:
        action: {}
    relay_release:
      name: Relay Release
      description: Action to run on relay button release.
      default: []
      selector:
        action: {}

mode: single
max_exceeded: silent

trigger:
  - platform: event
    event_type: zwave_js_value_notification
    event_data:
      command_class_name: Central Scene
      device_id: !input zooz_zen30

action:
  - variables:
      scene_id: "{{ trigger.event.data.label }}"
      attribute_id: "{{ trigger.event.data.value }}"
  - choose:
      - conditions: "{{ scene_id == 'Scene 001' }}"
        sequence:
          - choose:
              - conditions: "{{ attribute_id == 'KeyPressed' }}"
                sequence: !input dimmer_up_1x
              - conditions: "{{ attribute_id == 'KeyPressed2x' }}"
                sequence: !input dimmer_up_2x
              #- conditions: "{{ attribute_id == 'KeyPressed3x' }}"
                #sequence: !input dimmer_up_3x
              - conditions: "{{ attribute_id == 'KeyPressed4x' }}"
                sequence: !input dimmer_up_4x
              - conditions: "{{ attribute_id == 'KeyPressed5x' }}"
                sequence: !input dimmer_up_5x
              #- conditions: "{{ attribute_id == 'KeyHeldDown' }}"
                #sequence: !input dimmer_up_hold
              #- conditions: "{{ attribute_id == 'KeyReleased' }}"
                #sequence: !input dimmer_up_release
      - conditions: "{{ scene_id == 'Scene 002' }}"
        sequence: 
          - choose:
              - conditions: "{{ attribute_id == 'KeyPressed' }}"
                sequence: !input dimmer_down_1x
              - conditions: "{{ attribute_id == 'KeyPressed2x' }}"
                sequence: !input dimmer_down_2x
              #- conditions: "{{ attribute_id == 'KeyPressed3x' }}"
                #sequence: !input dimmer_down_3x
              - conditions: "{{ attribute_id == 'KeyPressed4x' }}"
                sequence: !input dimmer_down_4x
              - conditions: "{{ attribute_id == 'KeyPressed5x' }}"
                sequence: !input dimmer_down_5x
              #- conditions: "{{ attribute_id == 'KeyHeldDown' }}"
                #sequence: !input dimmer_down_hold
              #- conditions: "{{ attribute_id == 'KeyReleased' }}"
                #sequence: !input dimmer_down_release
      - conditions: "{{ scene_id == 'Scene 003' }}"
        sequence: 
          - choose:
              - conditions: "{{ attribute_id == 'KeyPressed' }}"
                sequence: !input relay_1x
              - conditions: "{{ attribute_id == 'KeyPressed2x' }}"
                sequence: !input relay_2x
              #- conditions: "{{ attribute_id == 'KeyPressed3x' }}"
                #sequence: !input relay_3x
              - conditions: "{{ attribute_id == 'KeyPressed4x' }}"
                sequence: !input relay_4x
              - conditions: "{{ attribute_id == 'KeyPressed5x' }}"
                sequence: !input relay_5x
              #- conditions: "{{ attribute_id == 'KeyHeldDown' }}"
                #sequence: !input relay_hold
              #- conditions: "{{ attribute_id == 'KeyReleased' }}"
                #sequence: !input relay_release

Changelog:

2021-04-09:

  • Changed event_type trigger to zwave_js_value_notification for release 2021.04.
4 Likes

Looks great. I see a few things I’d like to do to update my own!

FYI, I updated the event_type trigger from zwave_js_event to the zwave_js_value_notification used in release 2021.04+.

Is there a name change required for the ZEN30 800LR ?

I tried importing this blueprint and got an error:

mapping values are not allowed here in “”, line 205, column 75: … age-responsive" style=“word-wrap: break-word;”> ^

I checked line 205 and didn’t see anything abnormal… am I missing something?

[edit] nvm, I just had to fix the descriptions to be all on one line, otherwise the word “Default” was being parsed incorrectly.

For anyone who needs it, I updated the blueprint to allow for multiple devices in one automation, in case you have a few zen 30s that do the same thing and you want to control with one automation.

blueprint:
  name: Zooz ZEN30
  description: Automations helper for the Zooz ZEN30 Double Switch using the Zwave
    JS integration.
  domain: automation
  input:
    zooz_zen30:
      name: Zooz ZEN30
      description: The ZEN30 Double Switch to interact with.
      selector:
        device:
          integration: zwave_js
          manufacturer: Zooz
          model: ZEN30
          multiple: true
    dimmer_up_1x:
      name: Top Paddle 1x
      description: 'Action to run on dimmer upper paddle single tap. Default: Turn
        on dimmer switch load to last/custom brightness.'
      default: []
      selector:
        action: {}
    dimmer_up_2x:
      name: Top Paddle 2x
      description: Action to run on dimmer upper paddle double tap.
      default: []
      selector:
        action: {}
    dimmer_up_3x:
      name: Top Paddle 3x
      description: 'Action to run on dimmer upper paddle triple tap. Default: Enter
        inclusion/pairing mode.'
      default: []
      selector:
        action: {}
    dimmer_up_4x:
      name: Top Paddle 4x
      description: Action to run on dimmer upper paddle quadruple tap.
      default: []
      selector:
        action: {}
    dimmer_up_5x:
      name: Top Paddle 5x
      description: Action to run on dimmer upper paddle quintuple tap.
      default: []
      selector:
        action: {}
    dimmer_up_hold:
      name: Top Paddle Hold
      description: 'Action to run on dimmer upper paddle press-and-hold. Default:
        Increase dimmer brightness level.'
      default: []
      selector:
        action: {}
    dimmer_up_release:
      name: Top Paddle Release
      description: Action to run on dimmer upper paddle release.
      default: []
      selector:
        action: {}
    dimmer_down_1x:
      name: Lower Paddle 1x
      description: 'Action to run on dimmer lower paddle single tap. Default: Turn
        off dimmer switch load.'
      default: []
      selector:
        action: {}
    dimmer_down_2x:
      name: Lower Paddle 2x
      description: Action to run on dimmer lower paddle double tap.
      default: []
      selector:
        action: {}
    dimmer_down_3x:
      name: Lower Paddle 3x
      description: 'Action to run on dimmer lower paddle triple tap. Default: Enter
        exclusion/un-pairing mode.'
      default: []
      selector:
        action: {}
    dimmer_down_4x:
      name: Lower Paddle 4x
      description: Action to run on dimmer lower paddle quadruple tap.
      default: []
      selector:
        action: {}
    dimmer_down_5x:
      name: Lower Paddle 5x
      description: Action to run on dimmer lower paddle quintuple tap.
      default: []
      selector:
        action: {}
    dimmer_down_hold:
      name: Bottom Paddle Hold
      description: 'Action to run on dimmer lower paddle press-and-hold. Default:
        Decrease dimmer brightness level.'
      default: []
      selector:
        action: {}
    dimmer_down_release:
      name: Bottom Paddle Release
      description: Action to run on dimmer lower paddle double tap.
      default: []
      selector:
        action: {}
    relay_1x:
      name: Relay 1x
      description: 'Action to run on relay button single tap. Default: Toggle relay
        switch load.'
      default: []
      selector:
        action: {}
    relay_2x:
      name: Relay 2x
      description: Action to run on relay button double tap.
      default: []
      selector:
        action: {}
    relay_3x:
      name: Relay 3x
      description: 'Action to run on relay button triple tap. Default: Enter inclusion/pairing
        mode.'
      default: []
      selector:
        action: {}
    relay_4x:
      name: Relay 4x
      description: Action to run on relay button quadruple tap.
      default: []
      selector:
        action: {}
    relay_5x:
      name: Relay 5x
      description: Action to run on relay button quintuple tap.
      default: []
      selector:
        action: {}
    relay_hold:
      name: Relay Hold
      description: 'Action to run on relay button press-and-hold. Default: Increase
        dimmer brightness level.'
      default: []
      selector:
        action: {}
    relay_release:
      name: Relay Release
      description: Action to run on relay button release.
      default: []
      selector:
        action: {}
  source_url: https://community.home-assistant.io/t/zooz-zen30-double-switch-automation-helper/281362
mode: single
max_exceeded: silent
variables:
  device_id: !input zooz_zen30
trigger:
- platform: event
  event_type: zwave_js_value_notification
condition: '{{ trigger.event.data.device_id in device_id }}'
action:
- variables:
    button_id: '{{ trigger.event.data.property_key_name }}'
    press_count: '{{ trigger.event.data.value }}'
- service: logbook.log
  data:
    name: Button Id
    message: '{{ button_id }}'
- service: logbook.log
  data:
    name: Press Count
    message: '{{ press_count }}'
- choose:
  - conditions: '{{ button_id == "001" and press_count == "KeyPressed" }}'
    sequence: !input dimmer_up_1x
  - conditions: '{{ button_id == "001" and press_count == "KeyPressed2x" }}'
    sequence: !input dimmer_up_2x
  - conditions: '{{ button_id == "001" and press_count == "KeyPressed3x" }}'
    sequence: !input dimmer_up_3x
  - conditions: '{{ button_id == "001" and press_count == "KeyPressed4x" }}'
    sequence: !input dimmer_up_4x
  - conditions: '{{ button_id == "001" and press_count == "KeyPressed5x" }}'
    sequence: !input dimmer_up_5x
  - conditions: '{{ button_id == "001" and press_count == "KeyHeldDown" }}'
    sequence: !input dimmer_up_hold
  - conditions: '{{ button_id == "001" and press_count == "KeyReleased" }}'
    sequence: !input dimmer_up_release
  - conditions: '{{ button_id == "002" and press_count == "KeyPressed" }}'
    sequence: !input dimmer_down_1x
  - conditions: '{{ button_id == "002" and press_count == "KeyPressed2x" }}'
    sequence: !input dimmer_down_2x
  - conditions: '{{ button_id == "002" and press_count == "KeyPressed3x" }}'
    sequence: !input dimmer_down_3x
  - conditions: '{{ button_id == "002" and press_count == "KeyPressed4x" }}'
    sequence: !input dimmer_down_4x
  - conditions: '{{ button_id == "002" and press_count == "KeyPressed5x" }}'
    sequence: !input dimmer_down_5x
  - conditions: '{{ button_id == "002" and press_count == "KeyHeldDown" }}'
    sequence: !input dimmer_down_hold
  - conditions: '{{ button_id == "002" and press_count == "KeyReleased" }}'
    sequence: !input dimmer_down_release
  - conditions: '{{ button_id == "003" and press_count == "KeyPressed" }}'
    sequence: !input relay_1x
  - conditions: '{{ button_id == "003" and press_count == "KeyPressed2x" }}'
    sequence: !input relay_2x
  - conditions: '{{ button_id == "003" and press_count == "KeyPressed3x" }}'
    sequence: !input relay_3x
  - conditions: '{{ button_id == "003" and press_count == "KeyPressed4x" }}'
    sequence: !input relay_4x
  - conditions: '{{ button_id == "003" and press_count == "KeyPressed5x" }}'
    sequence: !input relay_5x
  - conditions: '{{ button_id == "003" and press_count == "KeyHeldDown" }}'
    sequence: !input relay_hold
  - conditions: '{{ button_id == "003" and press_count == "KeyReleased" }}'
    sequence: !input relay_release
2 Likes