Shelly BLU RC 4-button bluetooth remote - DJF3

Photo: Shelly Bluetooth remote (numbers = button numbers)

Open your Home Assistant instance and show the blueprint import dialog with a specific blueprint pre-filled.

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! :slight_smile:
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

  1. Import blueprint - Click the button above.
  2. Open blueprint
  3. Select switch - listed in the switch dropdown
  4. Configure actions - for each button
  5. Save
  6. 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

Open your Home Assistant instance and show the blueprint import dialog with a specific blueprint pre-filled.

Other blueprints that I created:

Questions or comments? Let me know! :+1:

1 Like

I have the square variant of this switch. Had to remove the model filter, but otherwise it seems to work fine.

1 Like

Thanks for the blueprint. Sadly HA can’t find any switch.

I don’t have this issue with other blueprints.

Do you have any ideas?

1 Like

Good point @jan1234 .
Something was updated causing the model name to be changed from BLU Button1 to BTHome sensor. The blueprint will now show all BThome integration devices but at least you will be able to select the remote.

UPDATE CHALLENGE
As I had not set the source_url before you cannot re-import the updated blueprint. (it doesn’t know where to get it from).

#1 SOLUTION QUICK FIX
In the blueprint file in /config/blueprints/automation/duittenb/djs_bthome_shelly_4button_remote-ULTRA.yaml
update the following line from:
model: BLU Button1 to model: BTHome sensor
Then go to developer tools and click (reload) “AUTOMATIONS”.

#2 SOLUTION
In the blueprint file in /config/blueprints/automation/duittenb/djs_bthome_shelly_4button_remote-ULTRA.yaml

Just above “domain:” add or replace the source_url line with:

source_url: https://community.home-assistant.io/t/shelly-blu-rc-4-button-bluetooth-remote-djf3/867587

Then go to developer tools and click (reload) “AUTOMATIONS”.

Go to the blueprint menu, click the “3-dot” menu right of this blueprint and select “re-import the blueprint”.

#3 SOLUTION radical
Re-import this blueprint file as if it had not existed before. You will have to re-create your automations