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.
This is my first blueprint so feedback on anything that could be done better is welcome
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