Skip to content

Instantly share code, notes, and snippets.

@SanderEik
Last active August 8, 2025 22:10
Show Gist options
  • Select an option

  • Save SanderEik/c967e21630095df9d052a9049d9613af to your computer and use it in GitHub Desktop.

Select an option

Save SanderEik/c967e21630095df9d052a9049d9613af to your computer and use it in GitHub Desktop.
blueprint:
name: ZHA - Ecodim, 4 Channel remote
description: Nieuwe controle voor de ecodim 4 kanalen.
'
domain: automation
input:
remote1:
name: Remote controler
description: Remote to use
default:
selector:
device:
integration: zha
manufacturer: EcoDim
model: ED-10014
# multiple: false
lights:
name: Lights
description: Lights to control when using default light actions
default:
entity_id: none
selector:
target:
entity:
domain: light
#1e RIJ KNOPPEN NAAM
on_short_custom_1:
name: Use custom action for short on-button press row 1
description: 'Specify custom actions to run using a short press of the on button row 1.
If not specified, the controlled light will be turned on.'
default: false
selector:
boolean: {}
button_on_short_1:
name: On button press for row 1
description: Action to run on press of On button row 1
default: []
selector:
action: {}
off_short_custom_1:
name: Use custom action for short off-button press row 1
description: 'Specify custom actions to run using a short press of the off button.
If not specified, the controlled light will be turned off.'
default: false
selector:
boolean: {}
button_off_short_1:
name: Off button press for row 1
description: Action to run on press of Off button
default: []
selector:
action: {}
on_long_custom_1:
name: Use custom action for long on-button hold
description: 'Specify custom actions to run using a long press of the on button.
If not specified, the controlled light will be increased in brightness.'
default: false
selector:
boolean: {}
button_on_long_1:
name: On button hold for row 1
description: Action to run on long press of On button
default: []
selector:
action: {}
off_long_custom_1:
name: Use custom action for long off-button hold
description: 'Specify custom actions to run using a long press of the off button.
If not specified, the controlled light will be decreased in brightness.'
default: false
selector:
boolean: {}
button_off_long_1:
name: Off button hold for row 1
description: Action to run on long press of Off button
default: []
selector:
action: {}
#2e RIJ KNOPPEN NAAM
on_short_custom_2:
name: Use custom action for short on-button press
description: 'Specify custom actions to run using a short press of the on button.
If not specified, the controlled light will be turned on.'
default: false
selector:
boolean: {}
button_on_short_2:
name: On button press for row 2
description: Action to run on press of On button
default: []
selector:
action: {}
off_short_custom_2:
name: Use custom action for short off-button press
description: 'Specify custom actions to run using a short press of the off button.
If not specified, the controlled light will be turned off.'
default: false
selector:
boolean: {}
button_off_short_2:
name: Off button press for row 2
description: Action to run on press of Off button
default: []
selector:
action: {}
on_long_custom_2:
name: Use custom action for long on-button hold
description: 'Specify custom actions to run using a long press of the on button.
If not specified, the controlled light will be increased in brightness.'
default: false
selector:
boolean: {}
button_on_long_2:
name: On button hold for row 2
description: Action to run on long press of On button
default: []
selector:
action: {}
off_long_custom_2:
name: Use custom action for long off-button hold
description: 'Specify custom actions to run using a long press of the off button.
If not specified, the controlled light will be decreased in brightness.'
default: false
selector:
boolean: {}
button_off_long_2:
name: Off button hold for row 2
description: Action to run on long press of Off button
default: []
selector:
action: {}
#3e RIJ KNOPPEN NAAM
on_short_custom_3:
name: Use custom action for short on-button press
description: 'Specify custom actions to run using a short press of the on button.
If not specified, the controlled light will be turned on.'
default: false
selector:
boolean: {}
button_on_short_3:
name: On button press for row 3
description: Action to run on press of On button
default: []
selector:
action: {}
off_short_custom_3:
name: Use custom action for short off-button press
description: 'Specify custom actions to run using a short press of the off button.
If not specified, the controlled light will be turned off.'
default: false
selector:
boolean: {}
button_off_short_3:
name: Off button press for row 3
description: Action to run on press of Off button
default: []
selector:
action: {}
on_long_custom_3:
name: Use custom action for long on-button hold
description: 'Specify custom actions to run using a long press of the on button.
If not specified, the controlled light will be increased in brightness.'
default: false
selector:
boolean: {}
button_on_long_3:
name: On button hold for row 3
description: Action to run on long press of On button
default: []
selector:
action: {}
off_long_custom_3:
name: Use custom action for long off-button hold
description: 'Specify custom actions to run using a long press of the off button.
If not specified, the controlled light will be decreased in brightness.'
default: false
selector:
boolean: {}
button_off_long_3:
name: Off button hold for row 3
description: Action to run on long press of Off button
default: []
selector:
action: {}
#4e RIJ KNOPPEN NAAM
on_short_custom_4:
name: Use custom action for short on-button press
description: 'Specify custom actions to run using a short press of the on button.
If not specified, the controlled light will be turned on.'
default: false
selector:
boolean: {}
button_on_short_4:
name: On button press for row 4
description: Action to run on press of On button
default: []
selector:
action: {}
off_short_custom_4:
name: Use custom action for short off-button
description: 'Specify custom actions to run using a short press of the off button.
If not specified, the controlled light will be turned off.'
default: false
selector:
boolean: {}
button_off_short_4:
name: Off button press for row 4
description: Action to run on press of Off button
default: []
selector:
action: {}
on_long_custom_4:
name: Use custom action for long on-button hold
description: 'Specify custom actions to run using a long press of the on button.
If not specified, the controlled light will be increased in brightness.'
default: false
selector:
boolean: {}
button_on_long_4:
name: On button hold for row 4
description: Action to run on long press of On button
default: []
selector:
action: {}
off_long_custom_4:
name: Use custom action for long off-button hold
description: 'Specify custom actions to run using a long press of the off button.
If not specified, the controlled light will be decreased in brightness.'
default: false
selector:
boolean: {}
button_off_long_4:
name: Off button hold for row 1
description: Action to run on long press of Off button
default: []
selector:
action: {}
source_url: https://community.home-assistant.io/t/zha-ikea-tradfri-wireless-dimmer-with-options-for-custom-actions/294350
trigger:
- platform: event
event_type: zha_event
event_data:
device_id: !input 'remote1'
mode: restart
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 }}'
#Knoppen rij 1
on_short_custom_1: !input 'on_short_custom_1'
off_short_custom_1: !input 'off_short_custom_1'
on_long_custom_1: !input 'on_long_custom_1'
off_long_custom_1: !input 'off_long_custom_1'
#Knoppen rij 2
on_short_custom_2: !input 'on_short_custom_2'
off_short_custom_2: !input 'off_short_custom_2'
on_long_custom_2: !input 'on_long_custom_2'
off_long_custom_2: !input 'off_long_custom_2'
#Knoppen rij 3
on_short_custom_3: !input 'on_short_custom_3'
off_short_custom_3: !input 'off_short_custom_3'
on_long_custom_3: !input 'on_long_custom_3'
off_long_custom_3: !input 'off_long_custom_3'
#Knoppen rij 4
on_short_custom_4: !input 'on_short_custom_4'
off_short_custom_4: !input 'off_short_custom_4'
on_long_custom_4: !input 'on_long_custom_4'
off_long_custom_4: !input 'off_long_custom_4'
lights_1: !input 'lights'
#Acties rij 1
- choose:
- conditions:
- '{{ command == ''on'' }}'
- '{{ cluster_id == 6 }}'
- '{{ endpoint_id == 1 }}'
sequence:
- choose:
- conditions: '{{ on_short_custom_1 }}'
sequence: !input 'button_on_short_1'
- conditions: '{{ not on_short_custom_1 }}'
sequence:
- service: light.turn_on
target: !input 'lights'
data:
transition: 1
- conditions:
- '{{ command == ''off'' }}'
- '{{ cluster_id == 6 }}'
- '{{ endpoint_id == 1 }}'
sequence:
- choose:
- conditions: '{{ off_short_custom_1 }}'
sequence: !input 'button_off_short_1'
- conditions: '{{ not off_short_custom_1 }}'
sequence:
- service: light.turn_off
target: !input 'lights'
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:
- choose:
- conditions: '{{ on_long_custom_1 }}'
sequence: !input 'button_on_long_1'
- conditions: '{{ not on_long_custom_1 }}'
sequence:
repeat:
while:
- condition: template
value_template: '{{ repeat.index < 10 }}'
sequence:
- service: light.turn_on
target: !input 'lights'
data:
transition: 1
brightness_step_pct: 10
- delay: 1
- 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:
- choose:
- conditions: '{{ off_long_custom_1 }}'
sequence: !input 'button_off_long_1'
- conditions: '{{ not off_long_custom_1 }}'
sequence:
repeat:
while:
- condition: template
value_template: '{{ repeat.index < 10 }}'
sequence:
- service: light.turn_on
target: !input 'lights'
data:
transition: 1
brightness_step_pct: -10
- delay: 1
#Acties rij 2
- choose:
- conditions:
- '{{ command == ''on'' }}'
- '{{ cluster_id == 6 }}'
- '{{ endpoint_id == 2 }}'
sequence:
- choose:
- conditions: '{{ on_short_custom_2 }}'
sequence: !input 'button_on_short_2'
- conditions: '{{ not on_short_custom_2 }}'
sequence:
- service: light.turn_on
target: !input 'lights'
data:
transition: 1
- conditions:
- '{{ command == ''off'' }}'
- '{{ cluster_id == 6 }}'
- '{{ endpoint_id == 2 }}'
sequence:
- choose:
- conditions: '{{ off_short_custom_2 }}'
sequence: !input 'button_off_short_2'
- conditions: '{{ not off_short_custom_2 }}'
sequence:
- service: light.turn_off
target: !input 'lights'
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:
- choose:
- conditions: '{{ on_long_custom_2 }}'
sequence: !input 'button_on_long_2'
- conditions: '{{ not on_long_custom_2 }}'
sequence:
repeat:
while:
- condition: template
value_template: '{{ repeat.index < 10 }}'
sequence:
- service: light.turn_on
target: !input 'lights'
data:
transition: 1
brightness_step_pct: 10
- delay: 1
- 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:
- choose:
- conditions: '{{ off_long_custom_2 }}'
sequence: !input 'button_off_long_2'
- conditions: '{{ not off_long_custom_2 }}'
sequence:
repeat:
while:
- condition: template
value_template: '{{ repeat.index < 10 }}'
sequence:
- service: light.turn_on
target: !input 'lights'
data:
transition: 1
brightness_step_pct: -10
- delay: 1
#Acties rij 3
- choose:
- conditions:
- '{{ command == ''on'' }}'
- '{{ cluster_id == 6 }}'
- '{{ endpoint_id == 3 }}'
sequence:
- choose:
- conditions: '{{ on_short_custom_3 }}'
sequence: !input 'button_on_short_3'
- conditions: '{{ not on_short_custom_3 }}'
sequence:
- service: light.turn_on
target: !input 'lights'
data:
transition: 1
- conditions:
- '{{ command == ''off'' }}'
- '{{ cluster_id == 6 }}'
- '{{ endpoint_id == 3 }}'
sequence:
- choose:
- conditions: '{{ off_short_custom_3 }}'
sequence: !input 'button_off_short_3'
- conditions: '{{ not off_short_custom_3 }}'
sequence:
- service: light.turn_off
target: !input 'lights'
data:
transition: 1
- conditions:
- '{{ command == ''move_with_on_off'' }}'
- '{{ cluster_id == 8 }}'
- '{{ endpoint_id == 3 }}'
- "{{ trigger.event.data.args[0] == 0 }}"
- "{{ trigger.event.data.args[1] == 50 }}"
sequence:
- choose:
- conditions: '{{ on_long_custom_3 }}'
sequence: !input 'button_on_long_3'
- conditions: '{{ not on_long_custom_3 }}'
sequence:
repeat:
while:
- condition: template
value_template: '{{ repeat.index < 10 }}'
sequence:
- service: light.turn_on
target: !input 'lights'
data:
transition: 1
brightness_step_pct: 10
- delay: 1
- conditions:
- '{{ command == ''move_with_on_off'' }}'
- '{{ cluster_id == 8 }}'
- '{{ endpoint_id == 3 }}'
- "{{ trigger.event.data.args[0] == 1 }}"
- "{{ trigger.event.data.args[1] == 50 }}"
sequence:
- choose:
- conditions: '{{ off_long_custom_3 }}'
sequence: !input 'button_off_long_3'
- conditions: '{{ not off_long_custom_3 }}'
sequence:
repeat:
while:
- condition: template
value_template: '{{ repeat.index < 10 }}'
sequence:
- service: light.turn_on
target: !input 'lights'
data:
transition: 1
brightness_step_pct: -10
- delay: 1
#Acties rij 4
- choose:
- conditions:
- '{{ command == ''on'' }}'
- '{{ cluster_id == 6 }}'
- '{{ endpoint_id == 4 }}'
sequence:
- choose:
- conditions: '{{ on_short_custom_4 }}'
sequence: !input 'button_on_short_4'
- conditions: '{{ not on_short_custom_4 }}'
sequence:
- service: light.turn_on
target: !input 'lights'
data:
transition: 1
- conditions:
- '{{ command == ''off'' }}'
- '{{ cluster_id == 6 }}'
- '{{ endpoint_id == 4 }}'
sequence:
- choose:
- conditions: '{{ off_short_custom_4 }}'
sequence: !input 'button_off_short_4'
- conditions: '{{ not off_short_custom_4 }}'
sequence:
- service: light.turn_off
target: !input 'lights'
data:
transition: 1
- conditions:
- '{{ command == ''move_with_on_off'' }}'
- '{{ cluster_id == 8 }}'
- '{{ endpoint_id == 4 }}'
- "{{ trigger.event.data.args[0] == 0 }}"
- "{{ trigger.event.data.args[1] == 50 }}"
sequence:
- choose:
- conditions: '{{ on_long_custom_4 }}'
sequence: !input 'button_on_long_4'
- conditions: '{{ not on_long_custom_4 }}'
sequence:
repeat:
while:
- condition: template
value_template: '{{ repeat.index < 10 }}'
sequence:
- service: light.turn_on
target: !input 'lights'
data:
transition: 1
brightness_step_pct: 10
- delay: 1
- conditions:
- '{{ command == ''move_with_on_off'' }}'
- '{{ cluster_id == 8 }}'
- '{{ endpoint_id == 4 }}'
- "{{ trigger.event.data.args[0] == 1 }}"
- "{{ trigger.event.data.args[1] == 50 }}"
sequence:
- choose:
- conditions: '{{ off_long_custom_4 }}'
sequence: !input 'button_off_long_4'
- conditions: '{{ not off_long_custom_4 }}'
sequence:
repeat:
while:
- condition: template
value_template: '{{ repeat.index < 10 }}'
sequence:
- service: light.turn_on
target: !input 'lights'
data:
transition: 1
brightness_step_pct: -10
- delay: 1
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment