TUYA zemismart curtains cover position

Hello everyone,

I set up a zemismart smart curtain through the tuya component, is it possible to get the current position of the curtain (some state parameter I guess) ?


The Tuya integration doesn’t seem to report state most of the time, so maybe not.

I’m actually trying to set my Zemismart curtains to a set position. I can do it in the app but there is no slider in HA. Have you at least got that working through a script or something?


in the end I don’t think there is a way to know the position, as the tuya component doesn’t expose the value.

Have you tried using the cover.set_cover_position service (cover)?

I haven’t tried it yet, but the cover component should do it, unless the tuya component has the same limitations in setting the position as in getting it.


Did you get this?

I have the same issue.
I bought two Zemismart ZM25TQ motors thinking I would be able to control the position with either ZHA or Zigbee2MQTT. It just doesn’t work.
I believe the problem is that the motor needs the minimum and the maximum points to be set before you can use position however the max and min points can not be set from HA with any intergration and it is only available in the app which also requires a tuya hub/bridge.

I woulder if position would work in HA after setting the max and min points in the tuya app, then pairing again to HA.

One other problem is that you can not pair the 433mhz remote without the tuya bridge/app.
There is no real reason to use this device with home assitant when the position control is not available since any 433mhz controlled shade motor could be controlled with HA with a simple Esphome 433 bridge.

OK, following my previous post I discovered how it is done.
The position control works fine in home assistant.
First of all as I have suspected you have to set the max and mix positions somehow (outside of home assistant) for the position feature to work.
I was able to pair the 433mhz remote and even better I was also able to set the max and mix points with just the remote. This is a bit confusing because the included manual do not describe this at all.

To pair the 433mhz remote, i just clicked the motor pair button once and then held the up button on the remote until they were paired.
Now the motor is controllable with the remote.
To set the max position, bring it to the max position and stop it.
Click the recessed ‘set’ button behind the remote once and hold the up button on the remote until the motor makes the small movement to indicate success.
To set the min position, move to position, click recessed set once and hold the down button until confirmed with movement.
Now the position command works as an mqtt command or from the home assistant device control.

1 Like

I have tried the position control both with ZHA and Zigbee2MQTT and it works in both of them however I must say that position control works better in Zigbee2MQTT. ZHA can not perfectly control or report the position attribute correctly 100% of the time however it works fine with Zigbee2MQTT.

Also, pairing the device with zigbee does not remove the max and min points so just finish the setup with the remote first, then you can do the zigbee pair and position and position control should work fine then.


Just played with one of these motors myself in ESPHome - the top and bottom limits are set by datapoint switches in the Tuya protocol.

dp103 is the lower limit. dp105 is the upper limit (no idea about dp104 - might be “middle” whatever that means, or it might be pairing a remote - which I don’t have).

Basically move the shade to the lower limit, and toggle datapoint 103 to ON by whatever means. Then move it to the upper limit and do the same with 105. You leave those switches on, and the limits are enforced (the Tuya MCU persists them for you).

So to re-iterate: if you have any ability to access datapoints, those are the ones you need (might not help here obviously).