This is an updated version of the excellent blueprint provided by @duittenb, which itself is inspired by blake.dubiel’s blueprint as enhanced by Shiroe93. Unfortunately, new user restrictions are stopping me from adding more pretty pictures and hyperlinks.
This version adds the optional ability to conditionally enable or disable the remote based on a Toggle (boolean) helper that you create. For example, you may want to temporarily disable your remote when your toddlers decide to pick it up and start mashing buttons.
blueprint:
name: _Shelly BLU RC 4-Button bluetooth remote by Kitzaloo
description: "This is an updated version of the blueprint provided by duittenb (https://community.home-assistant.io/t/shelly-blu-rc-4-button-bluetooth-remote-djf3/867587), who did the heavy lifting of getting all the buttons into a clean blueprint.<br>
\ I added the ability to use a Toggle helper to disable the remote, such as if you have toddlers who like to press buttons!<br>
\ Device info: [Shelly BLU RC 4 button](https://www.shelly.com/products/shelly-blu-rc-button-4)
\n
\n .-----. SUPPORTED:
\n | 1 | - single/double/triple click
\n |-----| - long click
\n | 2 |
\n |-----| NOT SUPPORTED (rarely used)
\n | 3 | - long_double click
\n |-----| - long_triple click
\n | 4 | - hold click
\n '-----'\n"
author: Kitzaloo
source_url: https://community.home-assistant.io/t/shelly-blu-rc-4-button-bluetooth-remote-with-conditional-disabling/961131
homeassistant:
min_version: 2025.5.0
domain: automation
input:
your_remote:
name: "Select your Shelly BLU RC 4-button bluetooth remote"
description: ""
selector:
device:
filter:
- integration: bthome
model: BTHome sensor
# was model: BLU Button1
multiple: false
disabler_section:
name: "Conditionally Enable/Disable (optional)"
icon: mdi:circle-off-outline
collapsed: true
input:
input_boolean_entity:
name: "Select the Toggle helper entity* you wish to use to enable/disable the remote's functions."
description: "Leaving this option blank will cause the remote to be always enabled. <br><i>*You must create your own Toggle helper entity separately if you wish to use this feature.</i>"
selector:
entity:
filter:
- domain: "input_boolean"
default: ""
disabled_state:
name: "State of the Toggle helper when the remote is to be disabled."
description: "ON means the Toggle helper acts as a Disabling Switch for the remote. <br>OFF means the Toggle helper acts as an Enabling Switch for the remote."
selector:
boolean:
default: true
button1_section:
name: BUTTON 1
icon: mdi:numeric-1-box-outline
collapsed: true
input:
input_button1_short:
name: Button 1 - SINGLE click
description: ""
default: []
selector:
action: {}
input_button1_double:
name: Button 1 - DOUBLE click
description: ""
default: []
selector:
action: {}
input_button1_triple:
name: Button 1 - TRIPLE click
description: ""
default: []
selector:
action: {}
input_button1_long:
name: Button 1 - LONG click
description: ""
default: []
selector:
action: {}
button2_section:
name: BUTTON 2
icon: mdi:numeric-2-box-outline
collapsed: true
input:
input_button2_short:
name: Button 2 - SINGLE click
description: ""
default: []
selector:
action: {}
input_button2_double:
name: Button 2 - DOUBLE click
description: ""
default: []
selector:
action: {}
input_button2_triple:
name: Button 2 - TRIPLE click
description: ""
default: []
selector:
action: {}
input_button2_long:
name: Button 2 - LONG click
description: ""
default: []
selector:
action: {}
button3_section:
name: BUTTON 3
icon: mdi:numeric-3-box-outline
collapsed: true
input:
input_button3_short:
name: Button 3 - SINGLE click
description: ""
default: []
selector:
action: {}
input_button3_double:
name: Button 3 - DOUBLE click
description: ""
default: []
selector:
action: {}
input_button3_triple:
name: Button 3 - TRIPLE click
description: ""
default: []
selector:
action: {}
input_button3_long:
name: Button 3 - LONG click
description: ""
default: []
selector:
action: {}
button4_section:
name: BUTTON 4
icon: mdi:numeric-4-box-outline
collapsed: true
input:
input_button4_short:
name: Button 4 - SINGLE click
description: ""
default: []
selector:
action: {}
input_button4_double:
name: Button 4 - DOUBLE click
description: ""
default: []
selector:
action: {}
input_button4_triple:
name: Button 4 - TRIPLE click
description: ""
default: []
selector:
action: {}
input_button4_long:
name: Button 4 - LONG click
description: ""
default: []
selector:
action: {}
trigger:
- platform: event
event_type: bthome_ble_event
event_data:
device_id: !input your_remote
mode: single
action:
- choose:
# ------- Button 1
- conditions:
- condition: template
value_template: '{{ trigger.event.data.event_class == ''button_1'' and trigger.event.data.event_type == ''press'' }}'
sequence: !input input_button1_short
- conditions:
- condition: template
value_template: '{{ trigger.event.data.event_class == ''button_1'' and trigger.event.data.event_type == ''double_press'' }}'
sequence: !input input_button1_double
- conditions:
- condition: template
value_template: '{{ trigger.event.data.event_class == ''button_1'' and trigger.event.data.event_type == ''triple_press'' }}'
sequence: !input input_button1_triple
- conditions:
- condition: template
value_template: '{{ trigger.event.data.event_class == ''button_1'' and trigger.event.data.event_type == ''long_press'' }}'
sequence: !input input_button1_long
# ------- Button 2
- conditions:
- condition: template
value_template: '{{ trigger.event.data.event_class == ''button_2'' and trigger.event.data.event_type == ''press'' }}'
sequence: !input input_button2_short
- conditions:
- condition: template
value_template: '{{ trigger.event.data.event_class == ''button_2'' and trigger.event.data.event_type == ''double_press'' }}'
sequence: !input input_button2_double
- conditions:
- condition: template
value_template: '{{ trigger.event.data.event_class == ''button_2'' and trigger.event.data.event_type == ''triple_press'' }}'
sequence: !input input_button2_triple
- conditions:
- condition: template
value_template: '{{ trigger.event.data.event_class == ''button_2'' and trigger.event.data.event_type == ''long_press'' }}'
sequence: !input input_button2_long
# ------- Button 3
- conditions:
- condition: template
value_template: '{{ trigger.event.data.event_class == ''button_3'' and trigger.event.data.event_type == ''press'' }}'
sequence: !input input_button3_short
- conditions:
- condition: template
value_template: '{{ trigger.event.data.event_class == ''button_3'' and trigger.event.data.event_type == ''double_press'' }}'
sequence: !input input_button3_double
- conditions:
- condition: template
value_template: '{{ trigger.event.data.event_class == ''button_3'' and trigger.event.data.event_type == ''triple_press'' }}'
sequence: !input input_button3_triple
- conditions:
- condition: template
value_template: '{{ trigger.event.data.event_class == ''button_3'' and trigger.event.data.event_type == ''long_press'' }}'
sequence: !input input_button3_long
# ------- Button 4
- conditions:
- condition: template
value_template: '{{ trigger.event.data.event_class == ''button_4'' and trigger.event.data.event_type == ''press'' }}'
sequence: !input input_button4_short
- conditions:
- condition: template
value_template: '{{ trigger.event.data.event_class == ''button_4'' and trigger.event.data.event_type == ''double_press'' }}'
sequence: !input input_button4_double
- conditions:
- condition: template
value_template: '{{ trigger.event.data.event_class == ''button_4'' and trigger.event.data.event_type == ''triple_press'' }}'
sequence: !input input_button4_triple
- conditions:
- condition: template
value_template: '{{ trigger.event.data.event_class == ''button_4'' and trigger.event.data.event_type == ''long_press'' }}'
sequence: !input input_button4_long
variables:
input_boolean_entity: !input input_boolean_entity
disabled_state: !input disabled_state
condition:
- condition: template
value_template: "{{ input_boolean_entity == '' or states(input_boolean_entity) != ('on' if disabled_state else 'off') }}"