ZHA EcoDim ED-10014 4 channel remote

I’ve managed to get dimming fixed
You can try the blueprint, download it here: A Home Assistant blueprint for ZHA to control lights using the EcoDim ED-10013 2 Channel Remote · GitHub

Please let me know if it works for you.

A community post for the 2 channel remote is now available as well:

I’ve edit the blueprint a little bit.

With the basics of the IKEA blueprint and the settings from @PaulAntonDeen and @TexTown.

Now I have a setup with all buttons (long and shot pressing) and using any action you want.

Have fun with it:).

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

i am trying to use the ecodim-10015, thinking just changing the model number in yaml bleuprint.
But when I am trying to save the yaml is says: Message malformed: extra keys not allowed @ data[‘blueprint’]

Anyone got the ecodim-10015 working?

I don’t know. In my oppinion you have to change only the model: ED-10014 to model: ED-10015.

Maybe you can make an new Yaml. to copy all of it, and change it in your own yaml?

This is my adjustment for the Blueprint.
Ecodim: ED-10013

blueprint:
  name: ZHA - Ecodim, 2 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-10013
          multiple: false
    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.0
          max: 25.0
          unit_of_measurement: '%'
          mode: slider
          step: 1.0
    step_delay:
      name: Step Delay
      description: The time between dimming steps (ms)
      default: 1000
      selector:
        number:
          min: 100.0
          max: 2000.0
          unit_of_measurement: milliseconds
          mode: slider
          step: 1.0
  source_url: https://gist.github.com/PaulAntonDeen/4089539eb42f7bcf11a945630c38fec4#file-zha_ecodim_remote_4_channel-yaml
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 == ''[<MoveMode.Up: 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 == ''[<MoveMode.Down: 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 == ''[<MoveMode.Up: 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 == ''[<MoveMode.Down: 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

It worked, had some problems with creating the automation.

anyone has a blueprint for zigbee2mqtt? :wink:

Hello,

I recently started using the Ecodim, 2 Channel remote Model ED-10012 without success.
When I operate group 1 button 1 nothing happens, group 1 button 0 nothing happens.
When I operate group 2 button 1, both lamps turn on, group 2 button 0 turns lamp 1 off, but only 2 remains on. This can only switch be disabled on the micro switch.
Can anyone help me or is this switch brokent?
Greetings PeWi56

anyone ? or is it possible to change from zha to z2mqtt ?

edit: found solution

Hey @antonov124 ,

can you please share your solution for zigbee2mqtt?

Thx

Also interested in your solution for z2mqtt.

I’ve been trying to rewrite this blueprint for z2m, with no luck so far. I’m not yet experienced enough with yaml code to get it working. What was your solution?

Here is a Zigbee2mqtt automation for the ED-10012:

alias: EcoDimKüche
description: ""
triggers:
  - entity_id:
      - sensor.ecodimkuche_action
    to: on_1
    id: On1
    trigger: state
  - entity_id:
      - sensor.ecodimkuche_action
    to: brightness_move_up_1
    id: Up1
    trigger: state
  - entity_id:
      - sensor.ecodimkuche_action
    to: off_1
    id: Off1
    trigger: state
  - entity_id:
      - sensor.ecodimkuche_action
    to: brightness_move_down_1
    id: Down1
    trigger: state
  - entity_id:
      - sensor.ecodimkuche_action
    to: on_2
    id: On2
    trigger: state
  - entity_id:
      - sensor.ecodimkuche_action
    to: brightness_move_up_2
    id: Up2
    trigger: state
  - entity_id:
      - sensor.ecodimkuche_action
    to: off_2
    id: Off2
    trigger: state
  - entity_id:
      - sensor.ecodimkuche_action
    to: brightness_move_down_2
    id: Down2
    trigger: state
conditions: []
actions:
  - choose:
      - conditions:
          - condition: trigger
            id:
              - On1
        sequence:
          - action: light.toggle
            data: {}
            target:
              entity_id: light.theke
      - conditions:
          - condition: trigger
            id:
              - Up1
        sequence:
          - action: light.turn_on
            metadata: {}
            data:
              brightness_step_pct: -10
            target:
              entity_id: light.theke
      - conditions:
          - condition: trigger
            id:
              - Off1
        sequence:
          - action: light.toggle
            data: {}
            target:
              entity_id: light.kuchendecke
      - conditions:
          - condition: trigger
            id:
              - Down1
        sequence:
          - action: light.turn_on
            metadata: {}
            data:
              brightness_step_pct: -10
            target:
              entity_id: light.kuchendecke
      - conditions:
          - condition: trigger
            id:
              - On2
        sequence:
          - action: light.toggle
            target:
              entity_id:
                - light.essen
            data: {}
      - conditions:
          - condition: trigger
            id:
              - Up2
        sequence:
          - action: light.turn_on
            metadata: {}
            data:
              brightness_step_pct: -10
            target:
              entity_id: light.essen
      - conditions:
          - condition: trigger
            id:
              - Off2
        sequence:
          - action: light.toggle
            data: {}
            target:
              entity_id: light.dunstabzug
      - conditions:
          - condition: trigger
            id:
              - Down2
        sequence:
          - action: light.turn_on
            metadata: {}
            data:
              brightness_step_pct: -10
            target:
              entity_id: light.dunstabzug
mode: single

But I keep having trouble with the switch: after connecting via zigbee2mqtt it works fine for a few button pushes, but then one row (either top or bottom) stops working.
I have the 8 button switch from ecodim as well and it is now working after about 20 connects and disconnects under z2m, several button rows stopped working after a few actions and now finally (randomly) it is working. Has anyone solved that problem?