Skip to content

Instantly share code, notes, and snippets.

@TexTown
Last active December 12, 2023 19:00
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 2 You must be signed in to fork a gist
  • Save TexTown/c0a04da27592c2f238cba24c21ffbe1b to your computer and use it in GitHub Desktop.
Save TexTown/c0a04da27592c2f238cba24c21ffbe1b to your computer and use it in GitHub Desktop.
A Home Assistant blueprint for ZHA to control lights using the EcoDim ED-10013 2 Channel Remote
blueprint:
name: ZHA - EcoDim ED-10013 - 2 Channel Remote
description: 'Control any light using the EcoDim ED-10013 remote on ZHA'
domain: automation
input:
remote:
name: Remote controller
description: Remote to use
selector:
device:
integration: zha
manufacturer: EcoDim
model: ED-10013
light_1:
name: Light row 1
description: The lights that will be controlled with row 1
selector:
target:
entity:
domain: light
light_2:
name: Light row 2
description: The lights that will be controlled with row 2
selector:
target:
entity:
domain: light
step_size:
name: Step Size
description: The % step each dimming step takes
default: 10
selector:
number:
min: 5
max: 25
unit_of_measurement: '%'
step_delay:
name: Step Delay
description: The time between dimming steps (ms)
default: 1000
selector:
number:
min: 100
max: 2000
unit_of_measurement: 'milliseconds'
source_url: https://gist.github.com/TexTown/c0a04da27592c2f238cba24c21ffbe1b
mode: restart
max_exceeded: silent
trigger:
- platform: event
event_type: zha_event
event_data:
device_id: !input 'remote'
action:
- variables:
command: '{{ trigger.event.data.command }}'
cluster_id: '{{ trigger.event.data.cluster_id }}'
endpoint_id: '{{ trigger.event.data.endpoint_id }}'
args: '{{ trigger.event.data.args }}'
step_size: !input 'step_size'
- choose:
- conditions:
- "{{ command == 'on' }}"
- "{{ cluster_id == 6 }}"
- "{{ endpoint_id == 1 }}"
sequence:
- service: light.turn_on
target: !input 'light_1'
data:
transition: 1
- conditions:
- "{{ command == 'off' }}"
- "{{ cluster_id == 6 }}"
- "{{ endpoint_id == 1 }}"
sequence:
- service: light.turn_off
target: !input 'light_1'
data:
transition: 1
- conditions:
- "{{ command == 'move_with_on_off' }}"
- "{{ cluster_id == 8 }}"
- "{{ endpoint_id == 1 }}"
- "{{ trigger.event.data.args[0] == 0 }}"
- "{{ trigger.event.data.args[1] == 50 }}"
sequence:
repeat:
while:
- condition: template
value_template: "{{ repeat.index < ((100 / step_size)|int) }}"
sequence:
- service: light.turn_on
target: !input 'light_1'
data:
transition: 1
brightness_step_pct: !input 'step_size'
- delay:
milliseconds: !input 'step_delay'
- conditions:
- "{{ command == 'move_with_on_off' }}"
- "{{ cluster_id == 8 }}"
- "{{ endpoint_id == 1 }}"
- "{{ trigger.event.data.args[0] == 1 }}"
- "{{ trigger.event.data.args[1] == 50 }}"
sequence:
repeat:
while:
- condition: template
value_template: "{{ repeat.index < ((100 / step_size) | int) }}"
sequence:
- service: light.turn_on
target: !input 'light_1'
data:
transition: 1
brightness_step_pct: "{{ step_size * -1 }}"
- delay:
milliseconds: !input 'step_delay'
- conditions:
- "{{ command == 'on' }}"
- "{{ cluster_id == 6 }}"
- "{{ endpoint_id == 2 }}"
sequence:
- service: light.turn_on
target: !input 'light_2'
data:
transition: 1
- conditions:
- "{{ command == 'off' }}"
- "{{ cluster_id == 6 }}"
- "{{ endpoint_id == 2 }}"
sequence:
- service: light.turn_off
target: !input 'light_2'
data:
transition: 1
- conditions:
- "{{ command == 'move_with_on_off' }}"
- "{{ cluster_id == 8 }}"
- "{{ endpoint_id == 2 }}"
- "{{ trigger.event.data.args[0] == 0 }}"
- "{{ trigger.event.data.args[1] == 50 }}"
sequence:
repeat:
while:
- condition: template
value_template: "{{ repeat.index < ((100 / step_size) | int) }}"
sequence:
- service: light.turn_on
target: !input 'light_2'
data:
transition: 1
brightness_step_pct: !input 'step_size'
- delay:
milliseconds: !input 'step_delay'
- conditions:
- "{{ command == 'move_with_on_off' }}"
- "{{ cluster_id == 8 }}"
- "{{ endpoint_id == 2 }}"
- "{{ trigger.event.data.args[0] == 1 }}"
- "{{ trigger.event.data.args[1] == 50 }}"
sequence:
repeat:
while:
- condition: template
value_template: "{{ repeat.index < ((100 / step_size)|int) }}"
sequence:
- service: light.turn_on
target: !input 'light_2'
data:
transition: 1
brightness_step_pct: "{{ step_size * -1 }}"
- delay:
milliseconds: !input 'step_delay'
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment