Issues with Curtain Motor Aqara ZNCLDJ11LM

I have a few Curtain Motors from Aqara, model ZNCLDJ11LM. Previously I had it configured to work zigbee2mqtt and it was working pretty good. But due to issues with reliability on z2m side, I decided to switch to ZHA build in HA. These motors have paired successfully, mostly I can control motor, but…

  1. It has created 4 different entities, where “switch” and “cover” entities are mostly doing same, but both are a little buggy

  2. Only on start cover entity showed status open or close, after this, it only shows opening/closing (so that it is at the operation of opening/closing curtain)


    I can properly set new position using slider, but it is not being updated properly if I just use the close/open option

  3. On the cover entity, we have 3 buttons, but because status is not being updated it is mostly stuck that the stop button works when close/open buttons are active randomly

  4. Limits look like are set properly and direction of movement also. I can properly set a new position using the slider, but it is not being updated properly if I just use the close/open button.

  5. For now mostly on/off switch is working correctly. It is being updated if I only use this button. I can toggle curtain state without a problem, but I have one automation that only opens the window at 40%.

  6. On/off sensor talks total nonsense. On my screenshot status is “Closed” when my curtains are opened.

I can help to debug it if you want. My Zigbee coordinator is flashed Sonoff Zigbee bridge on Home Assistant 0.114.3. I already reset limit switches in case if it detects wrongly, but no issues with it. When I ask to close it will do a proper movement.

Same exact issue here, with the addition that for me the direction of the open/close is inverted :expressionless:

You have found a solution?

same issue…

While this doesn’t fix the core problem (The curtain states are still inverse) I have set up a workaround that more or less works for my use case:

I labeled my aqara curtain devices in a way that I can identify them as the “non functional” ones… aka “Living Room Curtains DO NOT USE” - just so I can ensure I wont accidentally use it in an automaiton or something in the future…

ZHA creates a switch entity for the curtains, and that worked flawlessly for me to fully open/close without messing up the states updating properly.

I then created a Template Cover that bypasses the functions that would fail and uses the switch and the set position features.

- platform: template
  covers:
    living_room_curtains:
      device_class: curtain
      friendly_name: "Living Room Curtains Fixed"
      value_template: "{{ is_state('switch.living_room_curtain_switch_on_off','off')}}"
      open_cover:
        service: switch.turn_off
        data:
          entity_id: switch.living_room_curtain_switch_on_off
      close_cover:
        service: switch.turn_on
        data:
          entity_id: switch.living_room_curtain_switch_on_off
      stop_cover:
        service: cover.set_cover_position
        data:
          entity_id: cover.living_room_curtain_zigbee
          position: 50

This is of course made around my needs, and I’m nowhere near being well versed in yaml, so I’m sure there’s plenty of room for improvement… But at least it creates a usable entity I don’t have to worry about going out of whack if I press the open / close buttons…

Hope this helps!