Zemismart Blind motor - configuring in Local Tuya

I’ve recently installed a Zemismart blind motor on a roller blind in my study and had some issues understanding which configuration options to select when integrating it into Local Tuya. I couldn’t find plain English explanations of what the settings did. This might help you.

This assumes you have obtained the Local Key from the TuyaSmart website: Tuya IOT website I won’t go through that as there are guides available on YouTube and elsewhere. It also assumes you have paired the blind motor to the Tuya app via the 2.4ghz wifi network at home.

After you have installed Local Tuya into Home Assistant (via HACS), you then need to integrate each device.

  1. Go to “Configuration” in the HA menu and select “Integrations”. Down in the bottom right-hand corner you will see the “Add Integration” button.

  2. Click on that button and search for Local Tuya. Click on that and it will offer you a “Device Discovery” box. The Tuya device should show up identified by the Device ID, IP address and/or friendly name. Select that and it will open a configuration box: “Add New Entry”.

  3. First it asks you for the "ID" and offers 5 options which are identical to the options mentioned below. To be honest I have no idea what the relevance of each option is - and it did not seem to matter which one I selected, but you cannot change this later. If someone can explain the options please enlighten me.

  4. Next you enter a friendly name eg: Blind-Lounge

  5. Then the Open_Close_Stop commands. I selected “open_close_stop”. The other options include fz_zz-stop, 1-2-3 and on_off_stop. There is no explanation as to what the others do, but open_close_stop works for me.

  6. Next you decide if you want positioning mode or timed mode. They are self explanatory - positioning as in open/closed or time as in “run the open command for 20 seconds” I selected “Positioning

  7. The next two seem the most important in terms of what the blind will do. If you selected “Positioning Mode”, it asks for “Current Position” I selected “1 (value: close)

  8. Then you enter the “Set Position”. If you select “7 (value: opening)”, you will have the option to open, close and stop the blind.
    If you select “2 (value: 100)”, you will also have the option of setting an intermediate position such as 55%. This is what I selected. Didn’t try the others because this worked for me.

  9. The Invert option changes the curtain % setting from 100=open to 100=closed.

  10. The timing number is if you selected the time mode above.

That’s it. You can come back later via the Configure option in Local Tuya to change 7 and 8. This comes up under “Cover” and the friendly name should be obvious.


Thought I would do an update after a lot of trial and error testing here.

Starting note: The options will have different numbers depending on the version of your Zemismart blind motor and the way its firmware is written.

  1. On two of mine - Model M515EGBW V2 - the options are
    2(a numeral*);
    5(False); and

  2. On an earlier version - Model M515EGB - there are five options:
    2(100 - a numeral);
    7 (opening);
    10(0 - a numeral).
    The earlier version is easier to set-up and reports its position in the Lovelace card. V2 does not report.

  3. *The “numeral” beside the option is the position of the V2 blind when you integrated it into Local Tuya (one blind in my case = “92”). The numerals in the older version are the open and close position ie: 100 and 0 of the blind.

4. These notes are based on the newer V2 model.

At point 3 where I suggested selecting “1”.
I tried the other options and the success was very limited despite trying all 16 combinations of the other commands. Update Advice: stick with "Option 1"

At point 7 "Current Position"
After trying the options (value, stop, opening, false) and looking at what they do in States reporting (under Developer Tools) the penny dropped. This tells HA how you want the Current State reported (yeah I know it’s obvious now I’ve looked at States).

If you select value, it will report the Current Position of the blind, which seems the most useful. If you select “stop” I think it is just reporting that blind is not moving etc. Update Advice - select "Value 100"

At Point 8 “Set Position” where I suggested select "Option 2 (Value - numeral eg 100)"
Update Advice unchanged This allows you to use the slider control. None of the other options appear to enable this. I’m still not sure what the other options do except I assume Option 5 means it is disabled.


Nice write up Steve. This made life super easy for getting a couple of zemismart blind rollers going.

I had used the latest version of tuya local (3.2.2) and even though it connected to the blinds it would puke and fill the logs with connection errors. Obviously showing the device and entity as unavailable

I removed 3.2.2 from HACS and re installed 3.2.1 then the blinds were connected and also the device up and down buttons were available.

And for some reason (this integration is tuya local) I had to open up ports to the tuya cloud for it to install and connect to the blind motors. After integratin installation firewall was rerun and device kept working. I don’t know if this is normal behaviour

thanks mate :+1:

1 Like

You’re welcome. I hope they continue to behave. I am running Local Tuya 3.2.2.

The only ongoing issue is that one of the blinds wrongly reports its position when the blind is not moving. At the moment it will report its position state as 29%, irrespective of where it actually is. I can reset the state, but as soon as I move them outside an automation it reverts.

On the availability issue, I had that when I was trying to connect via an Asus router set up for mesh. The connectors did not like that at all. I added an old wireless router to the network just with 2.4ghz turned on with a separate SSID and all blinds were much happier. I’ve since hooked up a TP-Link AP (EAP-225) and turned off the Asus wireless and everything is stable - still with the occasional dropout, but only for about 30 seconds.

I haven’t disconnected my blinds from the internet just yet but have disconnected an Arlec smart switch after installation without issue.

The weird thing here is, i cannot pull up the blind:



Even when i lower the blind. The button up won’t be active.

There are a couple of possibilities.

I have one blind that will not accurately report its position - at the moment it always goes back to 67%. No matter whether up or down it reports 67%.

Does your blind not offer down when it its fully open? If so on the next screen in the configuration set-up, you’ll see a check-box down the bottom that says something like “reverse 0- 100%”. Select that and say okay.

This might fix that arrow.

Another option is to install the “Blind Card” via HACS - Frontend. It’s up and down arrows remain active.

@Steve61, thanks for your work on this.

At point 7 "Current Position"
If you select value, it will report the Current Position of the blind, which seems the most useful. If you select “stop” I think it is just reporting that blind is not moving etc. Update Advice - select "Value 100"

Am I right in thinking that “Value 100” is option 2? I tried it and things aren’t quite right.

That’s it. You can come back later via the Configure option in Local Tuya to change 7 and 8. This comes up under “Cover” and the friendly name should be obvious.

I can’t seem to find 7 and 8 when I go to the “Local Tuya” instance for my blind, and click “Configure”:


I switched from the old Tuya (cloud) integration add-on to the newly internalised official Tuya integration, and none of my blinds show up, but everything else seems fine. I was hoping I could just add the blinds in using Local Tuya, until the official integration added support for covers.

I get the same issue as @leonkunst88 where the arrows aren’t always clickable, and most of the time they’re both greyed out. I wonder if it’s just a matter of editing these options. I’m running 3.2.3.

On the last thing first - about the arrows for up and down. I found that issue on some cards and no matter what I did, the results just kept changing, with the required arrow greyed out. I suspect it is because the blinds rely on an RF link and don’t really report their positions accurately, so the communication is a bit hit and miss. When I changed to using the custom “Blind-Card” in HACS, all the controls remain available, even when the blind is at the limit… but at least that is better.
Blind Card for HACS

On the options in configuration.
There is another screen after you hit submit and that is what I assume you are referring to:

Do you mean the options under “Current Position” and “Set Position”?

If that is what you are referring to there are a couple of points:

  1. The value “100” comes from the position of the blind when you linked it into Tuya Local on the Tuya IOT website. Depending on your app settings, if the blind is fully open it might register as zero, while fully closed will give you 100 - or vice versa. If the blind is half open you will get 50. I don’t think it really matters what the number is. It is just saying it will report position as a % number.
    If you select another option, aside from less functionality, it might only report that the blind is “closing” or “open”, even if it is stopped at 50%.

  2. The number of options presented depends on the model and firmware of your blind. The example above is from my first purchase - so I get 1, 2, 5, 7, and 10. On the later blinds (V2) I am offered only four options… but it still gives value: 100 (or whatever the blind was set at)

Hope that helps.

Thanks Steve.

I’m not using a Zemismart blind motor, so I imagine the setup is somewhat different (I get 1, 2, 3, 5, 7, 8, 9, 10 and 11) but the same principles should apply:


I think I have three things causing the arrow problem:

  1. My mesh wifi seems to have been a bit sub-par of late, near the blind I’m trying to setup, and it’s actually becoming unavailable if I take a look in the Tuya app.

  2. When I run the Tuya app, it connects to the blind, and that causes HA to no longer be able to connect. The blind only seems to allow one local connection at a time. Once I exited from the app, and swiped it away, things became a bit more reliable.

  3. I tweaked the DPS values I was using, and that seemed to help. For my blind, I used “1” for ID, “2” for set position, and “3” for current position.

I found that I could view the DPS strings by looking in the file config/.storage/core.config_entries. These gave me some hints as to what IDS numbers to use.

I also found that I could edit core.config_entries to tweak the values, and then reload HA. I’m assuming this is having an effect, because the up/down arrows seem to be correct. Or it might have been one of the other things I did.

I’m pretty sure the Zemismart is just a rebadged version of that. The difference would be in the firmware and maybe a variant of the board.

I was running a mesh (ASUS) and found almost all my smart items would play up with it with multiple disconnections and poor performance. I ended up disabling the ASUS wifi and hooked up a TP-Link EAP to the ASUS - left the Ethernet routing and general control to the ASUS. Everything is now very happy - no wifi dropouts.

My blinds use a wifi-to-RF bridge for each motor and that adds issues. The dongle (bridge) is plugged in and sends and receives messages via wifi, but transmits commands to the blinds via RF, so that is why the comms are not good and position reporting I think really just assumes the last command was carried out.

Hi, may I ask. Are you using the zemismart zigbee or wifi? I want to know if the M515EGB is the one you are referring to above. And does this work in homeassistant without an app or an app to (pre)configure it? Thus will your zemismart work local without cloud/internet? Thanks in advance.

Hi @sender . I’m not sure if you were asking me or @jezzaa

If it is me, my blinds are the M515EGB or a variant of it. The Zemismarts use a wifi dongle to communicate with HA, but then use an RF command (like a remote control) to send commands to the blind.

You do need the TUYA or SmartLife app to set-up the blinds initially. In using TuyaLocal in HA, my commands are local and once set up, I can block the blinds dongle from the internet and they still work. You do need to do that properly via your router - the TuyaLocal GitHub pages give some advice about settings so they don’t loop themselves in DNS requests.

Ok thanks. I have order the M515EGB which seems to be a zigbee and not a wifi variant. According to blackadder it must be compatible with 3 zigbees such a s ZHA, deconz and zigbee2mqtt. I use deconz… will let know if it works…

EDIT: Ali sucks… they sent me a wifi version…

So I am also playing with this… What a HASSLE! but I got it in hass now. Though I have some strange issues.

I have set the “physical” sart and stop via the paper manual. That works when operating locally and sometime via hass/app.

But despite having set the physcial imits, it just passes down the bottom when I operate via the app and/or home assistant?
Also up and down are reversed in home assistant and it is not easy to change that other than start over isn’t it?

I have two of the wifi AM43-0.45 versions of these motors from Zemismart and it seems that while they work great as motors - their control / integration leaves a lot to be desired if not using the tuya cloud - which I really really don’t want to use. I have integrated with localtuya and they are not reporting their position back at all…but this shouldn’t effect a set_position command anyway? does it matter what the current % is if hass tells it to go to 1%?

For some reason to close them i have to send the open position command, then the close position command - and vice versa to open them ( close, then open ) (ive set these up as scripts) - which gets mixed up if someone uses the button on the motor to move them… close becomes open and open becomes close…

I’m wondering if I can flash it to tasmota would it be more reliable?

Did you have any luck in taming this beast?

I got mine working (Zimismart M2805EGB Shows as a CW2GT V2 in Tuya IoT) with the settings.
ID:1 (stop)
Command set: open_close_stop
Positioning Mode: Position
Current Position: (LEAVE BLANK)
Set Position: 2 (Value 100)
Invert 0-100 Position: YES

With these settings the blind will open, stop and close with the buttons.
It will report the current position with the slider.
Setting a position with the slider will move the blind to the chosen position.

Using Steve61’s settings
“Point 7. The next two seem the most important in terms of what the blind will do. If you selected “Positioning Mode”, it asks for “Current Position” I selected “1 (value: close)””

The slider would only report the current position and could not set a position.

It’s interesting - it seems a bit hit and miss at times.

I find I can use a slider to set position, but the reporting is intermittent. I will quite often have a blind showing as open when it is closed…. But it comes and goes.

I experience the same issue, I find opening it completely then switching off the wireless module helps reset its position when it’s lost or out of sync.

I purchased a zemismart Zemismart Tuya WiFi Roller Shade Driver DIY Blind Driver, model M515EGWT V2

I followed instructions at Get your Tuya Device Local Key - YouTube to get the local_key and note the Get Device Specification Attributes from to the Tuya website. As I understand it, for this particular model there are DP_IDs for Function (which I assume we can issue a “call service” for) and Status (which I assume are read-only attributes). To summarise:

Functions  Status 
dp_id      dp_id  code                type      values               Status
 1          1     control             Enum      open,stop,close      stop
 2          2     percent_control     Integer   0-100, step 1        39
 5          5     control_back_mode   Enum      forward,back         false
            7     work_state          Enum      opening,closing      opening
           12     fault               Bitmap    Label: motor_fault   0
16         16     border              Enum      up,down,up_delete,
                                                remove_top_bottom     down
19         19     position_best       Integer   0-100, step 1         0

DP 1 and 2 seem to give me what I need – ability to open, close and a percentage between. Looks simple, and I did get it mostly working early on, but tried to make an small improvement.

The HA and localtuya documentation is technical, by developers for developers, so no use to anyone who hasn’t already got it figured out. I found several forums posts which give the DP numbers they used for their particular model but without any mention of what those DP_IDs are for … and so no help to someone with a different model :frowning:

I have spent over three days trying to get my head around this … I started a document of my steps, but it’s currently 6 pages long, mostly core error logs. And then I discovered this thread, where people seem to have figured it out.

I have uninstalled and reinstalled the localTuya integration several times. Now it seems that whatever I do generates different errors on the HA Core log, and I’m almost at the point of wiping the whole HomeAssistant, and starting again on a new card.

But first…

  1. Are any of you getting error in the HA core log ? Is this normal for localTuya ?

  2. Has anyone else got Zemismart model M515EGWT V2 working, and would share your configuration ?

Thanks for listening to my moaning :frowning: