IKEA (5 Button) Blink switch

Hey,

I create an awesome script. My problem with the IKEA Remote was that you can not change the light bulbs. Every light bulb needs its own remote (if you want every function from the remote [brightness, temperature]). If you do a double click (virtual double click) with the center button, then you choose a new light bulb. The light bulb will blink (toggle, 500ms wait, toggle).

The blueprint is based on the awesome blueprint (IKEA 5 Buttons).

I used some helper. An integer input for the index of the current light bulb and some stuff from awesome blueprints.

I need help to create a “real” blue print. A lot of automation is in the input (configured with the ui). I want create a more generic blueprint. The only thing that you need to configure is the input (3, 4 or 5 Light bulbs…).

The basic idea is, after a double click to increase the counter (or set to 0) and then if you do a normal center click a choose will select the entity with that index.

The blueprint:

blueprint:
  name: Controller
  description: '# '
  domain: automation
  input:
    integration:
      name: (Required) Integration
      selector:
        select:
          options:
          - deCONZ
          - ZHA
          - Zigbee2MQTT
    controller_device:
      name: (deCONZ, ZHA) Controller Device
      description: The controller device to use for the automation. Choose a value
        only if the remote is integrated with deCONZ, ZHA.
      default: ''
      selector:
        device: {}
    controller_entity:
      name: (Zigbee2MQTT) Controller Entity
      default: ''
      selector:
        entity:
          domain: sensor
    first_light_blub:
      name: First Light Blub
      description: The light entity to control.
      selector:
        target:
          entity:
            domain: light
    second_light_blub:
      name: Second Light Blub
      selector:
        target:
          entity:
            domain: light
    third_light_blub:
      name: Second Light Blub
      selector:
        target:
          entity:
            domain: light
    speed:
      name: Speed
      selector:
        number:
          min: 100
          max: 1000
          step: 100
          unit_of_measurement: milliseconds
          mode: slider
      default: 500
    speed_brightness:
      name: Speed Brightness
      selector:
        number:
          min: 100
          max: 1000
          step: 100
          unit_of_measurement: milliseconds
          mode: slider
      default: 500
    helper_last_controller_event:
      name: (Required) Helper - Last Controller Event
      default: ''
      selector:
        entity:
          domain: input_text
    helper_light_index:
      name: (Required) Helper - Last Controller Event
      default: ''
      selector:
        entity:
          domain: input_number
    action_button_left_short:
      name: (Optional) Left button short press
      description: Action to run on short left button press.
      default: []
      selector:
        action: {}
    action_button_left_long:
      name: (Optional) Left button long press
      description: Action to run on long left button press.
      default: []
      selector:
        action: {}
    action_button_left_release:
      name: (Optional) Left button release
      description: Action to run on left button release after long press.
      default: []
      selector:
        action: {}
    action_button_left_double:
      name: (Optional) Left button double press
      description: Action to run on double left button press.
      default: []
      selector:
        action: {}
    action_button_right_short:
      name: (Optional) Right button short press
      description: Action to run on short right button press.
      default: []
      selector:
        action: {}
    action_button_right_long:
      name: (Optional) Right button long press
      description: Action to run on long right button press.
      default: []
      selector:
        action: {}
    action_button_right_release:
      name: (Optional) Right button release
      description: Action to run on right button release after long press.
      default: []
      selector:
        action: {}
    action_button_right_double:
      name: (Optional) Right button double press
      description: Action to run on double right button press.
      default: []
      selector:
        action: {}
    action_button_up_short:
      name: (Optional) Up button short press
      description: Action to run on short up button press.
      default: []
      selector:
        action: {}
    action_button_up_long:
      name: (Optional) Up button long press
      description: Action to run on long up button press.
      default: []
      selector:
        action: {}
    action_button_up_release:
      name: (Optional) Up button release
      description: Action to run on up button release after long press.
      default: []
      selector:
        action: {}
    action_button_up_double:
      name: (Optional) Up button double press
      description: Action to run on double up button press.
      default: []
      selector:
        action: {}
    action_button_down_short:
      name: (Optional) Down button short press
      description: Action to run on short down button press.
      default: []
      selector:
        action: {}
    action_button_down_long:
      name: (Optional) Down button long press
      description: Action to run on long down button press.
      default: []
      selector:
        action: {}
    action_button_down_release:
      name: (Optional) Down button release
      description: Action to run on down button release after long press.
      default: []
      selector:
        action: {}
    action_button_down_double:
      name: (Optional) Down button double press
      description: Action to run on double down button press.
      default: []
      selector:
        action: {}
    action_button_center_short:
      name: (Optional) Center button short press
      description: Action to run on short center button press.
      default: []
      selector:
        action: {}
    action_button_center_long:
      name: (Optional) Center button long press
      description: Action to run on long center button press.
      default: []
      selector:
        action: {}
    action_button_center_double:
      name: (Optional) Center button double press
      description: Action to run on double center button press.
      default: []
      selector:
        action: {}
    button_left_long_loop:
      name: (Optional) Left button long press - loop until release
      description: Loop the left button action until the button is released.
      default: false
      selector:
        boolean: {}
    button_left_long_max_loop_repeats:
      name: (Optional) Left button long press - Maximum loop repeats
      description: Maximum number of repeats for the custom action, when looping is
        enabled. Use it as a safety limit to prevent an endless loop in case the corresponding
        stop event is not received.
      default: 500
      selector:
        number:
          min: 1.0
          max: 5000.0
          mode: slider
          step: 1.0
    button_right_long_loop:
      name: (Optional) Right button long press - loop until release
      description: Loop the right button action until the button is released.
      default: false
      selector:
        boolean: {}
    button_right_long_max_loop_repeats:
      name: (Optional) Right button long press - Maximum loop repeats
      description: Maximum number of repeats for the custom action, when looping is
        enabled. Use it as a safety limit to prevent an endless loop in case the corresponding
        stop event is not received.
      default: 500
      selector:
        number:
          min: 1.0
          max: 5000.0
          mode: slider
          step: 1.0
    button_up_long_loop:
      name: (Optional) Up button long press - loop until release
      description: Loop the up button action until the button is released.
      default: false
      selector:
        boolean: {}
    button_up_long_max_loop_repeats:
      name: (Optional) Up button long press - Maximum loop repeats
      description: Maximum number of repeats for the custom action, when looping is
        enabled. Use it as a safety limit to prevent an endless loop in case the corresponding
        stop event is not received.
      default: 500
      selector:
        number:
          min: 1.0
          max: 5000.0
          mode: slider
          step: 1.0
    button_down_long_loop:
      name: (Optional) Down button long press - loop until release
      description: Loop the down button action until the button is released.
      default: false
      selector:
        boolean: {}
    button_down_long_max_loop_repeats:
      name: (Optional) Down button long press - Maximum loop repeats
      description: Maximum number of repeats for the custom action, when looping is
        enabled. Use it as a safety limit to prevent an endless loop in case the corresponding
        stop event is not received.
      default: 500
      selector:
        number:
          min: 1.0
          max: 5000.0
          mode: slider
          step: 1.0
    button_left_double_press:
      name: (Optional) Expose left button double press event
      description: Choose whether or not to expose the virtual double press event
        for the left button. Turn this on if you are providing an action for the left
        button double press event.
      default: false
      selector:
        boolean: {}
    button_right_double_press:
      name: (Optional) Expose right button double press event
      description: Choose whether or not to expose the virtual double press event
        for the right button. Turn this on if you are providing an action for the
        right button double press event.
      default: false
      selector:
        boolean: {}
    button_up_double_press:
      name: (Optional) Expose up button double press event
      description: Choose whether or not to expose the virtual double press event
        for the up button. Turn this on if you are providing an action for the up
        button double press event.
      default: false
      selector:
        boolean: {}
    button_down_double_press:
      name: (Optional) Expose down button double press event
      description: Choose whether or not to expose the virtual double press event
        for the down button. Turn this on if you are providing an action for the down
        button double press event.
      default: false
      selector:
        boolean: {}
    button_center_double_press:
      name: (Optional) Expose center button double press event
      description: Choose whether or not to expose the virtual double press event
        for the center button. Turn this on if you are providing an action for the
        center button double press event.
      default: false
      selector:
        boolean: {}
    helper_double_press_delay:
      name: (Optional) Helper - Double Press delay
      description: Max delay between the first and the second button press for the
        double press event. Provide a value only if you are using a double press action.
        Increase this value if you notice that the double press action is not triggered
        properly.
      default: 500
      selector:
        number:
          min: 100.0
          max: 5000.0
          unit_of_measurement: milliseconds
          mode: box
          step: 10.0
    helper_debounce_delay:
      name: (Optional) Helper - Debounce delay
      description: Delay used for debouncing RAW controller events, by default set
        to 0. A value of 0 disables the debouncing feature. Increase this value if
        you notice custom actions or linked Hooks running multiple times when interacting
        with the device. When the controller needs to be debounced, usually a value
        of 100 is enough to remove all duplicate events.
      default: 0
      selector:
        number:
          min: 0.0
          max: 1000.0
          unit_of_measurement: milliseconds
          mode: box
          step: 10.0
variables:
  first_light_blub: !input 'first_light_blub'
  second_light_blub: !input 'second_light_blub'
  third_light_blub: !input 'third_light_blub'
  var_speed: !input 'speed'
  var_brightness: !input 'speed_brightness'
  integration: !input 'integration'
  button_left_long_loop: !input 'button_left_long_loop'
  button_left_long_max_loop_repeats: !input 'button_left_long_max_loop_repeats'
  button_left_double_press: !input 'button_left_double_press'
  button_right_long_loop: !input 'button_right_long_loop'
  button_right_long_max_loop_repeats: !input 'button_right_long_max_loop_repeats'
  button_right_double_press: !input 'button_right_double_press'
  button_up_long_loop: !input 'button_up_long_loop'
  button_up_long_max_loop_repeats: !input 'button_up_long_max_loop_repeats'
  button_up_double_press: !input 'button_up_double_press'
  button_down_long_loop: !input 'button_down_long_loop'
  button_down_long_max_loop_repeats: !input 'button_down_long_max_loop_repeats'
  button_down_double_press: !input 'button_down_double_press'
  button_center_double_press: !input 'button_center_double_press'
  helper_light_index: !input 'helper_light_index'
  helper_last_controller_event: !input 'helper_last_controller_event'
  helper_double_press_delay: !input 'helper_double_press_delay'
  helper_debounce_delay: !input 'helper_debounce_delay'
  integration_id: '{{ integration | lower }}'
  adjusted_double_press_delay: '{{ [helper_double_press_delay - helper_debounce_delay,
    100] | max }}'
  actions_mapping:
    deconz:
      button_left_short:
      - '4002'
      button_left_long:
      - '4001'
      button_left_release:
      - '4003'
      button_right_short:
      - '5002'
      button_right_long:
      - '5001'
      button_right_release:
      - '5003'
      button_up_short:
      - '2002'
      button_up_long:
      - '2001'
      button_up_release:
      - '2003'
      button_down_short:
      - '3002'
      button_down_long:
      - '3001'
      button_down_release:
      - '3003'
      button_center_short:
      - '1002'
      button_center_long:
      - '1001'
    zha:
      button_left_short:
      - press_257_13_0
      button_left_long:
      - hold_3329_0
      button_left_release:
      - release
      button_right_short:
      - press_256_13_0
      button_right_long:
      - hold_3328_0
      button_right_release:
      - release
      button_up_short:
      - step_with_on_off_0_43_5
      button_up_long:
      - move_with_on_off_0_83
      - move_with_on_off_0_84
      button_up_release:
      - stop
      button_down_short:
      - step_1_43_5
      button_down_long:
      - move_1_83
      - move_1_84
      button_down_release:
      - stop
      button_center_short:
      - toggle
      button_center_long:
      - press_2_0_0
    zigbee2mqtt:
      button_left_short:
      - arrow_left_click
      button_left_long:
      - arrow_left_hold
      button_left_release:
      - arrow_left_release
      button_right_short:
      - arrow_right_click
      button_right_long:
      - arrow_right_hold
      button_right_release:
      - arrow_right_release
      button_up_short:
      - brightness_up_click
      button_up_long:
      - brightness_up_hold
      button_up_release:
      - brightness_up_release
      button_down_short:
      - brightness_down_click
      button_down_long:
      - brightness_down_hold
      button_down_release:
      - brightness_down_release
      button_center_short:
      - toggle
      button_center_long:
      - toggle_hold
  button_left_short: '{{ actions_mapping[integration_id]["button_left_short"] }}'
  button_left_long: '{{ actions_mapping[integration_id]["button_left_long"] }}'
  button_left_release: '{{ actions_mapping[integration_id]["button_left_release"]
    }}'
  button_right_short: '{{ actions_mapping[integration_id]["button_right_short"] }}'
  button_right_long: '{{ actions_mapping[integration_id]["button_right_long"] }}'
  button_right_release: '{{ actions_mapping[integration_id]["button_right_release"]
    }}'
  button_up_short: '{{ actions_mapping[integration_id]["button_up_short"] }}'
  button_up_long: '{{ actions_mapping[integration_id]["button_up_long"] }}'
  button_up_release: '{{ actions_mapping[integration_id]["button_up_release"] }}'
  button_down_short: '{{ actions_mapping[integration_id]["button_down_short"] }}'
  button_down_long: '{{ actions_mapping[integration_id]["button_down_long"] }}'
  button_down_release: '{{ actions_mapping[integration_id]["button_down_release"]
    }}'
  button_center_short: '{{ actions_mapping[integration_id]["button_center_short"]
    }}'
  button_center_long: '{{ actions_mapping[integration_id]["button_center_long"] }}'
  integrations_with_prev_event_storage:
  - zha
  controller_entity: !input 'controller_entity'
  controller_device: !input 'controller_device'
  controller_id: '{% if integration_id=="zigbee2mqtt" %}{{controller_entity}}{% else
    %}{{controller_device}}{% endif %}'
mode: restart
max_exceeded: silent
trigger:
- platform: event
  event_type: state_changed
  event_data:
    entity_id: !input 'controller_entity'
- platform: event
  event_type:
  - deconz_event
  - zha_event
  event_data:
    device_id: !input 'controller_device'
condition:
- condition: and
  conditions:
  - '{%- set trigger_action -%} {%- if integration_id == "zigbee2mqtt" -%} {{ trigger.event.data.new_state.state
    }} {%- elif integration_id == "deconz" -%} {{ trigger.event.data.event }} {%-
    elif integration_id == "zha" -%} {{ trigger.event.data.command }}{{"_" if trigger.event.data.args|length
    > 0}}{{ trigger.event.data.args|join("_") }} {%- endif -%} {%- endset -%} {{ trigger_action
    not in ["","None"] }}'
  - '{{ integration_id != "zigbee2mqtt" or trigger.event.data.new_state.state != trigger.event.data.old_state.state
    }}'
action:
- delay:
    milliseconds: !input 'helper_debounce_delay'
- variables:
    trigger_action: '{%- if integration_id == "zigbee2mqtt" -%} {{ trigger.event.data.new_state.state
      }} {%- elif integration_id == "deconz" -%} {{ trigger.event.data.event }} {%-
      elif integration_id == "zha" -%} {{ trigger.event.data.command }}{{"_" if trigger.event.data.args|length
      > 0}}{{ trigger.event.data.args|join("_") }} {%- endif -%}'
    trigger_delta: '{{ (as_timestamp(now()) - as_timestamp((states(helper_last_controller_event)
      | from_json).last_triggered if helper_last_controller_event is not none and
      (states(helper_last_controller_event) | regex_match("^\{(\".*\": \".*\"(, )?)*\}$"))
      else "1970-01-01 00:00:00")) * 1000 }}'
    last_controller_event: '{{ (states(helper_last_controller_event) | from_json).trigger_action
      if helper_last_controller_event is not none and (states(helper_last_controller_event)
      | regex_match("^\{(\".*\": \".*\"(, )?)*\}$")) else "" }}'
- service: input_text.set_value
  data:
    entity_id: !input 'helper_last_controller_event'
    value: '{{ {"trigger_action":trigger_action,"last_triggered":now()|string} | to_json
      }}'
- choose:
  - conditions: '{{ trigger_action | string in button_left_short }}'
    sequence:
    - choose:
      - conditions: '{{ button_left_double_press }}'
        sequence:
        - choose:
          - conditions: '{{ trigger_action | string in states(helper_last_controller_event)
              and trigger_delta | int <= helper_double_press_delay | int }}'
            sequence:
            - service: input_text.set_value
              data:
                entity_id: !input 'helper_last_controller_event'
                value: '{{ {"trigger_action":"double_press","last_triggered":now()
                  | string} | to_json }}'
            - event: ahb_controller_event
              event_data:
                controller: '{{ controller_id }}'
                action: button_left_double
            - service: input_number.set_value
              data:
                entity_id: !input 'helper_light_index'
                value: >
                 {% if (states(helper_light_index) | int) >= 2 %}
                 {{ 0 | int }}
                 {% else %}
                 {{ (states(helper_light_index) | int) + 1 | int }}
                 {% endif %}
            - choose:
              - conditions: []
                sequence: !input 'action_button_left_double'
          default:
          - delay:
              milliseconds: '{{ adjusted_double_press_delay }}'
          - event: ahb_controller_event
            event_data:
              controller: '{{ controller_id }}'
              action: button_left_short
          - choose:
            - conditions: []
              sequence: !input 'action_button_left_short'
      default:
      - event: ahb_controller_event
        event_data:
          controller: '{{ controller_id }}'
          action: button_left_short
      - choose:
        - conditions: []
          sequence: !input 'action_button_left_short'
  - conditions: '{{ trigger_action | string in button_left_long }}'
    sequence:
    - event: ahb_controller_event
      event_data:
        controller: '{{ controller_id }}'
        action: button_left_long
    - choose:
      - conditions: '{{ button_left_long_loop }}'
        sequence:
        - repeat:
            while: '{{ repeat.index < button_left_long_max_loop_repeats | int }}'
            sequence: !input 'action_button_left_long'
      default: !input 'action_button_left_long'
  - conditions:
    - '{{ trigger_action | string in button_left_release }}'
    - '{{ not integration_id in integrations_with_prev_event_storage or last_controller_event
      | string in button_left_long }}'
    sequence:
    - event: ahb_controller_event
      event_data:
        controller: '{{ controller_id }}'
        action: button_left_release
    - choose:
      - conditions: []
        sequence: !input 'action_button_left_release'
  - conditions: '{{ trigger_action | string in button_right_short }}'
    sequence:
    - choose:
      - conditions: '{{ button_right_double_press }}'
        sequence:
        - choose:
          - conditions: '{{ trigger_action | string in states(helper_last_controller_event)
              and trigger_delta | int <= helper_double_press_delay | int }}'
            sequence:
            - service: input_text.set_value
              data:
                entity_id: !input 'helper_last_controller_event'
                value: '{{ {"trigger_action":"double_press","last_triggered":now()
                  | string} | to_json }}'
            - service: input_number.set_value
              data:
                entity_id: !input 'helper_light_index'
                value: >
                 {% if (states(helper_light_index) | int) == 0 %}
                 {{ 2 | int }}
                 {% else %}
                 {{ (states(helper_light_index) | int) - 1 | int }}
                 {% endif %}
            - event: ahb_controller_event
              event_data:
                controller: '{{ controller_id }}'
                action: button_right_double
            - choose:
              - conditions: []
                sequence: !input 'action_button_right_double'
          default:
          - delay:
              milliseconds: '{{ adjusted_double_press_delay }}'
          - event: ahb_controller_event
            event_data:
              controller: '{{ controller_id }}'
              action: button_right_short
          - choose:
            - conditions: []
              sequence: !input 'action_button_right_short'
      default:
      - event: ahb_controller_event
        event_data:
          controller: '{{ controller_id }}'
          action: button_right_short
      - choose:
        - conditions: []
          sequence: !input 'action_button_right_short'
  - conditions: '{{ trigger_action | string in button_right_long }}'
    sequence:
    - event: ahb_controller_event
      event_data:
        controller: '{{ controller_id }}'
        action: button_right_long
    - choose:
      - conditions: '{{ button_right_long_loop }}'
        sequence:
        - repeat:
            while: '{{ repeat.index < button_right_long_max_loop_repeats | int }}'
            sequence: !input 'action_button_right_long'
      default: !input 'action_button_right_long'
  - conditions:
    - '{{ trigger_action | string in button_right_release }}'
    - '{{ not integration_id in integrations_with_prev_event_storage or last_controller_event
      | string in button_right_long }}'
    sequence:
    - event: ahb_controller_event
      event_data:
        controller: '{{ controller_id }}'
        action: button_right_release
    - choose:
      - conditions: []
        sequence: !input 'action_button_right_release'
  - conditions: '{{ trigger_action | string in button_up_short }}'
    sequence:
    - choose:
      - conditions: '{{ button_up_double_press }}'
        sequence:
        - choose:
          - conditions: '{{ trigger_action | string in states(helper_last_controller_event)
              and trigger_delta | int <= helper_double_press_delay | int }}'
            sequence:
            - service: input_text.set_value
              data:
                entity_id: !input 'helper_last_controller_event'
                value: '{{ {"trigger_action":"double_press","last_triggered":now()
                  | string} | to_json }}'
            - event: ahb_controller_event
              event_data:
                controller: '{{ controller_id }}'
                action: button_up_double
            - choose:
              - conditions: []
                sequence: !input 'action_button_up_double'
          default:
          - delay:
              milliseconds: '{{ adjusted_double_press_delay }}'
          - event: ahb_controller_event
            event_data:
              controller: '{{ controller_id }}'
              action: button_up_short
          - choose:
            - conditions: []
              sequence: !input 'action_button_up_short'
      default:
      - event: ahb_controller_event
        event_data:
          controller: '{{ controller_id }}'
          action: button_up_short
      - choose:
        - conditions: []
          sequence: !input 'action_button_up_short'
  - conditions: '{{ trigger_action | string in button_up_long }}'
    sequence:
    - event: ahb_controller_event
      event_data:
        controller: '{{ controller_id }}'
        action: button_up_long
    - choose:
      - conditions: '{{ button_up_long_loop }}'
        sequence:
        - repeat:
            while: '{{ repeat.index < button_up_long_max_loop_repeats | int }}'
            sequence: !input 'action_button_up_long'
      default: !input 'action_button_up_long'
  - conditions:
    - '{{ trigger_action | string in button_up_release }}'
    - '{{ not integration_id in integrations_with_prev_event_storage or last_controller_event
      | string in button_up_long }}'
    sequence:
    - event: ahb_controller_event
      event_data:
        controller: '{{ controller_id }}'
        action: button_up_release
    - choose:
      - conditions: []
        sequence: !input 'action_button_up_release'
  - conditions: '{{ trigger_action | string in button_down_short }}'
    sequence:
    - choose:
      - conditions: '{{ button_down_double_press }}'
        sequence:
        - choose:
          - conditions: '{{ trigger_action | string in states(helper_last_controller_event)
              and trigger_delta | int <= helper_double_press_delay | int }}'
            sequence:
            - service: input_text.set_value
              data:
                entity_id: !input 'helper_last_controller_event'
                value: '{{ {"trigger_action":"double_press","last_triggered":now()
                  | string} | to_json }}'
            - event: ahb_controller_event
              event_data:
                controller: '{{ controller_id }}'
                action: button_down_double
            - choose:
              - conditions: []
                sequence: !input 'action_button_down_double'
          default:
          - delay:
              milliseconds: '{{ adjusted_double_press_delay }}'
          - event: ahb_controller_event
            event_data:
              controller: '{{ controller_id }}'
              action: button_down_short
          - choose:
            - conditions: []
              sequence: !input 'action_button_down_short'
      default:
      - event: ahb_controller_event
        event_data:
          controller: '{{ controller_id }}'
          action: button_down_short
      - choose:
        - conditions: []
          sequence: !input 'action_button_down_short'
  - conditions: '{{ trigger_action | string in button_down_long }}'
    sequence:
    - event: ahb_controller_event
      event_data:
        controller: '{{ controller_id }}'
        action: button_down_long
    - choose:
      - conditions: '{{ button_down_long_loop }}'
        sequence:
        - repeat:
            while: '{{ repeat.index < button_down_long_max_loop_repeats | int }}'
            sequence: !input 'action_button_down_long'
      default: !input 'action_button_down_long'
  - conditions:
    - '{{ trigger_action | string in button_down_release }}'
    - '{{ not integration_id in integrations_with_prev_event_storage or last_controller_event
      | string in button_down_long }}'
    sequence:
    - event: ahb_controller_event
      event_data:
        controller: '{{ controller_id }}'
        action: button_down_release
    - choose:
      - conditions: []
        sequence: !input 'action_button_down_release'
  - conditions: '{{ trigger_action | string in button_center_short }}'
    sequence:
    - choose:
      - conditions: '{{ button_center_double_press }}'
        sequence:
        - choose:
          - conditions: '{{ trigger_action | string in states(helper_last_controller_event)
              and trigger_delta | int <= helper_double_press_delay | int }}'
            sequence:
            - service: input_text.set_value
              data:
                entity_id: !input 'helper_last_controller_event'
                value: '{{ {"trigger_action":"double_press","last_triggered":now()
                  | string} | to_json }}'
            - service: input_number.set_value
              data:
                entity_id: !input 'helper_light_index'
                value: >
                 {% if (states(helper_light_index) | int) >= 2 %}
                 {{ 0 | int }}
                 {% else %}
                 {{ (states(helper_light_index) | int) + 1 | int }}
                 {% endif %}
            - event: ahb_controller_event
              event_data:
                controller: '{{ controller_id }}'
                action: button_center_double
            - choose:
              - conditions: []
                sequence: !input 'action_button_center_double'
          default:
          - delay:
              milliseconds: '{{ adjusted_double_press_delay }}'
          - event: ahb_controller_event
            event_data:
              controller: '{{ controller_id }}'
              action: button_center_short
          - choose:
            - conditions: []
              sequence: !input 'action_button_center_short'
      default:
      - event: ahb_controller_event
        event_data:
          controller: '{{ controller_id }}'
          action: button_center_short
      - choose:
        - conditions: []
          sequence: !input 'action_button_center_short'
  - conditions: '{{ trigger_action | string in button_center_long }}'
    sequence:
    - event: ahb_controller_event
      event_data:
        controller: '{{ controller_id }}'
        action: button_center_long
    - choose:
      - conditions: []
        sequence: !input 'action_button_center_long'

This is the blue print with the logic:

alias: Wohnzimmer Blink Remote
description: ''
use_blueprint:
  path: jelflein/test.yaml
  input:
    integration: Zigbee2MQTT
    controller_device: 11827f93d116e237483c0542b6ad519e
    controller_entity: sensor.0x842e14fffeba468b_action
    helper_last_controller_event: input_text.wohnzimmer_text
    helper_light_index: input_number.wohnzimmer_index
    button_center_double_press: true
    action_button_center_double:
      - choose:
          - conditions:
              - condition: numeric_state
                entity_id: input_number.wohnzimmer_index
                above: '-1'
                below: '1'
            sequence:
              - type: toggle
                device_id: e3e986c4e25ca5cbe154c336ff36f4c5
                entity_id: light.0x7cb03eaa0a035fc7
                domain: light
              - delay:
                  hours: 0
                  minutes: 0
                  seconds: 0
                  milliseconds: 500
              - type: toggle
                device_id: e3e986c4e25ca5cbe154c336ff36f4c5
                entity_id: light.0x7cb03eaa0a035fc7
                domain: light
          - conditions:
              - condition: numeric_state
                entity_id: input_number.wohnzimmer_index
                above: '1'
                below: '3'
            sequence:
              - type: toggle
                device_id: 93463cf0b6638613f866e44d21496458
                entity_id: light.0x84fd27fffee07246
                domain: light
              - delay:
                  hours: 0
                  minutes: 0
                  seconds: 0
                  milliseconds: 500
              - type: toggle
                device_id: 93463cf0b6638613f866e44d21496458
                entity_id: light.0x84fd27fffee07246
                domain: light
          - conditions:
              - condition: numeric_state
                entity_id: input_number.wohnzimmer_index
                above: '0'
                below: '2'
            sequence:
              - type: toggle
                device_id: 7d00719270f103b868a3b94869431637
                entity_id: light.tasmota
                domain: light
              - delay:
                  hours: 0
                  minutes: 0
                  seconds: 0
                  milliseconds: 500
              - type: toggle
                device_id: 7d00719270f103b868a3b94869431637
                entity_id: light.tasmota
                domain: light
        default: []
    action_button_left_short:
      - choose:
          - conditions:
              - condition: numeric_state
                entity_id: input_number.wohnzimmer_index
                above: '1'
                below: '3'
            sequence:
              - service: light.turn_on
                target:
                  entity_id: light.0x84fd27fffee07246
                data:
                  color_temp: >-
                    {{ state_attr('light.0x84fd27fffee07246', 'color_temp')|int
                    - 10}}
                  transition: '{{ (var_speed / 1000)|float }}'
          - conditions:
              - condition: numeric_state
                entity_id: input_number.wohnzimmer_index
                above: '0'
                below: '2'
            sequence:
              - service: light.turn_on
                data:
                  color_temp: '{{ state_attr(''light.tasmota'', ''color_temp'')|int - 10}}'
                  transition: '{{ (var_speed / 1000)|float }}'
                target:
                  entity_id: light.tasmota
        default: []
    current_light_blub: light.0x2c1165fffee98640
    first_light_blub:
      '0': l
      '1': i
      '2': g
      '3': h
      '4': t
      '5': .
      '6': '0'
      '7': x
      '8': '7'
      '9': c
      '10': b
      '11': '0'
      '12': '3'
      '13': e
      '14': a
      '15': a
      '16': '0'
      '17': a
      '18': '0'
      '19': '3'
      '20': '5'
      '21': f
      '22': c
      '23': '7'
      entity_id: light.0x7cb03eaa0a035fc7
    second_light_blub:
      '0': l
      '1': i
      '2': g
      '3': h
      '4': t
      '5': .
      '6': t
      '7': a
      '8': s
      '9': m
      '10': o
      '11': t
      '12': a
      entity_id: light.tasmota
    thrid_light_blub: light.0x7cb03eaa0a035fc7
    action_button_center_short:
      - choose:
          - conditions:
              - condition: numeric_state
                entity_id: input_number.wohnzimmer_index
                above: '-1'
                below: '1'
            sequence:
              - type: toggle
                device_id: e3e986c4e25ca5cbe154c336ff36f4c5
                entity_id: light.0x7cb03eaa0a035fc7
                domain: light
          - conditions:
              - condition: numeric_state
                entity_id: input_number.wohnzimmer_index
                above: '1'
                below: '3'
            sequence:
              - type: toggle
                device_id: 93463cf0b6638613f866e44d21496458
                entity_id: light.0x84fd27fffee07246
                domain: light
          - conditions:
              - condition: numeric_state
                entity_id: input_number.wohnzimmer_index
                above: '0'
                below: '2'
            sequence:
              - type: toggle
                device_id: 7d00719270f103b868a3b94869431637
                entity_id: light.tasmota
                domain: light
        default: []
    action_button_up_short:
      - choose:
          - conditions:
              - condition: numeric_state
                entity_id: input_number.wohnzimmer_index
                above: '-1'
                below: '1'
            sequence:
              - service: light.turn_on
                data:
                  brightness_step_pct: 20
                  transition: '{{ (var_brightness / 1000)|float }}'
                target:
                  entity_id: light.0x7cb03eaa0a035fc7
          - conditions:
              - condition: numeric_state
                entity_id: input_number.wohnzimmer_index
                above: '1'
                below: '3'
            sequence:
              - service: light.turn_on
                data:
                  brightness_step_pct: 20
                  transition: '{{ (var_brightness / 1000)|float }}'
                target:
                  entity_id: light.0x84fd27fffee07246
          - conditions:
              - condition: numeric_state
                entity_id: input_number.wohnzimmer_index
                above: '0'
                below: '2'
            sequence:
              - service: light.turn_on
                data:
                  brightness_step_pct: 20
                  transition: '{{ (var_brightness / 1000)|float }}'
                target:
                  entity_id: light.tasmota
        default: []
    action_button_down_short:
      - choose:
          - conditions:
              - condition: numeric_state
                entity_id: input_number.wohnzimmer_index
                above: '-1'
                below: '1'
            sequence:
              - service: light.turn_on
                data:
                  brightness_step_pct: -10
                  transition: '{{ (var_brightness / 1000)|float }}'
                target:
                  entity_id: light.0x7cb03eaa0a035fc7
          - conditions:
              - condition: numeric_state
                entity_id: input_number.wohnzimmer_index
                above: '1'
                below: '3'
            sequence:
              - service: light.turn_on
                data:
                  brightness_step_pct: -10
                  transition: '{{ (var_brightness / 1000)|float }}'
                target:
                  entity_id: light.0x84fd27fffee07246
          - conditions:
              - condition: numeric_state
                entity_id: input_number.wohnzimmer_index
                above: '0'
                below: '2'
            sequence:
              - service: light.turn_on
                data:
                  brightness_step_pct: -10
                  transition: '{{ (var_brightness / 1000)|float }}'
                target:
                  entity_id: light.tasmota
        default: []
    action_button_up_long:
      - choose:
          - conditions:
              - condition: numeric_state
                entity_id: input_number.wohnzimmer_index
                above: '-1'
                below: '1'
            sequence:
              - repeat:
                  while: []
                  sequence:
                    - service: light.turn_on
                      data:
                        brightness_step_pct: 20
                        transition: '{{ (var_brightness / 1000)|float }}'
                      target:
                        entity_id: light.0x7cb03eaa0a035fc7
                    - delay:
                        hours: 0
                        minutes: 0
                        seconds: 0
                        milliseconds: 300
          - conditions:
              - condition: numeric_state
                entity_id: input_number.wohnzimmer_index
                above: '1'
                below: '3'
            sequence:
              - repeat:
                  while: []
                  sequence:
                    - service: light.turn_on
                      data:
                        brightness_step_pct: 20
                        transition: '{{ (var_brightness / 1000)|float }}'
                      target:
                        entity_id: light.0x84fd27fffee07246
                    - delay:
                        hours: 0
                        minutes: 0
                        seconds: 0
                        milliseconds: 300
          - conditions:
              - condition: numeric_state
                entity_id: input_number.wohnzimmer_index
                above: '0'
                below: '2'
            sequence:
              - repeat:
                  while: []
                  sequence:
                    - service: light.turn_on
                      data:
                        brightness_step_pct: 20
                        transition: '{{ (var_brightness / 1000)|float }}'
                      target:
                        entity_id: light.tasmota
                    - delay:
                        hours: 0
                        minutes: 0
                        seconds: 0
                        milliseconds: 300
        default: []
    action_button_down_long:
      - choose:
          - conditions:
              - condition: numeric_state
                entity_id: input_number.wohnzimmer_index
                above: '-1'
                below: '1'
            sequence:
              - repeat:
                  while: []
                  sequence:
                    - service: light.turn_on
                      data:
                        brightness_step_pct: -10
                        transition: '{{ (var_brightness / 1000)|float }}'
                      target:
                        entity_id: light.0x7cb03eaa0a035fc7
                    - delay:
                        hours: 0
                        minutes: 0
                        seconds: 0
                        milliseconds: 300
          - conditions:
              - condition: numeric_state
                entity_id: input_number.wohnzimmer_index
                above: '1'
                below: '3'
            sequence:
              - repeat:
                  while: []
                  sequence:
                    - service: light.turn_on
                      data:
                        brightness_step_pct: -10
                        transition: '{{ (var_brightness / 1000)|float }}'
                      target:
                        entity_id: light.0x84fd27fffee07246
                    - delay:
                        hours: 0
                        minutes: 0
                        seconds: 0
                        milliseconds: 300
          - conditions:
              - condition: numeric_state
                entity_id: input_number.wohnzimmer_index
                above: '0'
                below: '2'
            sequence:
              - repeat:
                  while: []
                  sequence:
                    - service: light.turn_on
                      data:
                        brightness_step_pct: -10
                        transition: '{{ (var_brightness / 1000)|float }}'
                      target:
                        entity_id: light.tasmota
                    - delay:
                        hours: 0
                        minutes: 0
                        seconds: 0
                        milliseconds: 300
        default: []
    button_down_long_loop: true
    button_up_long_loop: true
    button_down_long_max_loop_repeats: 1847
    action_button_right_short:
      - choose:
          - conditions:
              - condition: numeric_state
                entity_id: input_number.wohnzimmer_index
                above: '1'
                below: '3'
            sequence:
              - service: light.turn_on
                target:
                  entity_id: light.0x84fd27fffee07246
                data:
                  color_temp: >-
                    {{ state_attr('light.0x84fd27fffee07246', 'color_temp')|int
                    + 10}}
                  transition: '{{ (var_speed / 1000)|float }}'
          - conditions:
              - condition: numeric_state
                entity_id: input_number.wohnzimmer_index
                above: '0'
                below: '2'
            sequence:
              - service: light.turn_on
                data:
                  color_temp: '{{ state_attr(''light.tasmota'', ''color_temp'')|int + 10}}'
                  transition: '{{ (var_speed / 1000)|float }}'
                target:
                  entity_id: light.tasmota
        default: []
    third_light_blub:
      '0': l
      '1': i
      '2': g
      '3': h
      '4': t
      '5': .
      '6': '0'
      '7': x
      '8': '8'
      '9': '4'
      '10': f
      '11': d
      '12': '2'
      '13': '7'
      '14': f
      '15': f
      '16': f
      '17': e
      '18': e
      '19': '0'
      '20': '7'
      '21': '2'
      '22': '4'
      '23': '6'
      entity_id: light.0x84fd27fffee07246
    action_button_right_long:
      - choose:
          - conditions:
              - condition: numeric_state
                entity_id: input_number.wohnzimmer_index
                above: '1'
                below: '3'
            sequence:
              - repeat:
                  while: []
                  sequence:
                    - service: light.turn_on
                      data:
                        color_temp: >-
                          {{ state_attr('light.0x84fd27fffee07246',
                          'color_temp')|int + 10}}
                        transition: '{{ (var_speed / 1000)|float }}'
                      target:
                        entity_id: light.0x84fd27fffee07246
                    - delay:
                        hours: 0
                        minutes: 0
                        seconds: 0
                        milliseconds: 300
          - conditions:
              - condition: numeric_state
                entity_id: input_number.wohnzimmer_index
                above: '0'
                below: '2'
            sequence:
              - repeat:
                  while: []
                  sequence:
                    - service: light.turn_on
                      data:
                        color_temp: >-
                          {{ state_attr('light.tasmota', 'color_temp')|int +
                          10}}
                        transition: '{{ (var_speed / 1000)|float }}'
                      target:
                        entity_id: light.tasmota
                    - delay:
                        hours: 0
                        minutes: 0
                        seconds: 0
                        milliseconds: 300
        default: []
    action_button_left_long:
      - choose:
          - conditions:
              - condition: numeric_state
                entity_id: input_number.wohnzimmer_index
                above: '1'
                below: '3'
            sequence:
              - repeat:
                  while: []
                  sequence:
                    - service: light.turn_on
                      data:
                        color_temp: >-
                          {{ state_attr('light.0x84fd27fffee07246',
                          'color_temp')|int - 10}}
                        transition: '{{ (var_speed / 1000)|float }}'
                      target:
                        entity_id: light.0x84fd27fffee07246
                    - delay:
                        hours: 0
                        minutes: 0
                        seconds: 0
                        milliseconds: 300
          - conditions:
              - condition: numeric_state
                entity_id: input_number.wohnzimmer_index
                above: '0'
                below: '2'
            sequence:
              - repeat:
                  while: []
                  sequence:
                    - service: light.turn_on
                      data:
                        color_temp: >-
                          {{ state_attr('light.tasmota', 'color_temp')|int -
                          10}}
                        transition: '{{ (var_speed / 1000)|float }}'
                      target:
                        entity_id: light.tasmota
                    - delay:
                        hours: 0
                        minutes: 0
                        seconds: 0
                        milliseconds: 300
        default: []
    action_button_center_long: []
    button_left_double_press: true
    button_right_double_press: true
    action_button_down_double: []
    action_button_right_double:
      - choose:
          - conditions:
              - condition: numeric_state
                entity_id: input_number.wohnzimmer_index
                above: '-1'
                below: '1'
            sequence:
              - type: toggle
                device_id: e3e986c4e25ca5cbe154c336ff36f4c5
                entity_id: light.0x7cb03eaa0a035fc7
                domain: light
              - delay:
                  hours: 0
                  minutes: 0
                  seconds: 0
                  milliseconds: 500
              - type: toggle
                device_id: e3e986c4e25ca5cbe154c336ff36f4c5
                entity_id: light.0x7cb03eaa0a035fc7
                domain: light
          - conditions:
              - condition: numeric_state
                entity_id: input_number.wohnzimmer_index
                above: '1'
                below: '3'
            sequence:
              - type: toggle
                device_id: 93463cf0b6638613f866e44d21496458
                entity_id: light.0x84fd27fffee07246
                domain: light
              - delay:
                  hours: 0
                  minutes: 0
                  seconds: 0
                  milliseconds: 500
              - type: toggle
                device_id: 93463cf0b6638613f866e44d21496458
                entity_id: light.0x84fd27fffee07246
                domain: light
          - conditions:
              - condition: numeric_state
                entity_id: input_number.wohnzimmer_index
                above: '0'
                below: '2'
            sequence:
              - type: toggle
                device_id: 7d00719270f103b868a3b94869431637
                entity_id: light.tasmota
                domain: light
              - delay:
                  hours: 0
                  minutes: 0
                  seconds: 0
                  milliseconds: 500
              - type: toggle
                device_id: 7d00719270f103b868a3b94869431637
                entity_id: light.tasmota
                domain: light
        default: []
    action_button_up_double:
      - choose:
          - conditions:
              - condition: numeric_state
                entity_id: input_number.wohnzimmer_index
                above: '-1'
                below: '1'
            sequence:
              - type: toggle
                device_id: e3e986c4e25ca5cbe154c336ff36f4c5
                entity_id: light.0x7cb03eaa0a035fc7
                domain: light
              - delay:
                  hours: 0
                  minutes: 0
                  seconds: 0
                  milliseconds: 500
              - type: toggle
                device_id: e3e986c4e25ca5cbe154c336ff36f4c5
                entity_id: light.0x7cb03eaa0a035fc7
                domain: light
          - conditions:
              - condition: numeric_state
                entity_id: input_number.wohnzimmer_index
                above: '1'
                below: '3'
            sequence:
              - type: toggle
                device_id: 93463cf0b6638613f866e44d21496458
                entity_id: light.0x84fd27fffee07246
                domain: light
              - delay:
                  hours: 0
                  minutes: 0
                  seconds: 0
                  milliseconds: 500
              - type: toggle
                device_id: 93463cf0b6638613f866e44d21496458
                entity_id: light.0x84fd27fffee07246
                domain: light
          - conditions:
              - condition: numeric_state
                entity_id: input_number.wohnzimmer_index
                above: '0'
                below: '2'
            sequence:
              - type: toggle
                device_id: 7d00719270f103b868a3b94869431637
                entity_id: light.tasmota
                domain: light
              - delay:
                  hours: 0
                  minutes: 0
                  seconds: 0
                  milliseconds: 500
              - type: toggle
                device_id: 7d00719270f103b868a3b94869431637
                entity_id: light.tasmota
                domain: light
        default: []
    action_button_left_double:
      - choose:
          - conditions:
              - condition: numeric_state
                entity_id: input_number.wohnzimmer_index
                above: '-1'
                below: '1'
            sequence:
              - type: toggle
                device_id: e3e986c4e25ca5cbe154c336ff36f4c5
                entity_id: light.0x7cb03eaa0a035fc7
                domain: light
              - delay:
                  hours: 0
                  minutes: 0
                  seconds: 0
                  milliseconds: 500
              - type: toggle
                device_id: e3e986c4e25ca5cbe154c336ff36f4c5
                entity_id: light.0x7cb03eaa0a035fc7
                domain: light
          - conditions:
              - condition: numeric_state
                entity_id: input_number.wohnzimmer_index
                above: '1'
                below: '3'
            sequence:
              - type: toggle
                device_id: 93463cf0b6638613f866e44d21496458
                entity_id: light.0x84fd27fffee07246
                domain: light
              - delay:
                  hours: 0
                  minutes: 0
                  seconds: 0
                  milliseconds: 500
              - type: toggle
                device_id: 93463cf0b6638613f866e44d21496458
                entity_id: light.0x84fd27fffee07246
                domain: light
          - conditions:
              - condition: numeric_state
                entity_id: input_number.wohnzimmer_index
                above: '0'
                below: '2'
            sequence:
              - type: toggle
                device_id: 7d00719270f103b868a3b94869431637
                entity_id: light.tasmota
                domain: light
              - delay:
                  hours: 0
                  minutes: 0
                  seconds: 0
                  milliseconds: 500
              - type: toggle
                device_id: 7d00719270f103b868a3b94869431637
                entity_id: light.tasmota
                domain: light
        default: []
    button_up_double_press: true

Hello,
I am sorry, could you explain more thoroughly what exactly problem you are trying to solve?
Thank you.