feat(ikea-rodret): init with existing gists

This commit is contained in:
Damien Rubio
2024-02-20 15:04:59 +01:00
parent 4cc795563e
commit c06738c7e5
2 changed files with 0 additions and 634 deletions

View File

@@ -1,412 +0,0 @@
blueprint:
name: IKEA Rodret Dimmer Controls (ZHA/Z2M)
description: "## Control anything with IKEA RODRET Dimmer remote (v1.2)
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:
- Press the **on** or **off** buttons
- Double press the **on** or **off** buttons (optional) in **Helper - Double press delay** interval. When disabled, there will be no delay for the simple press actions
- Press and hold the **on**/**off** buttons. 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: IKEA remote to use. **_Choose if you are using ZHA._**
default: ""
selector:
device:
filter:
integration: zha
manufacturer: IKEA of Sweden
model: RODRET Dimmer
multiple: false
remote_name:
name: (Zigbee2MQTT) Remote Name
description: The name of the controller (e.g. IKEA Rodret). **_Choose if you are using Zigbee2MQTT._**
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: On - Single press action
description: Choose action(s) to run when **on** button is pressed.
default: []
selector:
action: {}
off_press_action:
name: Off - Single press action
description: Choose action(s) to run when **off** button is **pressed**.
default: []
selector:
action: {}
on_hold_action:
name: On - Hold action
description: Choose action(s) to run when **on** button is **pressed and hold**.
default: []
selector:
action: {}
off_hold_action:
name: Off - Hold action
description: Choose action(s) to run when **off** button is **pressed and hold**.
default: []
selector:
action: {}
on_double_press:
name: On - Double press event
description:
Choose whether or not to expose the virtual **double press** event
for the **on** button. Turn this on if you are providing an action for the **on**
button double press event.
default: false
selector:
boolean: {}
on_double_press_action:
name: On - Double press action
description:
Choose action(s) to run when pressing the **on** button twice in **Helper - Double press
delay** interval. **On - Double press event** must be exposed.
default: []
selector:
action: {}
off_double_press:
name: Off - Double press event
description:
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 **off**
button double press event.
default: false
selector:
boolean: {}
off_double_press_action:
name: Off - Double press action
description:
Choose action(s) to run when pressing the **off** button twice in **Helper - Double press
delay** interval. **Off - Double press event** must be exposed.
default: []
selector:
action: {}
helper_double_press_delay:
name: Helper - Double press delay
description:
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
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
mode: single
max_exceeded: silent
trigger_variables:
z2m_base_topic: !input base_topic
z2m_controller: !input remote_name
zha_remote: !input remote_device
trigger:
- platform: event
event_type: zha_event
event_data:
device_id: "{{ zha_remote }}"
command: "on"
cluster_id: 6
endpoint_id: 1
id: press-on-zha
- platform: mqtt
topic: "{{ z2m_base_topic ~ '/' ~ z2m_controller ~ '/action' }}"
payload: "on"
id: press-on-z2m
- platform: event
event_type: zha_event
event_data:
device_id: "{{ zha_remote }}"
command: "off"
cluster_id: 6
endpoint_id: 1
id: press-off-zha
- platform: mqtt
topic: "{{ z2m_base_topic ~ '/' ~ z2m_controller ~ '/action' }}"
payload: "off"
id: press-off-z2m
- platform: event
event_type: zha_event
event_data:
device_id: "{{ zha_remote }}"
command: "move_with_on_off"
cluster_id: 8
endpoint_id: 1
args: [0, 83]
id: hold-on-zha
- platform: mqtt
topic: "{{ z2m_base_topic ~ '/' ~ z2m_controller ~ '/action' }}"
payload: "brightness_move_up"
id: hold-on-z2m
- platform: event
event_type: zha_event
event_data:
device_id: "{{ zha_remote }}"
command: "move"
cluster_id: 8
endpoint_id: 1
args: [1, 83, 0, 0]
id: hold-off-zha
- platform: mqtt
topic: "{{ z2m_base_topic ~ '/' ~ z2m_controller ~ '/action' }}"
payload: "brightness_move_down"
id: hold-off-z2m
- platform: event
event_type: zha_event
event_data:
device_id: "{{ zha_remote }}"
endpoint_id: 1
cluster_id: 8
command: stop_with_on_off
id: release-zha
- platform: mqtt
topic: "{{ z2m_base_topic ~ '/' ~ z2m_controller ~ '/action' }}"
payload: "brightness_stop"
id: release-z2m
action:
- variables:
on_double_press: !input on_double_press
off_double_press: !input off_double_press
zha_remote: !input remote_device
z2m_base_topic: !input base_topic
z2m_controller: !input remote_name
- choose:
- conditions:
- condition: trigger
id:
- press-on-zha
- press-on-z2m
sequence:
- if:
- condition: template
value_template: "{{ on_double_press }}"
then:
- choose:
- conditions:
- condition: trigger
id:
- press-on-zha
sequence:
- wait_for_trigger:
- platform: event
event_type: zha_event
event_data:
device_id: "{{ zha_remote }}"
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
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
else: !input on_press_action
- conditions:
- condition: trigger
id:
- press-off-zha
- press-off-z2m
sequence:
- if:
- condition: template
value_template: "{{ off_double_press }}"
then:
- choose:
- conditions:
- condition: trigger
id:
- press-off-zha
sequence:
- wait_for_trigger:
- platform: event
event_type: zha_event
event_data:
device_id: "{{ zha_remote }}"
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
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
else: !input off_press_action
- conditions:
- condition: trigger
id:
- hold-on-zha
- hold-on-z2m
sequence:
- repeat:
count: !input helper_max_loops
sequence:
- parallel:
- sequence: !input on_hold_action
- sequence:
- choose:
- conditions:
- condition: trigger
id:
- hold-on-zha
sequence:
- wait_for_trigger:
- platform: event
event_type: zha_event
event_data:
device_id: "{{ zha_remote }}"
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
sequence:
- wait_for_trigger:
- platform: mqtt
topic: "{{ z2m_base_topic ~ '/' ~ z2m_controller ~ '/action' }}"
payload: "brightness_stop"
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
- hold-off-z2m
sequence:
- repeat:
count: !input helper_max_loops
sequence:
- parallel:
- sequence: !input off_hold_action
- sequence:
- choose:
- conditions:
- condition: trigger
id:
- hold-off-zha
sequence:
- wait_for_trigger:
- platform: event
event_type: zha_event
event_data:
device_id: "{{ zha_remote }}"
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
sequence:
- wait_for_trigger:
- platform: mqtt
topic: "{{ z2m_base_topic ~ '/' ~ z2m_controller ~ '/action' }}"
payload: "brightness_stop"
timeout:
milliseconds: !input helper_hold_delay
continue_on_timeout: true
- if:
- condition: template
value_template: "{{ wait.trigger.idx is defined }}"
then:
- stop: button released

View File

@@ -1,222 +0,0 @@
blueprint:
name: IKEA Rodret Dimmer Light Control (ZHA/Z2M)
description: "## Control Light with IKEA RODRET Dimmer remote (v1.0)
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:
- Press the **on** button to turn on the light (Optional: set the target brightness
by enabling **Helper - Force Brightness** and setting a **Helper - Brightness** value)
- Press the **off** button to turn off the light
- Press and hold the **on** button to increase the brightness
- Press and hold the **off** button to decrease the brightness down to 1%
"
domain: automation
input:
remote_device:
name: (ZHA) Remote
description: IKEA remote to use. **_Choose if you are using ZHA._**
default: ""
selector:
device:
filter:
integration: zha
manufacturer: IKEA of Sweden
model: RODRET Dimmer
multiple: false
remote_name:
name: (Zigbee2MQTT) Remote Name
description: The name of the controller (e.g. IKEA Rodret). **_Choose if you are using Zigbee2MQTT._**
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
light:
name: Light
description: Light to control
selector:
entity:
filter:
domain: light
multiple: false
helper_force_brightness:
name: Helper - Force brightness
description: Force the brightness to value below when light turns on.
default: false
selector:
boolean: {}
helper_brightness:
name: Helper - Brightness
description:
Target light brightness when turning on. Requires **Helper - Force brightness**
to be enabled.
default: 50
selector:
number:
unit_of_measurement: "%"
min: 1.0
max: 100.0
step: 1.0
mode: slider
mode: restart
max_exceeded: silent
trigger_variables:
z2m_base_topic: !input base_topic
z2m_controller: !input remote_name
zha_controller: !input remote_device
trigger:
- platform: event
event_type: zha_event
event_data:
device_id: "{{ zha_controller }}"
command: "on"
cluster_id: 6
endpoint_id: 1
id: press-on-zha
- platform: mqtt
topic: "{{ z2m_base_topic ~ '/' ~ z2m_controller ~ '/action' }}"
payload: "on"
id: press-on-z2m
- platform: event
event_type: zha_event
event_data:
device_id: "{{ zha_controller }}"
command: "off"
cluster_id: 6
endpoint_id: 1
id: press-off-zha
- platform: mqtt
topic: "{{ z2m_base_topic ~ '/' ~ z2m_controller ~ '/action' }}"
payload: "off"
id: press-off-z2m
- 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
- platform: mqtt
topic: "{{ z2m_base_topic ~ '/' ~ z2m_controller ~ '/action' }}"
payload: "brightness_move_up"
id: hold-on-z2m
- 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
- platform: mqtt
topic: "{{ z2m_base_topic ~ '/' ~ z2m_controller ~ '/action' }}"
payload: "brightness_move_down"
id: hold-off-z2m
- platform: event
event_type: zha_event
event_data:
device_id: "{{ zha_controller }}"
command: stop_with_on_off
endpoint_id: 1
cluster_id: 8
id: release-zha
- platform: mqtt
topic: "{{ z2m_base_topic ~ '/' ~ z2m_controller ~ '/action' }}"
payload: "brightness_stop"
id: release-z2m
action:
- variables:
helper_force_brightness: !input helper_force_brightness
helper_hold_delay: 0.05
helper_hold_dim_step: 5
light: !input light
- choose:
- conditions:
- condition: trigger
id:
- press-on-zha
- press-on-z2m
sequence:
- choose:
- conditions: "{{ helper_force_brightness }}"
sequence:
- service: light.turn_on
target:
entity_id: !input light
data:
transition: 1
brightness_pct: !input helper_brightness
default:
- service: light.turn_on
target:
entity_id: !input light
data:
transition: 1
- conditions:
- condition: trigger
id:
- press-off-zha
- press-off-z2m
sequence:
- service: light.turn_off
target:
entity_id: !input light
data:
transition: 1
- conditions:
- condition: trigger
id:
- hold-on-zha
- hold-on-z2m
sequence:
- repeat:
while:
- condition: trigger
id:
- hold-on-zha
- hold-on-z2m
sequence:
- parallel:
- service: light.turn_on
target:
entity_id: !input light
data:
brightness_step_pct: "{{ helper_hold_dim_step }}"
- delay: "{{ helper_hold_delay }}"
- conditions:
- condition: trigger
id:
- hold-off-zha
- hold-off-z2m
sequence:
- repeat:
while:
- condition: template
value_template:
"{{ state_attr(light, 'brightness') | int / 255 > helper_hold_dim_step/100
}}"
sequence:
- parallel:
- service: light.turn_on
data:
brightness_step_pct: "{{ helper_hold_dim_step | int * -1 }}"
target:
entity_id: !input light
- delay: "{{ helper_hold_delay }}"
- service: light.turn_on
data:
brightness_pct: 1
target:
entity_id: !input light