Instantly share code, notes, and snippets.
Created
January 12, 2023 06:39
-
Star
0
(0)
You must be signed in to star a gist -
Fork
0
(0)
You must be signed in to fork a gist
-
Save exciton/9845aca7d54cb1c7da7c78396e903626 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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