blueprint: name: Multi-Press Action description: Trigger different actions based on how many times an entity changes state rapidly domain: automation input: trigger_entity: name: Trigger Entity description: The entity to monitor for state changes selector: entity: {} time_window: name: Time Window description: Maximum time between presses (in seconds) default: 1.5 selector: number: min: 0.5 max: 5 step: 0.1 unit_of_measurement: seconds immediate_single_press: name: Execute Single Press Immediately description: If enabled, single press action runs immediately without waiting. If disabled, waits to see if it's a multi-press before acting. default: true selector: boolean: {} single_press_action: name: Single Press Action description: Action to run on single press default: [] selector: action: {} double_press_action: name: Double Press Action description: Action to run on double press default: [] selector: action: {} triple_press_action: name: Triple Press Action description: Action to run on triple press default: [] selector: action: {} quad_press_action: name: Quad Press Action description: Action to run on quad press (4 times) default: [] selector: action: {} mode: single max_exceeded: silent trigger: - platform: state entity_id: !input trigger_entity action: - variables: press_count: 1 time_window: !input time_window immediate: !input immediate_single_press # Execute single press immediately if enabled - if: - condition: template value_template: "{{ immediate }}" then: - choose: - conditions: [] sequence: !input single_press_action # Wait for additional presses - repeat: while: - condition: template value_template: "{{ press_count < 4 }}" sequence: - wait_for_trigger: - platform: state entity_id: !input trigger_entity timeout: seconds: "{{ time_window }}" continue_on_timeout: true - if: - condition: template value_template: "{{ wait.trigger is not none }}" then: - variables: press_count: "{{ press_count + 1 }}" # Execute action based on final press count - choose: # Only run single press if NOT immediate (delayed mode) - conditions: - condition: template value_template: "{{ press_count == 1 and not immediate }}" sequence: !input single_press_action - conditions: - condition: template value_template: "{{ press_count == 2 }}" sequence: !input double_press_action - conditions: - condition: template value_template: "{{ press_count == 3 }}" sequence: !input triple_press_action - conditions: - condition: template value_template: "{{ press_count == 4 }}" sequence: !input quad_press_action