ZHA EcoDim ED-10014 4 channel remote

A blueprint to work with lights (on/off/increase birghtness/decrease brightness)

Open your Home Assistant instance and show the blueprint import dialog with a specific blueprint pre-filled.

blueprint:
  name: ZHA - Ecodim, 4 Channel remote
  description: 'Control any light using the Ecodim remote on ZHA'
  domain: automation
  input:
    remote:
      name: Remote controller
      description: Remote to use
      selector:
        device:
          integration: zha
          manufacturer: EcoDim
          model: ED-10014
    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
    light_3:
      name: Light row 3
      description: The lights that will be controlled with row 3
      selector:
        target:
          entity:
            domain: light
    light_4:
      name: Light row 4
      description: The lights that will be controlled with row 4
      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/ronaldt80/85b9119a8f36bfca19a7011a12a9d2da
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 }}"
    - "{{ args == [0, 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 }}"
    - "{{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 == 'stop' }}"
    - "{{ cluster_id == 8 }}"
    - "{{ endpoint_id == 1 }}"
    sequence:
    - service: light.turn_on
      target: !input 'light_1'
  - 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 }}"
    - "{{ args == [0, 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 }}"
    - "{{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'
  - conditions:
    - "{{ command == 'stop' }}"
    - "{{ cluster_id == 8 }}"
    - "{{ endpoint_id == 2 }}"
    sequence:
    - service: light.turn_on
      target: !input 'light_2'
  - conditions:
    - "{{ command == 'on' }}"
    - "{{ cluster_id == 6 }}"
    - "{{ endpoint_id == 3 }}"
    sequence:
    - service: light.turn_on
      target: !input 'light_3'
      data:
        transition: 1
  - conditions:
    - "{{ command == 'off' }}"
    - "{{ cluster_id == 6 }}"
    - "{{ endpoint_id == 3 }}"
    sequence:
    - service: light.turn_off
      target: !input 'light_3'
      data:
        transition: 1
  - conditions:
    - "{{ command == 'move_with_on_off' }}"
    - "{{ cluster_id == 8 }}"
    - "{{ endpoint_id == 3 }}"
    - "{{ args == [0, 50]}}"
    sequence:
      repeat:
        while:
        - condition: template
          value_template: "{{ repeat.index < (100 / step_size)|int  }}"
        sequence:
        - service: light.turn_on
          target: !input 'light_3'
          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 == 3 }}"
    - "{{args == [1, 50]}}"
    sequence:
      repeat:
        while:
        - condition: template
          value_template: "{{ repeat.index < (100 / step_size)|int  }}"
        sequence:
        - service: light.turn_on
          target: !input 'light_3'
          data:
            transition: 1
            brightness_step_pct: "{{ step_size * -1 }}"
        - delay:
            milliseconds: !input 'step_delay'
  - conditions:
    - "{{ command == 'stop' }}"
    - "{{ cluster_id == 8 }}"
    - "{{ endpoint_id == 3 }}"
    sequence:
    - service: light.turn_on
      target: !input 'light_3'
  - conditions:
    - "{{ command == 'on' }}"
    - "{{ cluster_id == 6 }}"
    - "{{ endpoint_id == 4 }}"
    sequence:
    - service: light.turn_on
      target: !input 'light_4'
      data:
        transition: 1
  - conditions:
    - "{{ command == 'off' }}"
    - "{{ cluster_id == 6 }}"
    - "{{ endpoint_id == 4 }}"
    sequence:
    - service: light.turn_off
      target: !input 'light_4'
      data:
        transition: 1
  - conditions:
    - "{{ command == 'move_with_on_off' }}"
    - "{{ cluster_id == 8 }}"
    - "{{ endpoint_id == 4 }}"
    - "{{ args == [0, 50]}}"
    sequence:
      repeat:
        while:
        - condition: template
          value_template: "{{ repeat.index < (100 / step_size)|int  }}"
        sequence:
        - service: light.turn_on
          target: !input 'light_4'
          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 == 4 }}"
    - "{{args == [1, 50]}}"
    sequence:
      repeat:
        while:
        - condition: template
          value_template: "{{ repeat.index < (100 / step_size)|int  }}"
        sequence:
        - service: light.turn_on
          target: !input 'light_4'
          data:
            transition: 1
            brightness_step_pct: "{{ step_size * -1 }}"
        - delay:
            milliseconds: !input 'step_delay'
  - conditions:
    - "{{ command == 'stop' }}"
    - "{{ cluster_id == 8 }}"
    - "{{ endpoint_id == 4 }}"
    sequence:
    - service: light.turn_on
      target: !input 'light_4'
1 Like

Thanks, I bought the 2 channel version of this remote (ED-10013) and hope to use this blueprint as an example to get that version working in ZHA as well.

Too bad, the 2 channel version isn’t working in ZHA.
I can only see the battery level, can’t create automations on button events (so the blueprint won’t work…)

You have to look at developers tools → Events and then subscrive to all to see the events that your panel produces. None of these generate buttons or switches.

Thanks @PaulAntonDeen , I just recently got the time to look at the zha_events
They were actually similar to the ones in your blueprint. Just had to remove the light_3 and light_4 parts and define the right ‘model: ED-10013’
I now have a working automation.

Did you get the dimming working?

Thanks for writing this Blueprint. Unfortunaltey I get an error whilst importing the Blueprint
using the UI:

while scanning a simple key in "<unicode string>", line 320, column 1: </code></pre> ^ could not find expected ':' in "<unicode string>", line 321, column 1: <aside class="onebox githubgist" ... ^

Importing it using the github url worked…:zha_ecodim_remote_4_channel.yaml · GitHub

Got the same issue; dimming is somehow not working

@PaulAntonDeen Thanks so much! With this blueprint I managed to get my ED-10013 working and soon the other versions (1 and 4 button).

I do noticed using my first blueprint, that this blueprint is somehow dedicated to one device. When I have for example 6 - 8 switches soon, I need to have a blueprint for each of them, right?

What is the best condition to add when having multiple blueprints for these switches? Look at the Device ID or Serial number? Looking at the current conditions I think the blueprint will fire using any EcoDim switch in the network.

Also the dimming did not work on my end. I haven’t had the time to dig deeper into it, maybe I can get it working somehow :slight_smile:

Thanks!

With one blueprint you can make multiple automations. When you create a new one, you connect it to a specific panel (entity) so if they are the same type of ecodimm’s you should be fine.

I see, was thinking way too difficult! Thanks again.

@PaulAntonDeen.
Awesome bleuprint.
Thanks a lot!!

How is it possible to dim the lights with longer pressing?
And is it also possible to ad a scene?

1 Like

Hello,

First of all thanks for the effort and sharing.

Last week I bought a Ecodim 4 channel ED 10014 to control some hue lights. Was not working out as I hoped and I was really happy to find this blueprint.

Now there is something I can’t figure out by myself.

I have added the 10014 to Zigbee2MQQT. I can see the sensor in HA and get the right entries in the log.

When I trie to make an automation from the blueprint I have to specify a remote. But I don’t get any devices in the drop down list. I states no matching devices can be found.

Can someone explain to me what I forgot or what I did wrong?

You are using a zha blueprint. Zha != Zigbeemqtt

I just learned about Zha. Didn’t know about it before. Only knew zigbee2mqqt. Thanks

Hi again, I got the dimmer working in zha. Tried the blueprint again and this time it worked. But only the on and off function works.

Is it possible to get the dimming function to work at all?

I’m very happy with this blueprint, thanks a million. Unfortunately the dimming (long press) is not working yet. I have the ecodim 2channel version, so i removed the channel 3 and 4 from the configuration.
What am i missing to get the dimming feature working

I paired all my lights to the philips hue app. Then I used the ecodim manual to pair my 4 channel ecodim remote to the hue bridge and to setup the buttons to work with the lights. On/Off and dimming both work now in the hue app and manual by pressing the buttons. Even when home assistant is not running.