feat(somrig): Add IKEA Somrig remote to blueprint (#1)
This commit is contained in:
555
ikea_E2201-E2213_ZHA-Z2M_control-anything.yaml
Normal file
555
ikea_E2201-E2213_ZHA-Z2M_control-anything.yaml
Normal file
@@ -0,0 +1,555 @@
|
||||
blueprint:
|
||||
name: IKEA Rodret (E2201) or IKEA Somrig (E2213) Controls (ZHA/Z2M)
|
||||
description: >
|
||||
## Control anything with **IKEA RODRET** or **IKEA SOMRIG** remotes
|
||||
|
||||
|
||||
Only for use with [ZHA](https://www.home-assistant.io/integrations/zha/)
|
||||
or Zigbee2MQTT (cf [MQTT](https://www.home-assistant.io/integrations/mqtt)
|
||||
+ [Z2M addon](https://www.zigbee2mqtt.io/guide/installation/03_ha_addon.html)).
|
||||
|
||||
|
||||
Available controls:
|
||||
|
||||
- Single press **on/off** (Rodret) **1 dot/2 dots** (Somrig)
|
||||
|
||||
- Double press **on/off** (Rodret, _Optional_) **1 dot/2 dots** (Somrig)
|
||||
|
||||
- Hold **on/off** (Rodret) **1 dot/2 dots** (Somrig).
|
||||
Actions will be executed every **Helper - Hold delay**, but maximum **Helper - Max number of loops** times.
|
||||
domain: automation
|
||||
input:
|
||||
remote_device:
|
||||
name: (ZHA) Remote
|
||||
description: >
|
||||
**_Choose if you are using ZHA._** IKEA remote to use.
|
||||
default: []
|
||||
selector:
|
||||
device:
|
||||
filter:
|
||||
- integration: zha
|
||||
manufacturer: IKEA of Sweden
|
||||
model: RODRET Dimmer
|
||||
- integration: zha
|
||||
manufacturer: IKEA of Sweden
|
||||
model: SOMRIG shortcut button
|
||||
multiple: false
|
||||
remote_name:
|
||||
name: (Zigbee2MQTT) Remote Name
|
||||
description: >
|
||||
**_Choose if you are using Zigbee2MQTT._** The name of the controller (e.g. IKEA Rodret).
|
||||
default: []
|
||||
base_topic:
|
||||
name: (Zigbee2MQTT) Base mqtt topic
|
||||
description: The topic configured in [Z2M addon](https://www.zigbee2mqtt.io/guide/usage/mqtt_topics_and_messages.html).
|
||||
default: zigbee2mqtt
|
||||
on_press_action:
|
||||
name: Single press action (on / 1 dot)
|
||||
description: Choose action(s) to run when **on** (Rodret) or **1 dot** (Somrig) button is **pressed**.
|
||||
default: []
|
||||
selector:
|
||||
action: {}
|
||||
off_press_action:
|
||||
name: Single press action (off / 2 dots)
|
||||
description: Choose action(s) to run when **off** (Rodret) or **2 dots** (Somrig) button is **pressed**.
|
||||
default: []
|
||||
selector:
|
||||
action: {}
|
||||
on_hold_action:
|
||||
name: Hold action (on / 1 dot)
|
||||
description: Choose action(s) to run when **on** (Rodret) or **1 dot** (Somrig) button is **held**.
|
||||
default: []
|
||||
selector:
|
||||
action: {}
|
||||
off_hold_action:
|
||||
name: Hold action (off / 2 dots)
|
||||
description: Choose action(s) to run when **off** (Rodret) or **2 dots** (Somrig) button is **held**.
|
||||
default: []
|
||||
selector:
|
||||
action: {}
|
||||
on_double_press_action:
|
||||
name: Double press action (on / 1 dot)
|
||||
description: >
|
||||
Choose action(s) to run when the **on** (Rodret) or **1 dot** (Somrig) button is **pressed twice**.
|
||||
(**_NB for Rodret only_**: **Double press event (on)** must be exposed and **Helper - Double press delay** interval is used as a timeout.)
|
||||
default: []
|
||||
selector:
|
||||
action: {}
|
||||
off_double_press_action:
|
||||
name: Double press action (off / 2 dots)
|
||||
description: >
|
||||
Choose action(s) to run when the **off** (Rodret) or **2 dots** (Rodret) button is **pressed twice**.
|
||||
(**_NB for Rodret only_**: **Double press event (off)** must be exposed and **Helper - Double press delay** interval is used as a timeout.)
|
||||
default: []
|
||||
selector:
|
||||
action: {}
|
||||
helper_hold_delay:
|
||||
name: Helper - Hold delay
|
||||
description: Delay between the execution of the **Hold** action(s).
|
||||
default: 250
|
||||
selector:
|
||||
number:
|
||||
unit_of_measurement: milliseconds
|
||||
min: 100.0
|
||||
max: 5000.0
|
||||
step: 10.0
|
||||
mode: slider
|
||||
helper_max_loops:
|
||||
name: Helper - Max number of loops
|
||||
description: Maximum number of loops when holding down a button.
|
||||
default: 20
|
||||
selector:
|
||||
number:
|
||||
min: 1.0
|
||||
max: 1000.0
|
||||
step: 1.0
|
||||
mode: slider
|
||||
on_double_press_exposed:
|
||||
name: (Rodret only) Double press event (on)
|
||||
description: >
|
||||
**_(Rodret only)_** Choose whether or not to expose the virtual **double press** event for the **on** button.
|
||||
Turn this on if you are providing action(s) for the **Double press action (on / 1 dot)**.
|
||||
default: false
|
||||
selector:
|
||||
boolean: {}
|
||||
off_double_press_exposed:
|
||||
name: (Rodret only) Double press event (off)
|
||||
description: >
|
||||
**_(Rodret only)_** Choose whether or not to expose the virtual **double press** event for the **off** button.
|
||||
Turn this on if you are providing an action for the **Double press action (off / 2 dots)**.
|
||||
default: false
|
||||
selector:
|
||||
boolean: {}
|
||||
helper_double_press_delay:
|
||||
name: (Rodret only) Helper - Double press delay
|
||||
description: >
|
||||
**(Rodret only)** Max delay between the first and the second button press for the
|
||||
**Double press events**. 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: 250
|
||||
selector:
|
||||
number:
|
||||
unit_of_measurement: milliseconds
|
||||
min: 100.0
|
||||
max: 5000.0
|
||||
step: 10.0
|
||||
mode: slider
|
||||
mode: single
|
||||
max_exceeded: silent
|
||||
trigger_variables:
|
||||
z2m_base_topic: !input base_topic
|
||||
z2m_controller: !input remote_name
|
||||
zha_controller: !input remote_device
|
||||
trigger:
|
||||
# RODRET - E2201
|
||||
- platform: event
|
||||
event_type: zha_event
|
||||
event_data:
|
||||
device_id: "{{ zha_controller }}"
|
||||
command: "on"
|
||||
cluster_id: 6
|
||||
endpoint_id: 1
|
||||
id: press-on-zha-e2201
|
||||
- platform: mqtt
|
||||
topic: "{{ z2m_base_topic ~ '/' ~ z2m_controller ~ '/action' }}"
|
||||
payload: "on"
|
||||
id: press-on-z2m-e2201
|
||||
- platform: event
|
||||
event_type: zha_event
|
||||
event_data:
|
||||
device_id: "{{ zha_controller }}"
|
||||
command: "off"
|
||||
cluster_id: 6
|
||||
endpoint_id: 1
|
||||
id: press-off-zha-e2201
|
||||
- platform: mqtt
|
||||
topic: "{{ z2m_base_topic ~ '/' ~ z2m_controller ~ '/action' }}"
|
||||
payload: "off"
|
||||
id: press-off-z2m-e2201
|
||||
- platform: event
|
||||
event_type: zha_event
|
||||
event_data:
|
||||
device_id: "{{ zha_controller }}"
|
||||
command: "move_with_on_off"
|
||||
cluster_id: 8
|
||||
endpoint_id: 1
|
||||
args: [0, 83]
|
||||
id: hold-on-zha-e2201
|
||||
- platform: mqtt
|
||||
topic: "{{ z2m_base_topic ~ '/' ~ z2m_controller ~ '/action' }}"
|
||||
payload: "brightness_move_up"
|
||||
id: hold-on-z2m-e2201
|
||||
- platform: event
|
||||
event_type: zha_event
|
||||
event_data:
|
||||
device_id: "{{ zha_controller }}"
|
||||
command: "move"
|
||||
cluster_id: 8
|
||||
endpoint_id: 1
|
||||
args: [1, 83, 0, 0]
|
||||
id: hold-off-zha-e2201
|
||||
- platform: mqtt
|
||||
topic: "{{ z2m_base_topic ~ '/' ~ z2m_controller ~ '/action' }}"
|
||||
payload: "brightness_move_down"
|
||||
id: hold-off-z2m-e2201
|
||||
- platform: event
|
||||
event_type: zha_event
|
||||
event_data:
|
||||
device_id: "{{ zha_controller }}"
|
||||
endpoint_id: 1
|
||||
cluster_id: 8
|
||||
command: stop_with_on_off
|
||||
id: release-zha-e2201
|
||||
- platform: mqtt
|
||||
topic: "{{ z2m_base_topic ~ '/' ~ z2m_controller ~ '/action' }}"
|
||||
payload: "brightness_stop"
|
||||
id: release-z2m-e2201
|
||||
|
||||
# SOMRIG - E2213
|
||||
- platform: event
|
||||
event_type: zha_event
|
||||
event_data:
|
||||
device_id: "{{ zha_controller }}"
|
||||
command: "short_release"
|
||||
cluster_id: 64640
|
||||
endpoint_id: 1
|
||||
args: [0]
|
||||
id: press-dots1-zha-e2213
|
||||
- platform: mqtt
|
||||
topic: "{{ z2m_base_topic ~ '/' ~ z2m_controller ~ '/action' }}"
|
||||
payload: "1_short_release"
|
||||
id: press-dots1-z2m-e2213
|
||||
- platform: event
|
||||
event_type: zha_event
|
||||
event_data:
|
||||
device_id: "{{ zha_controller }}"
|
||||
command: "short_release"
|
||||
cluster_id: 64640
|
||||
endpoint_id: 2
|
||||
args: [0]
|
||||
id: press-dots2-zha-e2213
|
||||
- platform: mqtt
|
||||
topic: "{{ z2m_base_topic ~ '/' ~ z2m_controller ~ '/action' }}"
|
||||
payload: "2_short_release"
|
||||
id: press-dots2-z2m-e2213
|
||||
- platform: event
|
||||
event_type: zha_event
|
||||
event_data:
|
||||
device_id: "{{ zha_controller }}"
|
||||
command: "multi_press_complete"
|
||||
cluster_id: 64640
|
||||
endpoint_id: 1
|
||||
args: [0, 2]
|
||||
id: double-press-dots1-zha-e2213
|
||||
- platform: mqtt
|
||||
topic: "{{ z2m_base_topic ~ '/' ~ z2m_controller ~ '/action' }}"
|
||||
payload: "1_double_press"
|
||||
id: double-press-dots1-z2m-e2213
|
||||
- platform: event
|
||||
event_type: zha_event
|
||||
event_data:
|
||||
device_id: "{{ zha_controller }}"
|
||||
command: "multi_press_complete"
|
||||
cluster_id: 64640
|
||||
endpoint_id: 2
|
||||
args: [0, 2]
|
||||
id: double-press-dots2-zha-e2213
|
||||
- platform: mqtt
|
||||
topic: "{{ z2m_base_topic ~ '/' ~ z2m_controller ~ '/action' }}"
|
||||
payload: "2_double_press"
|
||||
id: double-press-dots2-z2m-e2213
|
||||
- platform: event
|
||||
event_type: zha_event
|
||||
event_data:
|
||||
device_id: "{{ zha_controller }}"
|
||||
command: "long_press"
|
||||
cluster_id: 64640
|
||||
endpoint_id: 1
|
||||
args: [0]
|
||||
id: hold-dots1-zha-e2213
|
||||
- platform: mqtt
|
||||
topic: "{{ z2m_base_topic ~ '/' ~ z2m_controller ~ '/action' }}"
|
||||
payload: "1_long_press"
|
||||
id: hold-dots1-z2m-e2213
|
||||
- platform: event
|
||||
event_type: zha_event
|
||||
event_data:
|
||||
device_id: "{{ zha_controller }}"
|
||||
command: "long_press"
|
||||
cluster_id: 64640
|
||||
endpoint_id: 2
|
||||
args: [0]
|
||||
id: hold-dots2-zha-e2213
|
||||
- platform: mqtt
|
||||
topic: "{{ z2m_base_topic ~ '/' ~ z2m_controller ~ '/action' }}"
|
||||
payload: "2_long_press"
|
||||
id: hold-dots2-z2m-e2213
|
||||
- platform: event
|
||||
event_type: zha_event
|
||||
event_data:
|
||||
device_id: "{{ zha_controller }}"
|
||||
command: "long_release"
|
||||
cluster_id: 64640
|
||||
endpoint_id: 1
|
||||
args: [0]
|
||||
id: release-hold-dots1-zha-e2213
|
||||
- platform: mqtt
|
||||
topic: "{{ z2m_base_topic ~ '/' ~ z2m_controller ~ '/action' }}"
|
||||
payload: "1_long_release"
|
||||
id: release-hold-dots1-z2m-e2213
|
||||
- platform: event
|
||||
event_type: zha_event
|
||||
event_data:
|
||||
device_id: "{{ zha_controller }}"
|
||||
command: "long_release"
|
||||
cluster_id: 64640
|
||||
endpoint_id: 2
|
||||
args: [0]
|
||||
id: release-hold-dots2-zha-e2213
|
||||
- platform: mqtt
|
||||
topic: "{{ z2m_base_topic ~ '/' ~ z2m_controller ~ '/action' }}"
|
||||
payload: "2_long_release"
|
||||
id: release-hold-dots2-z2m-e2213
|
||||
action:
|
||||
- variables:
|
||||
on_double_press_exposed: !input on_double_press_exposed
|
||||
off_double_press_exposed: !input off_double_press_exposed
|
||||
zha_controller: !input remote_device
|
||||
z2m_base_topic: !input base_topic
|
||||
z2m_controller: !input remote_name
|
||||
- choose:
|
||||
- conditions:
|
||||
- condition: trigger
|
||||
id:
|
||||
- press-on-zha-e2201
|
||||
- press-on-z2m-e2201
|
||||
- press-dots1-zha-e2213
|
||||
- press-dots1-z2m-e2213
|
||||
sequence:
|
||||
- if:
|
||||
- condition: template
|
||||
value_template: "{{ on_double_press_exposed }}"
|
||||
then:
|
||||
- choose:
|
||||
- conditions:
|
||||
- condition: trigger
|
||||
id:
|
||||
- press-on-zha-e2201
|
||||
sequence:
|
||||
- wait_for_trigger:
|
||||
- platform: event
|
||||
event_type: zha_event
|
||||
event_data:
|
||||
device_id: "{{ zha_controller }}"
|
||||
command: "on"
|
||||
cluster_id: 6
|
||||
endpoint_id: 1
|
||||
timeout:
|
||||
milliseconds: !input helper_double_press_delay
|
||||
continue_on_timeout: true
|
||||
- if:
|
||||
- condition: template
|
||||
value_template: "{{ wait.trigger.idx is defined }}"
|
||||
then: !input on_double_press_action
|
||||
else: !input on_press_action
|
||||
- conditions:
|
||||
- condition: trigger
|
||||
id:
|
||||
- press-on-z2m-e2201
|
||||
sequence:
|
||||
- wait_for_trigger:
|
||||
- platform: mqtt
|
||||
topic: "{{ z2m_base_topic ~ '/' ~ z2m_controller ~ '/action' }}"
|
||||
payload: "on"
|
||||
timeout:
|
||||
milliseconds: !input helper_double_press_delay
|
||||
continue_on_timeout: true
|
||||
- if:
|
||||
- condition: template
|
||||
value_template: "{{ wait.trigger.idx is defined }}"
|
||||
then: !input on_double_press_action
|
||||
else: !input on_press_action
|
||||
default: !input on_press_action
|
||||
else: !input on_press_action
|
||||
- conditions:
|
||||
- condition: trigger
|
||||
id:
|
||||
- press-off-zha-e2201
|
||||
- press-off-z2m-e2201
|
||||
- press-dots2-zha-e2213
|
||||
- press-dots2-z2m-e2213
|
||||
sequence:
|
||||
- if:
|
||||
- condition: template
|
||||
value_template: "{{ off_double_press_exposed }}"
|
||||
then:
|
||||
- choose:
|
||||
- conditions:
|
||||
- condition: trigger
|
||||
id:
|
||||
- press-off-zha-e2201
|
||||
sequence:
|
||||
- wait_for_trigger:
|
||||
- platform: event
|
||||
event_type: zha_event
|
||||
event_data:
|
||||
device_id: "{{ zha_controller }}"
|
||||
command: "off"
|
||||
cluster_id: 6
|
||||
endpoint_id: 1
|
||||
timeout:
|
||||
milliseconds: !input helper_double_press_delay
|
||||
continue_on_timeout: true
|
||||
- if:
|
||||
- condition: template
|
||||
value_template: "{{ wait.trigger.idx is defined }}"
|
||||
then: !input off_double_press_action
|
||||
else: !input off_press_action
|
||||
- conditions:
|
||||
- condition: trigger
|
||||
id:
|
||||
- press-off-z2m-e2201
|
||||
sequence:
|
||||
- wait_for_trigger:
|
||||
- platform: mqtt
|
||||
topic: "{{ z2m_base_topic ~ '/' ~ z2m_controller ~ '/action' }}"
|
||||
payload: "off"
|
||||
timeout:
|
||||
milliseconds: !input helper_double_press_delay
|
||||
continue_on_timeout: true
|
||||
- if:
|
||||
- condition: template
|
||||
value_template: "{{ wait.trigger.idx is defined }}"
|
||||
then: !input off_double_press_action
|
||||
else: !input off_press_action
|
||||
default: !input off_press_action
|
||||
else: !input off_press_action
|
||||
- conditions:
|
||||
- condition: trigger
|
||||
id:
|
||||
- double-press-dots1-zha-e2213
|
||||
- double-press-dots1-z2m-e2213
|
||||
sequence: !input on_double_press_action
|
||||
- conditions:
|
||||
- condition: trigger
|
||||
id:
|
||||
- double-press-dots2-zha-e2213
|
||||
- double-press-dots2-z2m-e2213
|
||||
sequence: !input off_double_press_action
|
||||
- conditions:
|
||||
- condition: trigger
|
||||
id:
|
||||
- hold-on-zha-e2201
|
||||
- hold-on-z2m-e2201
|
||||
- hold-dots1-zha-e2213
|
||||
- hold-dots1-z2m-e2213
|
||||
sequence:
|
||||
- repeat:
|
||||
count: !input helper_max_loops
|
||||
sequence:
|
||||
- parallel:
|
||||
- sequence: !input on_hold_action
|
||||
- sequence:
|
||||
- choose:
|
||||
- conditions:
|
||||
- condition: trigger
|
||||
id:
|
||||
- hold-on-zha-e2201
|
||||
- hold-dots1-zha-e2213
|
||||
sequence:
|
||||
- wait_for_trigger:
|
||||
- platform: event
|
||||
event_type: zha_event
|
||||
event_data:
|
||||
device_id: "{{ zha_controller }}"
|
||||
command: "stop_with_on_off"
|
||||
cluster_id: 8
|
||||
endpoint_id: 1
|
||||
timeout:
|
||||
milliseconds: !input helper_hold_delay
|
||||
continue_on_timeout: true
|
||||
- if:
|
||||
- condition: template
|
||||
value_template: "{{ wait.trigger.idx is defined }}"
|
||||
then:
|
||||
- stop: button released
|
||||
- conditions:
|
||||
- condition: trigger
|
||||
id:
|
||||
- hold-on-z2m-e2201
|
||||
- hold-dots1-z2m-e2213
|
||||
sequence:
|
||||
- wait_for_trigger:
|
||||
- platform: mqtt
|
||||
topic: "{{ z2m_base_topic ~ '/' ~ z2m_controller ~ '/action' }}"
|
||||
payload: "brightness_stop"
|
||||
- platform: mqtt
|
||||
topic: "{{ z2m_base_topic ~ '/' ~ z2m_controller ~ '/action' }}"
|
||||
payload: "1_long_release"
|
||||
timeout:
|
||||
milliseconds: !input helper_hold_delay
|
||||
continue_on_timeout: true
|
||||
- if:
|
||||
- condition: template
|
||||
value_template: "{{ wait.trigger.idx is defined }}"
|
||||
then:
|
||||
- stop: button released
|
||||
- conditions:
|
||||
- condition: trigger
|
||||
id:
|
||||
- hold-off-zha-e2201
|
||||
- hold-off-z2m-e2201
|
||||
- hold-dots2-zha-e2213
|
||||
- hold-dots2-z2m-e2213
|
||||
sequence:
|
||||
- repeat:
|
||||
count: !input helper_max_loops
|
||||
sequence:
|
||||
- parallel:
|
||||
- sequence: !input off_hold_action
|
||||
- sequence:
|
||||
- choose:
|
||||
- conditions:
|
||||
- condition: trigger
|
||||
id:
|
||||
- hold-off-zha-e2201
|
||||
- hold-dots2-zha-e2213
|
||||
sequence:
|
||||
- wait_for_trigger:
|
||||
- platform: event
|
||||
event_type: zha_event
|
||||
event_data:
|
||||
device_id: "{{ zha_controller }}"
|
||||
command: "stop_with_on_off"
|
||||
cluster_id: 8
|
||||
endpoint_id: 1
|
||||
timeout:
|
||||
milliseconds: !input helper_hold_delay
|
||||
continue_on_timeout: true
|
||||
- if:
|
||||
- condition: template
|
||||
value_template: "{{ wait.trigger.idx is defined }}"
|
||||
then:
|
||||
- stop: button released
|
||||
- conditions:
|
||||
- condition: trigger
|
||||
id:
|
||||
- hold-off-z2m-e2201
|
||||
- hold-dots2-z2m-e2213
|
||||
sequence:
|
||||
- wait_for_trigger:
|
||||
- platform: mqtt
|
||||
topic: "{{ z2m_base_topic ~ '/' ~ z2m_controller ~ '/action' }}"
|
||||
payload: "brightness_stop"
|
||||
- platform: mqtt
|
||||
topic: "{{ z2m_base_topic ~ '/' ~ z2m_controller ~ '/action' }}"
|
||||
payload: "2_long_release"
|
||||
timeout:
|
||||
milliseconds: !input helper_hold_delay
|
||||
continue_on_timeout: true
|
||||
- if:
|
||||
- condition: template
|
||||
value_template: "{{ wait.trigger.idx is defined }}"
|
||||
then:
|
||||
- stop: button released
|
||||
Reference in New Issue
Block a user