Shelly BLU RC 4-button bluetooth remote with conditional disabling

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.

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

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') }}"