[RELEASE] Zemismart Zigbee Blind Driver

Can you add the level settings that were in the original? Because when you have multiple shades combined through HE "Shade Controls" app your driver does not respond when changing level, since apparently it only knows level changes not position.

Also the HE "Alexa Echo Skill" is the same it works with level not position.

I use this device driver and it works with Alexa but with no feedback to Alexa.

Also have a PENDING heartbeatcheck on the Device Activities.

A mí me funciona bien con Alexa, le digo Alexa pon "estor" al 80 , tienes que decirle el % que lo quieres

I'm using this driver for my curtain robot, which works ok so far.

In the past several weeks, there have been some major additions and improvements to this Zemismart Zigbee driver. These changes are available in a new development branch: https://raw.githubusercontent.com/amosyuen/hubitat-zemismart-zigbee/development/Zemismart%20Zigbee%20Blind.groovy

The improvements in version 3.2.0 should have an effect on the following models (Manufacturers) : _TZE200_rddyvrci, _TZE200_fzo2pocs, _TZE200_wmcdj3aq, _TZE200_cowvfni3, _TYST11_cowvfni3, _TZE200_nueqqe6k, _TZE200_zah67ekd, _TZE200_xuzcvlku, _TZE200_gubdgai2, _TZE200_5sbebbzs, _TZE200_nogaemzt, _TZE200_xaabybja, _TZE200_yenbr4om, _TZE200_zpzndjez, _TZE200_zuz7f94z, _TZE200_rmymn92d

A brief summary of the changes in version 3.2.0 compared to version 3.0.0 (June 2021) :

  • Added more than 20 new Tuya (Zemismart) Zigbee blinds/motors manufacturers fingerprints.
  • Depending on the particular motor 'Manufactuer', the driver will:
    • use automatically the correct commands for Open/Close/Stop (some newer models had the Open, Stop and Close commands swapped in various combinations)
    • report correctly the current and the final positions;
    • show correctly 'closed' as position 0% and 'open' as position 100%
    • show correctly the final 'Open', 'Closed' or 'Partially Open' states for these new models that do not send the final state and stuck on 'opening' or 'closing'.
  • Some models repot the destination and the current position (while moving) in one and the same way, which resulted in 'jumps' of the position reporting.
  • Some models do not accept 'Open' and 'Close' commands, these are now substituted with SetPosition 100% / 0% commands.
  • Added capability 'Switch' and 'Switch Level'- needed for Google Home full compatibility. Commands 'on', 'off' and setLevel() can be now used for opening and closing the blind/curtains.
  • Added capability 'Battery' (unfortunately, the battery reporting is implemented by Zemismart for just a few models).
  • Added Info log option (default value is 'on')
  • Improved debug and trace logs (more information useful for troubleshooting)
  • Added 'Show Advanced Options' preference(default value is 'off'). When switched 'on', the Preferences section will allow modifying of some new 'advanced' parameters,
    which normally should have their default settings already automatically configured correctly, depending on the particular model/Manufacturer :
    • 'Invert position reporting' - turn the option on if your model reports the current position inverted (closed should be always reported as 0%, open should be always reported as 100%)
    • 'Ignore the first Position report' - turn the option on if the position reporting jumps between the final and the current position.
    • 'Substitute Open/Close commands with SetPosition' - turn the option on if Open and Close commands do not work for your model when configured in 'lift' mode
    • 'Position report timeout, ms' - increase the timeout if the motor reports Open or Close while still in motion.
    • 'Enable trace logging' and 'Log unexpected messages' - the existing detailed debug logging options are now moved to the 'Advanced' section. Normally these should
      be left disabled.
  • Configure button now loads the default settings for the device, depending on the 'Manufacturer' value (similar to the default values loaded when the motor is first paired to HE hub)
  • Some other minor improvements and bugs fixes.

Version 3.3.0 (2022-12-30) :

  • adds support for TS0601 and TS130F models of Tuya/Moes Curtain switches: _TZ3000_zirycpws, _TZ3000_1dd0d5yi, _TZ3000_4uuaja4a, _TZ3000_fccpjz5z, _TZ3000_vd43bbfq, _TZ3000_ke7pzj5d
  • new advanced option "forcedTS130F" - use only for these TS130F curtain switches, that are not automatically recognized by HE hub.
  • new Calibrate command - works for some models only (ZM85, TS130F and Moes TS0601 curtain switches)

As there were a lot of changes in the driver code, I would like to ask these of us who use the old 'production' version 3.0.0 (available in HPM) and have the time to test the latest version (available in GitHub development branch linked above) to try it out and let me know if there are any remaining issues.

The new versions 3.2.x / 3.3.x should be backward compatible with all the previous models using this driver. The update to the new version is pushed via Hubitat Package Manager (HPM).

Updates :

  • 3.2.1 (2022-05-23) [Amos Yuen] - Fixed bug with parsing speed
  • 3.2.2 (2022-05-26) [kkossev] - _TZE200_zah67ekd and _TZE200_wmcdj3aq Open/Close/Stop commands fixes
  • 3.2.3 (2022-09-22) [kkossev] - _TZE200_zpzndjez inClusters correction; secure updateWindowShadeArrived() for null values;
  • 3.2.4 (2022-12-02) [kkossev] - added _TZE200_7eue9vhc ZM25RX-0.8/30; _TZE200_fdtjuw7u _TZE200_r0jdjrvi _TZE200_bqcqqjpb
  • 3.2.5 (2022-12-12) [kkossev] - _TZE200_fzo2pocs new device version fingerprint ; added _TZE200_udank5zs; secured code for missing 'windowShade' state; unscheduling of old periodic tasks; _TZE200_7eue9vhc not inverted
  • 3.3.0 (2022-12-30) [kkossev] - TS130F Curtain Modules support; _TZE200_nhyj64w2 Touch Curtain Switch - moesCalibraion; ZM85 _TZE200_cf1sl3tj support, including calibration;
  • 3.3.1 (2023-03-09) [kkossev] - added _TZE200_hsgrhjpf
  • 3.3.2 (2023-08-10) [kkossev] - replaced some warnings with debug level logs; removed 'enable trace logging' and 'log Unexpected Messages' options;
  • 3.3.3 (2023-10-20) [kkossev] - _TZE200_zah67ekd checks; code reformatting;
  • 3.3.4 (2023-12-13) [kkossev] - (dev.banch) added _TZE200_cxu0jkjk (AM02); _TZE200_nv6nxo0c
  • 3.4.0 (2024-03-02) [kkossev] - (dev.banch) Groovy lint; added targetPosition attribute; minor bug fixes; added _TZE200_gaj531w3

Zemismart Zigbee Blind driver version 3.2.2 is now available for update from HPM.


If you want to set it as a Blind type so google home can control it through the app (and not just voice)

capability "Window Blind"
to the driver .groovy file (around line 50 - you'll see the other ones)

  • Device type: Window Shades
  • Google Home device type: Blinds
  • Device traits
    • Open/Close
      • Set Open/Close attribute to position
      • Set Open Position Command to setPosition

You may or may not have to check the reverse button - I did not, so 100% is fully open.

1 Like

Hi All,

Hopefully this is an easy one for someone.

I've got several SwitchBot curtain motors which report 0% = Open and 100% = Closed

Now the driver I'm running off here is the opposite, so my dashboard is opposite which is setting my OCD off something crazy, is there a way to reverse the values without causing trouble?

I cant spot anything really obvious in the driver code.



Does not making the selection below, from within the driver, make the change for you ?

1 Like

That doesnt seem to reverse the values no, unless I'm doing something wrong.

Did you click save then configure? Also you could try reverse


The motor is fine, and its reporting open/closed fine - so reversing the motor isn't going to do anything.

Just this driver reports Open as 100% and closed as 0%, but everything else is the other way around (that I have). I guess there is no official guidance on which way around they should be in the drivers code.

@kkossev any ideas?

@kraegd try changing this option:


Also, please post the device 'Manufacturer' from the web page data section.

That looked exactly like what I required (cant believe I missed that). Sadly it didn't work.

  • model: TS0601
  • manufacturer: _TZE200_68nvbio9

Just going through your Driver code and noticed this:

manufacturer:"_TZE200_68nvbio9" ,deviceJoinName: "Tuya Tubular Motor ZM25EL"

This isn't a Tubular motor - will that make a difference?

I noticed exactly the same! And your model is not Zemismart white label, but SwitchBot .. is it this one ?

1 Like

Nope - https://amzn.eu/d/3p4sYPB
Think its this one direct - ZH Li-battery Blind Chain Motor for All Traditional Manual Roller Blinds, Zebra Shade, Honeycomb Blinds with Zigbee | Blinds Chain Motor | Tuya Expo

Its a Tuya Blind Motor (same as ZemiSmart). Its working perfectly, just reporting the wrong way around

Instructions show "ZM85EL-1x"

Thanks, I will look at the details a few hours later. Should be able to make it work, there is often confusion with the double reversion of the direction - once from the device itself and second time from the software.