Photo: Shelly Bluetooth remote (numbers = button numbers)
UPDATE June 2025
Because of an update (Shelly FW? BTHome integration?) the model name of this remote has changed from BLU Button1 to BTHome sensor. Update blueprint by ‘re-importing’ it fails because the code below did not have the source_url set. Solutions are listed in this post.
WHAT IS THIS?
Here’s my second blueprint! ![]()
A blueprint that enables you to quickly configure a switch. It also is a lot easier to look at compared to manual events in an automation.
It was inspired by @blake.dubiel blueprint that was enhanced by @Shiroe93 .
Updates:
- Actions grouped per button (see screenshot below)
- The least amount of text possible. (well you could use less text)
SETUP
- Import blueprint - Click the button above.
- Open blueprint
- Select switch - listed in the switch dropdown
- Configure actions - for each button
- Save
- Test
REQUIREMENTS
- Supported switch
- A shelly plus or gen3 device that can relay bluetooth to HA
- HA 2025.5 (updated blueprint not tested with earlier versions)
DEVICE INFO
- Manufacturer: Shelly
- Model: BLU RC 4 button
- Buttons: 4
- Supported actions:
○ single click
○ double click
○ triple click
○ long click - Not supported in this blueprint (because of ‘rarely used’)
○ long double click
○ long triple click
○ hold click
NOTES:
- SIngle switch: I have not enabled multiple switches in a single automation. It’s so easy to duplicate an automation and select another switch if you need 2 of the same switches.
TIPS
- Use a labelmaker to print labels with icons, numbers or text. Great for the xAF (whatever Acceptance Factor).
- Mounting: I use very thin nano tape (see through / gel type) to put them on a wall. The factory default mounting tape is often impossible to take off.
Note that this shelly remote has a magnetic base! - Firmware update. There was a situation where this remote needed a firmware update to to bring the battery consumption acceptable level. So make sure it runs that latest firmware!
blueprint:
name: _Shelly BLU RC 4-Button bluetooth remote ULTRA by DJF3
description: "Shelly blueprint for the <strong>Shelly BLU RC 4-Button bluetooth remote</strong>.<br>
\ inspired by blake.dubiel and Shiroe93 [community](https://community.home-assistant.io/t/shelly-blu-rc-4/774639)
\ Version 0.11: Changed filter model from 'BLU Button1' (not recognized) to 'BTHome sensor' (results in all BThome devices but works for remote)<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: DJ Uittenbogaard
homeassistant:
min_version: 2025.5.0
source_url: https://community.home-assistant.io/t/shelly-blu-rc-4-button-bluetooth-remote-djf3/867587
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
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
Other blueprints that I created:
Questions or comments? Let me know! ![]()

