812 lines
30 KiB
YAML
812 lines
30 KiB
YAML
blueprint:
|
||
name: Controller - IKEA E1524/E1810 TRÅDFRI Wireless 5-Button Remote
|
||
description: '# Controller - IKEA E1524/E1810 TRÅDFRI Wireless 5-Button Remote
|
||
|
||
|
||
Controller automation for executing any kind of action triggered by the provided
|
||
IKEA E1524/E1810 TRÅDFRI Wireless 5-Button Remote. Allows to optionally loop an
|
||
action on a button long press.
|
||
|
||
Supports deCONZ, ZHA, Zigbee2MQTT.
|
||
|
||
|
||
Automations created with this blueprint can be connected with one or more [Hooks](https://epmatt.github.io/awesome-ha-blueprints/docs/blueprints/hooks)
|
||
supported by this controller.
|
||
|
||
Hooks allow to easily create controller-based automations for interacting with
|
||
media players, lights, covers and more.
|
||
|
||
See the list of [Hooks available for this controller](https://epmatt.github.io/awesome-ha-blueprints/docs/blueprints/controllers/ikea_e1524_e1810#available-hooks)
|
||
for additional details.
|
||
|
||
|
||
📕 Full documentation regarding this blueprint is available [here](https://epmatt.github.io/awesome-ha-blueprints/docs/blueprints/controllers/ikea_e1524_e1810).
|
||
|
||
|
||
🚀 This blueprint is part of the **[Awesome HA Blueprints](https://epmatt.github.io/awesome-ha-blueprints)
|
||
project**.
|
||
|
||
|
||
ℹ️ Version 2021.10.26
|
||
|
||
'
|
||
source_url: https://github.com/EPMatt/awesome-ha-blueprints/blob/main/blueprints/controllers/ikea_e1524_e1810/ikea_e1524_e1810.yaml
|
||
domain: automation
|
||
input:
|
||
integration:
|
||
name: (Required) Integration
|
||
description: Integration used for connecting the remote with Home Assistant.
|
||
Select one of the available values.
|
||
selector:
|
||
select:
|
||
options:
|
||
- deCONZ
|
||
- ZHA
|
||
- Zigbee2MQTT
|
||
custom_value: false
|
||
multiple: false
|
||
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
|
||
description: The action sensor of the controller to use for the automation.
|
||
Choose a value only if the remote is integrated with Zigbee2MQTT.
|
||
default: ''
|
||
selector:
|
||
entity:
|
||
domain: sensor
|
||
multiple: false
|
||
helper_last_controller_event:
|
||
name: (Required) Helper - Last Controller Event
|
||
description: Input Text used to store the last event fired by the controller.
|
||
You will need to manually create a text input entity for this, please read
|
||
the blueprint Additional Notes for more info.
|
||
default: ''
|
||
selector:
|
||
entity:
|
||
domain: input_text
|
||
multiple: false
|
||
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:
|
||
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_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
|
||
- 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 }}'
|
||
- 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 }}'
|
||
- 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'
|