Skip to content

Instantly share code, notes, and snippets.

@smartqasa
Last active September 15, 2025 01:44
Show Gist options
  • Save smartqasa/9814a750a0d0cfb196fa1fa7ae3630bb to your computer and use it in GitHub Desktop.
Save smartqasa/9814a750a0d0cfb196fa1fa7ae3630bb to your computer and use it in GitHub Desktop.
Lutron Pico 5 Button - Light Entity Control
blueprint:
domain: automation
source_url: https://gist.github.com/smartqasa/9814a750a0d0cfb196fa1fa7ae3630bb
name: Lutron Pico 5 Button - Light Entity Control
description: >-
Control one or more lights using a Lutron Pico 5-Button remote (model PJ2-3BRL-GXX-X01).
This blueprint simulates a standard Lutron Caseta wall dimmer, including press-and-hold
dimming for the raise/lower buttons. Customize brightness step size, transition speed,
and optionally assign any action to the middle (favorite) button.
input:
pico:
name: Pico Device
description: "The Pico remote device to associate with light entity(ies)."
selector:
device:
filter:
model: PJ2-3BRL-GXX-X01 (Pico3ButtonRaiseLower)
entity:
name: Light Entity(ies)
description: "The light entity or entities to be controlled."
selector:
entity:
filter:
domain: light
multiple: true
step:
name: Brightness Step Percentage
description: "The percentage to increase/decrease the brightness when the raise/lower button is pressed."
default: 10
selector:
number:
min: 1
max: 25
unit_of_measurement: percent
hold:
name: Hold Time
description: "The time in milliseconds to hold the raise/lower button before the light starts dimming. A button press of less than this time will brighten/dim the light by the step percentage."
default: 400
selector:
number:
min: 100
max: 1000
unit_of_measurement: milliseconds
transition_on:
name: Transition On
description: The transition speed in seconds when turning the light(s) on.
default: 1
selector:
number:
min: 0
max: 10
unit_of_measurement: seconds
transition_off:
name: Transition Off
description: The transition speed in seconds when turning the light(s) off.
default: 2
selector:
number:
min: 0
max: 10
unit_of_measurement: seconds
middle_button_action:
name: Middle (Favorite) Button Override
description: "Optional actions to run when the middle (favorite) button is pressed. If left blank, the light will be set to 80% brightness and 2800K color temperature."
selector:
action: {}
default:
variables:
step: !input step
hold: !input hold
hold_time: "{{ hold / 1000 }}"
middle_button_action: !input middle_button_action
trigger:
- trigger: device
device_id: !input pico
domain: lutron_caseta
type: press
subtype: "on"
id: on_pressed
- trigger: device
device_id: !input pico
domain: lutron_caseta
type: press
subtype: raise
id: raise_pressed
- trigger: device
device_id: !input pico
domain: lutron_caseta
type: press
subtype: stop
id: stop_pressed
- trigger: device
device_id: !input pico
domain: lutron_caseta
type: press
subtype: lower
id: lower_pressed
- trigger: device
device_id: !input pico
domain: lutron_caseta
type: press
subtype: "off"
id: off_pressed
action:
- choose:
- conditions:
- condition: trigger
id: on_pressed
sequence:
- action: light.turn_on
data:
brightness_pct: 100
transition: !input transition_on
target:
entity_id: !input entity
- conditions:
- condition: trigger
id: raise_pressed
sequence:
- repeat:
sequence:
- action: light.turn_on
data:
brightness_step_pct: "{{ step }}"
target:
entity_id: !input entity
continue_on_error: true
- wait_for_trigger:
- trigger: device
device_id: !input pico
domain: lutron_caseta
type: release
subtype: raise
timeout:
seconds: "{{ hold_time }}"
continue_on_timeout: true
- if:
- "{{ wait.remaining > 0 }}"
then:
- stop:
until:
- condition: numeric_state
entity_id: !input entity
attribute: brightness
above: 254
- conditions:
- condition: trigger
id: stop_pressed
sequence:
- if: >-
{{
middle_button_action is defined and
middle_button_action is sequence and
middle_button_action | length > 0
}}
then:
- sequence: !input middle_button_action
else:
- action: light.turn_on
target:
entity_id: !input entity
data:
brightness_pct: 80
kelvin: 2800
- conditions:
- condition: trigger
id: lower_pressed
sequence:
- repeat:
sequence:
- action: light.turn_on
data:
brightness_step_pct: "{{ step * -1 }}"
target:
entity_id: !input entity
continue_on_error: true
- wait_for_trigger:
- trigger: device
device_id: !input pico
domain: lutron_caseta
type: release
subtype: lower
timeout:
seconds: "{{ hold_time }}"
continue_on_timeout: true
- if:
- "{{ wait.remaining > 0 }}"
then:
- stop:
until:
- condition: numeric_state
entity_id: !input entity
attribute: brightness
below: 1
- conditions:
- condition: trigger
id: off_pressed
sequence:
- action: light.turn_off
data:
transition: !input transition_off
target:
entity_id: !input entity
mode: restart
@smartqasa
Copy link
Author

A minor re-write to better control the press and hold functionality

@stealthmonger
Copy link

[{
"resource": "/config/blueprints/automation/Mikes",
"owner": "generated_diagnostic_collection_name#3",
"severity": 8,
"message": "Unresolved tag: !input",
"source": "YAML",
"startLineNumber": 70,
"startColumn": 9,
"endLineNumber": 70,
"endColumn": 21
},{
"resource": "/config/blueprints/automation/Mikes",
"owner": "generated_diagnostic_collection_name#3",
"severity": 8,
"message": "Unresolved tag: !input",
"source": "YAML",
"startLineNumber": 71,
"startColumn": 9,
"endLineNumber": 71,
"endColumn": 21
},{
"resource": "/config/blueprints/automation/Mikes",
"owner": "generated_diagnostic_collection_name#3",
"severity": 8,
"message": "Unresolved tag: !input",
"source": "YAML",
"startLineNumber": 73,
"startColumn": 25,
"endLineNumber": 73,
"endColumn": 53
},{
"resource": "/config/blueprints/automation/Mikes",
"owner": "generated_diagnostic_collection_name#3",
"severity": 8,
"message": "Unresolved tag: !input",
"source": "YAML",
"startLineNumber": 77,
"startColumn": 16,
"endLineNumber": 77,
"endColumn": 28
},{
"resource": "/config/blueprints/automation/Mikes",
"owner": "generated_diagnostic_collection_name#3",
"severity": 8,
"message": "Unresolved tag: !input",
"source": "YAML",
"startLineNumber": 83,
"startColumn": 16,
"endLineNumber": 83,
"endColumn": 28
},{
"resource": "/config/blueprints/automation/Mikes",
"owner": "generated_diagnostic_collection_name#3",
"severity": 8,
"message": "Unresolved tag: !input",
"source": "YAML",
"startLineNumber": 89,
"startColumn": 16,
"endLineNumber": 89,
"endColumn": 28
},{
"resource": "/config/blueprints/automation/Mikes",
"owner": "generated_diagnostic_collection_name#3",
"severity": 8,
"message": "Unresolved tag: !input",
"source": "YAML",
"startLineNumber": 95,
"startColumn": 16,
"endLineNumber": 95,
"endColumn": 28
},{
"resource": "/config/blueprints/automation/Mikes",
"owner": "generated_diagnostic_collection_name#3",
"severity": 8,
"message": "Unresolved tag: !input",
"source": "YAML",
"startLineNumber": 101,
"startColumn": 16,
"endLineNumber": 101,
"endColumn": 28
},{
"resource": "/config/blueprints/automation/Mikes",
"owner": "generated_diagnostic_collection_name#3",
"severity": 8,
"message": "Unresolved tag: !input",
"source": "YAML",
"startLineNumber": 116,
"startColumn": 27,
"endLineNumber": 116,
"endColumn": 48
},{
"resource": "/config/blueprints/automation/Mikes",
"owner": "generated_diagnostic_collection_name#3",
"severity": 8,
"message": "Unresolved tag: !input",
"source": "YAML",
"startLineNumber": 118,
"startColumn": 26,
"endLineNumber": 118,
"endColumn": 40
},{
"resource": "/config/blueprints/automation/Mikes",
"owner": "generated_diagnostic_collection_name#3",
"severity": 8,
"message": "Unresolved tag: !input",
"source": "YAML",
"startLineNumber": 129,
"startColumn": 32,
"endLineNumber": 129,
"endColumn": 46
},{
"resource": "/config/blueprints/automation/Mikes",
"owner": "generated_diagnostic_collection_name#3",
"severity": 8,
"message": "Unresolved tag: !input",
"source": "YAML",
"startLineNumber": 133,
"startColumn": 34,
"endLineNumber": 133,
"endColumn": 46
},{
"resource": "/config/blueprints/automation/Mikes",
"owner": "generated_diagnostic_collection_name#3",
"severity": 8,
"message": "Unresolved tag: !input",
"source": "YAML",
"startLineNumber": 146,
"startColumn": 30,
"endLineNumber": 146,
"endColumn": 44
},{
"resource": "/config/blueprints/automation/Mikes",
"owner": "generated_diagnostic_collection_name#3",
"severity": 8,
"message": "Unresolved tag: !input",
"source": "YAML",
"startLineNumber": 160,
"startColumn": 27,
"endLineNumber": 160,
"endColumn": 55
},{
"resource": "/config/blueprints/automation/Mikes",
"owner": "generated_diagnostic_collection_name#3",
"severity": 8,
"message": "Unresolved tag: !input",
"source": "YAML",
"startLineNumber": 164,
"startColumn": 30,
"endLineNumber": 164,
"endColumn": 44
},{
"resource": "/config/blueprints/automation/Mikes",
"owner": "generated_diagnostic_collection_name#3",
"severity": 8,
"message": "Unresolved tag: !input",
"source": "YAML",
"startLineNumber": 178,
"startColumn": 32,
"endLineNumber": 178,
"endColumn": 46
},{
"resource": "/config/blueprints/automation/Mikes",
"owner": "generated_diagnostic_collection_name#3",
"severity": 8,
"message": "Unresolved tag: !input",
"source": "YAML",
"startLineNumber": 182,
"startColumn": 34,
"endLineNumber": 182,
"endColumn": 46
},{
"resource": "/config/blueprints/automation/Mikes",
"owner": "generated_diagnostic_collection_name#3",
"severity": 8,
"message": "Unresolved tag: !input",
"source": "YAML",
"startLineNumber": 195,
"startColumn": 30,
"endLineNumber": 195,
"endColumn": 44
},{
"resource": "/config/blueprints/automation/Mikes",
"owner": "generated_diagnostic_collection_name#3",
"severity": 8,
"message": "Unresolved tag: !input",
"source": "YAML",
"startLineNumber": 204,
"startColumn": 27,
"endLineNumber": 204,
"endColumn": 49
},{
"resource": "/config/blueprints/automation/Mikes",
"owner": "generated_diagnostic_collection_name#3",
"severity": 8,
"message": "Unresolved tag: !input",
"source": "YAML",
"startLineNumber": 206,
"startColumn": 26,
"endLineNumber": 206,
"endColumn": 40
}]

@stealthmonger
Copy link

Not sure what I have done wrong but I can't get any blueprints to work

@mygsunny
Copy link

can you help me? the long press and release works flawlessly but the short press doesn't work

@smartqasa
Copy link
Author

smartqasa commented Jul 24, 2025

I can try to help. When you short press the raise/lower, does it register in the logbook? If you can, please send me the automation yaml.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment