Last active
September 7, 2025 16:53
-
-
Save thomasmaxson/7a829086a4f3bdde56691cf85184345c to your computer and use it in GitHub Desktop.
Home Assistant Blueprint to control your devices with Lutron Pico Paddle remotes using the Lutron Caseta integration.
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
| # This blueprint uses an Lutron Pico Paddle Remote Control | |
| # This blueprint allows you to run custom actions with the remote's buttons | |
| # | |
| # | Button | Action | Event | | |
| # | ------ | ------------ | ------------ | | |
| # | On | Press | Custom event | | |
| # | On | Press & Hold | Custom event | | |
| # | Off | Press | Custom event | | |
| # | Off | Press & Hold | Custom event | | |
| blueprint: | |
| name: Lutron Pico, Paddle Remote Control | |
| description: Control devices with your Lutron Pico paddle. | |
| author: Thomas Maxson | |
| source_url: https://gist.github.com/thomasmaxson/7a829086a4f3bdde56691cf85184345c | |
| homeassistant: | |
| min_version: 2024.6.0 | |
| domain: automation | |
| input: | |
| remote: | |
| name: Lutron Pico remote control | |
| description: Select the Lutron Pico remote to trigger your automations. | |
| selector: | |
| device: | |
| multiple: false | |
| filter: | |
| - integration: lutron_caseta | |
| manufacturer: Lutron Electronics Co., Inc | |
| model: PJ2-1P-GXX (PaddleSwitchPico) | |
| - integration: lutron_caseta | |
| manufacturer: Lutron Electronics Co., Inc | |
| model: PJ2-1P-GXX | |
| actions_single_press: | |
| name: Single Press Button Events | |
| icon: mdi:gesture-tap | |
| collapsed: false | |
| input: | |
| event_button_press_on_single: | |
| name: On Button Press Event | |
| description: The action to perform on _single press_ of the **On Button**. | |
| default: [] | |
| selector: | |
| action: {} | |
| event_button_press_off_single: | |
| name: Off Button Press Event | |
| description: The action to perform on _single press_ of the **Off Button**. | |
| default: [] | |
| selector: | |
| action: {} | |
| actions_hold_press: | |
| name: Press and Hold Button Events | |
| icon: mdi:gesture-tap-hold | |
| collapsed: true | |
| input: | |
| event_button_press_on_hold: | |
| name: On Button Hold Event | |
| description: The action to perform on _press and hold_ of the **On Button**. | |
| default: [] | |
| selector: | |
| action: {} | |
| event_button_press_off_hold: | |
| name: Off Button Hold Event | |
| description: The action to perform on _press and hold_ of the **Off Button**. | |
| default: [] | |
| selector: | |
| action: {} | |
| duration_hold: | |
| name: Hold Delay | |
| description: Duration used for the hold detection | |
| default: 500 | |
| selector: | |
| number: | |
| min: 500 | |
| max: 4000 | |
| unit_of_measurement: milliseconds | |
| step: 500 | |
| mode: slider | |
| automation_config: | |
| name: Configuration | |
| icon: mdi:cog | |
| collapsed: true | |
| input: | |
| config_mode: | |
| name: Automation Mode | |
| description: Mode that automation runs in. | |
| default: restart | |
| selector: | |
| select: | |
| options: | |
| - single | |
| - restart | |
| - queued | |
| - parallel | |
| custom_value: false | |
| multiple: false | |
| config_max_num: | |
| name: Mode Max | |
| description: > | |
| Maximum number of runs that can be executed or queued at a time. | |
| <br>Ignored by _Single_ and _Restart_ Modes. | |
| default: 10 | |
| selector: | |
| number: | |
| mode: slider | |
| unit_of_measurement: runs | |
| min: 1.0 | |
| max: 15.0 | |
| step: 1.0 | |
| mode: !input config_mode | |
| max: !input config_max_num | |
| max_exceeded: silent | |
| variables: | |
| trigger_device_id: "{{ trigger.event.data.device_id }}" | |
| var_remote: !input remote | |
| var_duration_hold: !input duration_hold | |
| triggers: | |
| - alias: On Button Press | |
| trigger: device | |
| device_id: !input remote | |
| domain: lutron_caseta | |
| type: press | |
| subtype: "on" | |
| id: trigger_on_press | |
| - alias: Off Button Press | |
| trigger: device | |
| device_id: !input remote | |
| domain: lutron_caseta | |
| type: press | |
| subtype: "off" | |
| id: trigger_off_press | |
| conditions: | |
| - condition: template | |
| value_template: "{{ var_remote | count > 0 }}" | |
| actions: | |
| - choose: | |
| # Press on the ON button | |
| - conditions: | |
| - condition: trigger | |
| id: trigger_on_press | |
| sequence: | |
| - wait_for_trigger: | |
| - trigger: device | |
| device_id: !input remote | |
| domain: lutron_caseta | |
| type: release | |
| subtype: "on" | |
| timeout: | |
| hours: 0 | |
| minutes: 0 | |
| seconds: 0 | |
| milliseconds: "{{ var_duration_hold | float }}" | |
| continue_on_timeout: true | |
| - if: | |
| - condition: template | |
| value_template: "{{ wait.trigger == none }}" | |
| then: !input event_button_press_on_hold | |
| else: !input event_button_press_on_single | |
| # Press on the OFF button | |
| - conditions: | |
| - condition: trigger | |
| id: trigger_off_press | |
| sequence: | |
| - wait_for_trigger: | |
| - trigger: device | |
| device_id: !input remote | |
| domain: lutron_caseta | |
| type: release | |
| subtype: "off" | |
| timeout: | |
| hours: 0 | |
| minutes: 0 | |
| seconds: 0 | |
| milliseconds: "{{ var_duration_hold | float }}" | |
| continue_on_timeout: true | |
| - if: | |
| - condition: template | |
| value_template: "{{ wait.trigger == none }}" | |
| then: !input event_button_press_off_hold | |
| else: !input event_button_press_off_single |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment