Skip to content

Instantly share code, notes, and snippets.

@exciton
Created January 12, 2023 06:39
Show Gist options
  • Save exciton/9845aca7d54cb1c7da7c78396e903626 to your computer and use it in GitHub Desktop.
Save exciton/9845aca7d54cb1c7da7c78396e903626 to your computer and use it in GitHub Desktop.
blueprint:
name: Lutron Caseta Four Button Zone Pico Actions
description:
Short and long press automations for Pico four button zone remotes.
Release actions will always fire.
Short press actions will fire on button release if long press actions are defined,
and immediately on button press otherwise.
Long press actions will fire on release timeout.
domain: automation
input:
pico_remote:
name: Pico Four-Button Zone Remote
selector:
device:
model: PJ2-4B-GXX-X01 (Pico4ButtonZone)
multiple: true
button_0_press:
name: On Button - Short press
default: []
selector:
action: {}
button_0_hold:
name: On Button - Long press
default: []
selector:
action: {}
button_0_release:
name: On Button - Release
default: []
selector:
action: {}
button_1_press:
name: Raise Button - Short press
default: []
selector:
action: {}
button_1_hold:
name: Raise Button - Long press
default: []
selector:
action: {}
button_1_release:
name: Raise Button - Release
default: []
selector:
action: {}
button_2_press:
name: Lower Button - Short press
default: []
selector:
action: {}
button_2_hold:
name: Lower Button - Long press
default: []
selector:
action: {}
button_2_release:
name: Lower Button - Released
default: []
selector:
action: {}
button_3_press:
name: Off Button - Short Press
default: []
selector:
action: {}
button_3_hold:
name: Off Button - Long Press
default: []
selector:
action: {}
button_3_release:
name: Off Button - Release
default: []
selector:
action: {}
time_before_long_press:
name: Time before long press
description:
Amount of time button needs to be held before triggering "long
press" action.
default: 1
selector:
number:
min: 0.25
max: 10.0
step: 0.25
unit_of_measurement: seconds
mode: slider
auto_mode:
name: Automation Mode
description: Mode that automation runs in (single, restart, queued, parallel).
default: parallel
selector:
select:
options:
- single
- restart
- queued
- parallel
multiple: false
custom_value: false
mode_max:
name: Mode Max (ignored by Single and Restart Modes)
description: Maximum number of runs that can be executed or queued at a time.
default: 10
selector:
number:
min: 1.0
max: 15.0
step: 1.0
mode: slider
trigger:
- platform: event
event_type: lutron_caseta_button_event
event_data:
type: Pico4ButtonZone
variables:
button_numbers: [8, 9, 10, 11]
device_ids: !input pico_remote
button_0_hold_actions: !input button_0_hold
button_1_hold_actions: !input button_1_hold
button_2_hold_actions: !input button_2_hold
button_3_hold_actions: !input button_3_hold
condition:
- condition: template
value_template: "{{ trigger.event.data.device_id in device_ids }}"
action:
- choose:
- conditions: '{{ trigger.event.data.action == "release" }}'
sequence:
- choose:
- conditions: "{{ trigger.event.data.button_number == button_numbers[0] }}"
sequence: !input button_0_release
- conditions: "{{ trigger.event.data.button_number == button_numbers[1] }}"
sequence: !input button_1_release
- conditions: "{{ trigger.event.data.button_number == button_numbers[2] }}"
sequence: !input button_2_release
- conditions: "{{ trigger.event.data.button_number == button_numbers[3] }}"
sequence: !input button_3_release
- conditions: '{{ trigger.event.data.action == "press" }}'
sequence:
- choose:
- conditions: "{{ trigger.event.data.button_number == button_numbers[0] }}"
sequence:
- choose:
- conditions:
- condition: template
value_template: "{{button_0_hold_actions != []}}"
sequence:
- wait_for_trigger:
- platform: event
event_type: lutron_caseta_button_event
event_data:
button_number: "{{ trigger.event.data.button_number }}"
action: release
device_id: "{{ trigger.event.data.device_id }}"
timeout: !input time_before_long_press
- choose:
- conditions:
- condition: template
value_template: "{{ not wait.trigger }}"
sequence: !input button_0_hold
default: !input button_0_press
default: !input button_0_press
- conditions: "{{ trigger.event.data.button_number == button_numbers[1] }}"
sequence:
- choose:
- conditions:
- condition: template
value_template: "{{button_1_hold_actions != []}}"
sequence:
- wait_for_trigger:
- platform: event
event_type: lutron_caseta_button_event
event_data:
button_number: "{{ trigger.event.data.button_number }}"
action: release
device_id: "{{ trigger.event.data.device_id }}"
timeout: !input time_before_long_press
- choose:
- conditions:
- condition: template
value_template: "{{ not wait.trigger }}"
sequence: !input button_1_hold
default: !input button_1_press
default: !input button_1_press
- conditions: "{{ trigger.event.data.button_number == button_numbers[2] }}"
sequence:
- choose:
- conditions:
- condition: template
value_template: "{{button_2_hold_actions != []}}"
sequence:
- wait_for_trigger:
- platform: event
event_type: lutron_caseta_button_event
event_data:
button_number: "{{ trigger.event.data.button_number }}"
action: release
device_id: "{{ trigger.event.data.device_id }}"
timeout: !input time_before_long_press
- choose:
- conditions:
- condition: template
value_template: "{{ not wait.trigger }}"
sequence: !input button_2_hold
default: !input button_2_press
default: !input button_2_press
- conditions: "{{ trigger.event.data.button_number == button_numbers[3] }}"
sequence:
- choose:
- conditions:
- condition: template
value_template: "{{button_3_hold_actions != []}}"
sequence:
- wait_for_trigger:
- platform: event
event_type: lutron_caseta_button_event
event_data:
button_number: "{{ trigger.event.data.button_number }}"
action: release
device_id: "{{ trigger.event.data.device_id }}"
timeout: !input time_before_long_press
- choose:
- conditions:
- condition: template
value_template: "{{ not wait.trigger }}"
sequence: !input button_3_hold
default: !input button_3_press
default: !input button_3_press
default: []
mode: !input auto_mode
max: !input mode_max
trace:
stored_traces: 10
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment