AEON Labs | Aeotec Wallmote Quad - Scenes, Press, Hold, Slide Up and Down (ZWaveJS)

Whilst there are a number of blueprints for the Wallmote Quad, I couldn’t find one that included support for the slide functions. I have put together a blueprint that allows configuring each quadrant for Press, Hold, Slide Up and Slide Down. This was possible thanks to the detective work of @jLynx https://community.home-assistant.io/t/aeotec-wallmote-quad-zw130/12100/168. I have used the bitmath from jLynx’s post and embedded it into a blueprint to allow easy reuse and configuration of the Wallmote Quad.

This blueprint requires the wallmote to be added via ZWaveJS and the Report Type configuration property to be changed to “Central scene CC and Configuration CC” (as described in the thread linked above). I found I then needed to play with the controller a little and send slide signals until the param 010 config entity appeared which I then needed to enable.

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

This is my first blueprint so feedback on anything that could be done better is welcome :slight_smile:

blueprint:
  name: Wallmote Quad Controller
  description: Execute actions based on a Wallmote Quad's events
  domain: automation
  source_url: https://raw.githubusercontent.com/xap-code/hass/main/blueprints/automation/wallmote_quad_controller.yaml
  author: xap
  input:
    controller:
      name: Wallmote Quad Device
      selector:
        device:
          integration: zwave_js
          manufacturer: AEON Labs
          model: ZW130
          multiple: false
    button_1_pressed:
      name: Button 1 Pressed
      default:
      selector:
        action: {}
    button_1_held:
      name: Button 1 Held
      default:
      selector:
        action: {}
    button_1_up:
      name: Button 1 Slide Up
      default:
      selector:
        action: {}
    button_1_down:
      name: Button 1 Slide Down
      default:
      selector:
        action: {}
    button_2_pressed:
      name: Button 2 Pressed
      default:
      selector:
        action: {}
    button_2_held:
      name: Button 2 Held
      default:
      selector:
        action: {}
    button_2_up:
      name: Button 2 Slide Up
      default:
      selector:
        action: {}
    button_2_down:
      name: Button 2 Slide Down
      default:
      selector:
        action: {}
    button_3_pressed:
      name: Button 3 Pressed
      default:
      selector:
        action: {}
    button_3_held:
      name: Button 3 Held
      default:
      selector:
        action: {}
    button_3_up:
      name: Button 3 Slide Up
      default:
      selector:
        action: {}
    button_3_down:
      name: Button 3 Slide Down
      default:
      selector:
        action: {}
    button_4_pressed:
      name: Button 4 Pressed
      default:
      selector:
        action: {}
    button_4_held:
      name: Button 4 Held
      default:
      selector:
        action: {}
    button_4_up:
      name: Button 4 Slide Up
      default:
      selector:
        action: {}
    button_4_down:
      name: Button 4 Slide Down
      default:
      selector:
        action: {}
trigger:
- platform: device
  device_id: !input controller
  domain: zwave_js
  type: event.value_notification.central_scene
  property: scene
  property_key: '001'
  endpoint: 0
  command_class: 91
  subtype: Endpoint 0 Scene 001
  value: 0
  id: 1_pressed
- platform: device
  device_id: !input controller
  domain: zwave_js
  type: event.value_notification.central_scene
  property: scene
  property_key: '001'
  endpoint: 0
  command_class: 91
  subtype: Endpoint 0 Scene 001
  value: 1
  id: 1_held
- platform: device
  device_id: !input controller
  domain: zwave_js
  type: event.value_notification.central_scene
  property: scene
  property_key: '002'
  endpoint: 0
  command_class: 91
  subtype: Endpoint 0 Scene 002
  id: 2_pressed
  value: 0
- platform: device
  device_id: !input controller
  domain: zwave_js
  type: event.value_notification.central_scene
  property: scene
  property_key: '002'
  endpoint: 0
  command_class: 91
  subtype: Endpoint 0 Scene 002
  id: 2_held
  value: 1
- platform: device
  device_id: !input controller
  domain: zwave_js
  type: event.value_notification.central_scene
  property: scene
  property_key: '003'
  endpoint: 0
  command_class: 91
  subtype: Endpoint 0 Scene 003
  id: 3_pressed
  value: 0
- platform: device
  device_id: !input controller
  domain: zwave_js
  type: event.value_notification.central_scene
  property: scene
  property_key: '003'
  endpoint: 0
  command_class: 91
  subtype: Endpoint 0 Scene 003
  id: 3_held
  value: 1
- platform: device
  device_id: !input controller
  domain: zwave_js
  type: event.value_notification.central_scene
  property: scene
  property_key: '004'
  endpoint: 0
  command_class: 91
  subtype: Endpoint 0 Scene 004
  id: 4_pressed
  value: 0
- platform: device
  device_id: !input controller
  domain: zwave_js
  type: event.value_notification.central_scene
  property: scene
  property_key: '004'
  endpoint: 0
  command_class: 91
  subtype: Endpoint 0 Scene 004
  id: 4_held
  value: 1
- platform: device
  device_id: !input controller
  domain: zwave_js
  type: zwave_js.value_updated.config_parameter
  property: 10
  property_key:
  endpoint: 0
  command_class: 112
  subtype: 10 (param010) on endpoint 0
  id: slide
action:
- choose:
  - conditions:
    - condition: trigger
      id:
      - 1_pressed
    sequence: !input button_1_pressed
  - conditions:
    - condition: trigger
      id:
      - 1_held
    sequence: !input button_1_held
  - conditions:
    - condition: trigger
      id:
      - 2_pressed
    sequence: !input button_2_pressed
  - conditions:
    - condition: trigger
      id:
      - 2_held
    sequence: !input button_2_held
  - conditions:
    - condition: trigger
      id:
      - 3_pressed
    sequence: !input button_3_pressed
  - conditions:
    - condition: trigger
      id:
      - 3_held
    sequence: !input button_3_held
  - conditions:
    - condition: trigger
      id:
      - 4_pressed
    sequence: !input button_4_pressed
  - conditions:
    - condition: trigger
      id:
      - 4_held
    sequence: !input button_4_held
  - conditions:
    - condition: trigger
      id:
      - slide
    sequence:
    - variables:
        scene_id: '{{ (trigger.current_value | int /2**24)  | int | bitwise_and(0xff)
          }}'
        direction: '{{ (trigger.current_value | int /2**16)  | int | bitwise_and(0xff)
          }}'
    - choose:
      - conditions:
        - condition: template
          value_template: '{{ scene_id == 1 and direction == 1 }}'
        sequence: !input button_1_up
      - conditions:
        - condition: template
          value_template: '{{ scene_id == 1 and direction == 0 }}'
        sequence: !input button_1_down
      - conditions:
        - condition: template
          value_template: '{{ scene_id == 2 and direction == 1 }}'
        sequence: !input button_2_up
      - conditions:
        - condition: template
          value_template: '{{ scene_id == 2 and direction == 0 }}'
        sequence: !input button_2_down
      - conditions:
        - condition: template
          value_template: '{{ scene_id == 3 and direction == 1 }}'
        sequence: !input button_3_up
      - conditions:
        - condition: template
          value_template: '{{ scene_id == 3 and direction == 0 }}'
        sequence: !input button_3_down
      - conditions:
        - condition: template
          value_template: '{{ scene_id == 4 and direction == 1 }}'
        sequence: !input button_4_up
      - conditions:
        - condition: template
          value_template: '{{ scene_id == 4 and direction == 0 }}'
        sequence: !input button_4_down
1 Like

Thank you for making this blueprint.

It is not working for me, on save I get a message: Message malformed: Value 38-112-0-10 can’t be found on node Node(node_id=38)

I think you need to get the “parameter 10” config entity working. Have you done the steps I mentioned to get the param 010 config entity enabled?

ah, yes.

I read your starting post and thought it was done within this automation. I have added the config and now it works. Thank you!

1 Like