ZWaveJS - AEON Labs/Aeotec ZW130 WallMote Quad (all scenes supported)

Tags: #<Tag:0x00007fc41f2f0ef0> #<Tag:0x00007fc41f2f09c8>

A fully-featured blueprint for the Aeotec/AEON Labs WallMote Quad (ZW130) scene controller.

Only compatible with 2021.4.0 and newer.

Supports tap, hold, release (long tap) scene events for all four buttons. Just select the ZWaveJS device for the WallMote Quad and the rest is done.

This is the ZWaveJS version of my OZW-based blueprint located here: OZW - AEON Labs/Aeotec ZW130 WallMote Quad (all scenes supported)

blueprint:
  name: ZWaveJS - Aeotec WallMote Quad scene controller
  description: |
    Perform actions when Aeotec WallMote Quad buttons are interacted with.
    
    The release action is equivalent to a long tap.

    A release action is always triggered after a hold action, which makes
    them a bit tricky to use. The hold action is repeated as long as the
    button is held down.

  domain: automation
  input:
    zwavejs_device:
      name: ZWaveJS Device
      description: The Aeotec WallMote Quad controller to listen for events on.
      selector:
        device:
          integration: zwave_js
          manufacturer: AEON Labs
          model: ZW130
    tap_top_left_actions:
      name: Tap Top Left Actions
      selector:
        action:
      default: []
    tap_top_right_actions:
      name: Tap Top Right Actions
      selector:
        action:
      default: []
    tap_bottom_left_actions:
      name: Tap Bottom Left Actions
      selector:
        action:
      default: []
    tap_bottom_right_actions:
      name: Tap Bottom Right Actions
      selector:
        action:
      default: []
    release_top_left_actions:
      name: Release Top Left Actions
      selector:
        action:
      default: []
    release_top_right_actions:
      name: Release Top Right Actions
      selector:
        action:
      default: []
    release_bottom_left_actions:
      name: Release Bottom Left Actions
      selector:
        action:
      default: []
    release_bottom_right_actions:
      name: Release Bottom Right Actions
      selector:
        action:
      default: []
    hold_top_left_actions:
      name: Hold Top Left Actions
      selector:
        action:
      default: []
    hold_top_right_actions:
      name: Hold Top Right Actions
      selector:
        action:
      default: []
    hold_bottom_left_actions:
      name: Hold Bottom Left Actions
      selector:
        action:
      default: []
    hold_bottom_right_actions:
      name: Hold Bottom Right Actions
      selector:
        action:
      default: []

mode: single

# If you haven't upgraded to 2021.4.0 or newer yet, you'll need to use this trigger code instead
#trigger:
#  - platform: event
#    event_type: zwave_js_event
#    event_data:
#      type: value_notification

trigger:
  - platform: event
    event_type: zwave_js_value_notification

variables:
  logger: blueprint.zwavejs_scene_activation
  zwavejs_device: !input zwavejs_device

action:
  - choose:
    # IF triggered device_id is zwavejs_device id
      - conditions:
          - condition: template
            value_template: "{{ trigger.event.data.device_id == zwavejs_device }}"
          - condition: template
            value_template: "{{ trigger.event.data.command_class_name == 'Central Scene' }}"
        sequence:
          - choose:
            # IF tap top left
              - conditions:
                  - condition: template
                    value_template: "{{ trigger.event.data.label == 'Scene 001' and trigger.event.data.value == 'KeyPressed' }}"
                sequence: !input tap_top_left_actions
            # IF tap top right
              - conditions:
                  - condition: template
                    value_template: "{{ trigger.event.data.label == 'Scene 002' and trigger.event.data.value == 'KeyPressed' }}"
                sequence: !input tap_top_right_actions
            # IF tap bottom left
              - conditions:
                  - condition: template
                    value_template: "{{ trigger.event.data.label == 'Scene 003' and trigger.event.data.value == 'KeyPressed' }}"
                sequence: !input tap_bottom_left_actions
            # IF tap bottom right
              - conditions:
                  - condition: template
                    value_template: "{{ trigger.event.data.label == 'Scene 004' and trigger.event.data.value == 'KeyPressed' }}"
                sequence: !input tap_bottom_right_actions
            # IF release top left
              - conditions:
                  - condition: template
                    value_template: "{{ trigger.event.data.label == 'Scene 001' and trigger.event.data.value == 'KeyReleased' }}"
                sequence: !input release_top_left_actions
            # IF release top right
              - conditions:
                  - condition: template
                    value_template: "{{ trigger.event.data.label == 'Scene 002' and trigger.event.data.value == 'KeyReleased' }}"
                sequence: !input release_top_right_actions
            # IF release bottom left
              - conditions:
                  - condition: template
                    value_template: "{{ trigger.event.data.label == 'Scene 003' and trigger.event.data.value == 'KeyReleased' }}"
                sequence: !input release_bottom_left_actions
            # IF release bottom right
              - conditions:
                  - condition: template
                    value_template: "{{ trigger.event.data.label == 'Scene 004' and trigger.event.data.value == 'KeyReleased' }}"
                sequence: !input release_bottom_right_actions
            # IF hold top left
              - conditions:
                  - condition: template
                    value_template: "{{ trigger.event.data.label == 'Scene 001' and trigger.event.data.value == 'KeyHeldDown' }}"
                sequence: !input hold_top_left_actions
            # IF hold top right
              - conditions:
                  - condition: template
                    value_template: "{{ trigger.event.data.label == 'Scene 002' and trigger.event.data.value == 'KeyHeldDown' }}"
                sequence: !input hold_top_right_actions
            # IF hold bottom left
              - conditions:
                  - condition: template
                    value_template: "{{ trigger.event.data.label == 'Scene 003' and trigger.event.data.value == 'KeyHeldDown' }}"
                sequence: !input hold_bottom_left_actions
            # IF hold bottom right
              - conditions:
                  - condition: template
                    value_template: "{{ trigger.event.data.label == 'Scene 004' and trigger.event.data.value == 'KeyHeldDown' }}"
                sequence: !input hold_bottom_right_actions
            # ELSE: unhandled scene label/value
            default:
              - service: system_log.write
                data:
                  level: debug
                  logger: "{{ logger }}"
                  message: "Activated scene '{{ trigger.event.data.label }}' with value '{{ trigger.event.data.value }}' for node '{{ zwavejs_device }}' ({{ trigger.event.data.node_id }})"
    # ELSE: unhandled zwavejs event
    default: []
6 Likes

With the recent change in the zwavejs event reporting I was was unable to make this blueprint work. Is the only needed change to make zwave_js_event to zwave_js_value_notification in the part below or are other changes needed?

Yes, you need to change event_type as you mentioned, and event_data can fully be removed.

Is it only to use the File editor and edit the blueprint file with the changes above and save it?

I just did that, but the Wallmote doesn’t work again yet. Anything else that needs to be done?

You need to reload automations, or possibly restart home assistant once you’ve made the edits.

Ok, I reloaded automations, but havent restarted HA yet. At least I know that should be it. Thanks!

Not sure if it is necessary or not but after i made the change to the blueprint i had to delete the old automation associated and completely remake it with the changed blueprint

1 Like

Works again now. I had a typo. Doh. Didn’t need to restart HA though, but I reloaded automations and created the automations again. All is well. Thanks guys! :slight_smile:

Do you mind if I implement this change in another thread? Or do you mind editing it here? Thank you for the great blueprint! I’ve been using it for a few weeks and it made my zjs migration significantly easier.

I was planning to edit the one here to be compatible with 2021.4.x. Maybe just include a comment that “it was this way before 2021.4.x”.

1 Like

I’ve updated the blueprint to be compatible with 2021.4.0 and newer now.

1 Like

Thank you so much!

I just had to delete the blueprint, re-import it, and restart home assistant core, and my automation was working again. Easy-peasy!

Can anyone advise how to troubleshoot if it says “no matching devices found” under device when you try to use the blueprint?

I’m running core-2021.4.3, zwavejs2mqtt 0.11.0, and the wallmote shows up under the zwavejs2mqtt control panel as AEON Labs WallMote Quad ZW130

Does it show up under devices in home assistant like mine? The lines of code below are what is controlling the selector.

1 Like

I would start with upgrading zwavejs2mqtt with something newer. I’m currently running as a standalone container, not running Home Assistant OS. Here’s the version info from the zwavejs2mqtt info box: zwavejs2mqtt: 3.2.1, zwave-js: 7.2.2

I was using the previous version of this blueprint but removed it so I could add the new one. Unfortunately, it seems I can’t do that. Should there be an Import Blueprint button on the top post?

If import doesn’t work for you, you can always just copy and paste the contents of the blueprint into a file you create yourself. The import button is just a convenience feature.

1 Like

I did end up adding it that way. Was looking for the Import Blueprint button to take advantage of this functionality:

Updating Blueprints

When a user imports a blueprint, Home Assistant stores the URL from which it was imported. This will allow Home Assistant in the future to update blueprints by looking at updated blueprint code in the forum topic.

-About Blueprints

Anyway, thanks for the blueprint!