Zemismart ZM25 Zigbee howto (Tubular roller blind/shade/cover motor)

Hi,

I added this model via ZHA to my HA setup. The action (open/close) part is working fine. The only thing I wish I had is a sensor indicating the battery level of the tubular motor. I wonder if this is a ZHA issue.

Has anyone managed to get the battery status via Zigbee2MQTT or ZHA?

1 Like

I bought the Zemismart ZM25TQ without a remote control.
I tried using your code to set the upper and lower limit, but it says it is invalid.
I must be doing something wrong. :pensive:

If anyone can help me, I will be very grateful

image

image

I can sadly confirm that the battery status is not visible in ZHA for me either. Otherwise, it functionally works fine.

Edit: Battery info doesn’t show in Z2M either for me, and is also discussed here.

Edit 2: Battery info doesn’t show in the native Tuya cloud integration either (when using a Tuya Zigbee gateway). It only shows in the Tuya app in the settings for each device. Very strange way of hiding the battery info.

Hi,

I have 5 of these and 2 of them, although saying connected in Z2M, will simply not respond when clicking up/down. They initially did all work fine, but one day, they simply stopped responding.

I can use the remote to open them, but cannot control them over MQTT,

The one I actually removed from Z2M, factory reset and then tried to join again and it won’t join again either.

UPDATE: I clicked reconfigure on the one that was still connected and now it is working again, however the other one will not join again…

UPDATE2: There is actually another one of the blinds that has stopped responding over MQTT. When I tried reconfigure again, I get:

Failed to configure 'study blinds', attempt 1 (Error: Read 0xb0c7defffefb0871/1 genBasic(["manufacturerName","zclVersion","appVersion","modelId","powerSource",65534], {"timeout":10000,"disableResponse":false,"disableRecovery":false,"disableDefaultResponse":true,"direction":0,"srcEndpoint":null,"reservedBits":0,"manufacturerCode":null,"transactionSequenceNumber":null,"writeUndiv":false}) failed (Timeout - 15870 - 1 - 30 - 0 - 1 after 10000ms) at Object.start (/opt/zigbee2mqtt/node_modules/zigbee-herdsman/src/utils/waitress.ts:63:23) at EZSPAdapter.sendZclFrameToEndpointInternal (/opt/zigbee2mqtt/node_modules/zigbee-herdsman/src/adapter/ezsp/adapter/ezspAdapter.ts:492:47) at Queue.execute (/opt/zigbee2mqtt/node_modules/zigbee-herdsman/src/utils/queue.ts:35:20) at Request.send (/opt/zigbee2mqtt/node_modules/zigbee-herdsman/src/controller/helpers/request.ts:79:20) at Endpoint.read (/opt/zigbee2mqtt/node_modules/zigbee-herdsman/src/controller/model/endpoint.ts:466:28) at Object.configureMagicPacket [as configure] (/opt/zigbee2mqtt/node_modules/zigbee-herdsman-converters/src/lib/tuya.ts:378:9) at Configure.configure (/opt/zigbee2mqtt/lib/extension/configure.ts:122:13) at Configure.onMQTTMessage (/opt/zigbee2mqtt/lib/extension/configure.ts:55:21) at EventEmitter.wrappedCallback (/opt/zigbee2mqtt/lib/eventBus.ts:174:17))

Any suggestions?

Thanks

Hi there,

I also plan to use two of such motors. Did you have any clue if it will now work with ZHA?
There are also experiences with the quality especially the battery.

Thanks Micha

Hi,

You should be able to check ZHA compatibility of most stuff from here.

Also here you can find most zigbee devices and what integration they use:
https://zigbee.blakadder.com/all.html

Thank you so much!

Your scripts helped me to setup my ZM25!
It’s my first and I bought without the remote control

OMG thank you for this! this worked flawlessly…well…just upper and lower limit are inverted, because direction of my roller is reversed (and even when setting direction reversed with that second script it still is inverted) but thats just an easy edit in your script!
(i have ZM25TQ)
thanks again :smile:

Hi,

about to get these motors. been reading here, as I understand you are unable to control the position of the blind motors without setting the limits first manually? Before being able to control them in HA?

Thanks.

I have just installed three of these motors and I can report that they work very will with Zigbee2MQTT.

Just having trouble pairing the 9 channel remote to the correct roller blind though (I seem to have three blinds on channel 1 instead of the blind I want to have). Not sure if I can reset the remote back to factory settings.

PS: I found I was able to set the upper and lower limits of the blinds via the MQTT device page. No option for the mid setting though, that needs to be set via the remote.

Hi,

Did you ever happen to resolve this issue? 2 of my 7 roller blind motors are experiencing this issue. They work fine with the FR report and pair to ZHA successfully, however when issuing an open/close command, ZHA the motors do not respond. HA does log that the command was sent.

thanks!

does anyone know something similar for an outside marquise? Maybe also with battery but waterproof?

Hey so i just purchased one of these ZM25-ZB from them and in Z2MQTT it shows as Zigbee Model
TS0601
Zigbee Manufacturer
_TZE284_fzo2pocs

and says unsupported, does anyone have any idea on how to add support?

External Definition if needed

const definition = {
    zigbeeModel: ['TS0601'],
    model: 'TS0601',
    vendor: '_TZE284_fzo2pocs',
    description: 'Automatically generated definition',
    extend: [],
    meta: {},
};

module. Exports = definition;

What I have in based on the Z2MQTT Documentation and ZM25 Config

const {} = require('zigbee-herdsman-converters/lib/modernExtend');
// Add the lines below
const fz = require('zigbee-herdsman-converters/converters/fromZigbee');
const tz = require('zigbee-herdsman-converters/converters/toZigbee');
const exposes = require('zigbee-herdsman-converters/lib/exposes');
const reporting = require('zigbee-herdsman-converters/lib/reporting');
const ota = require('zigbee-herdsman-converters/lib/ota');
const utils = require('zigbee-herdsman-converters/lib/utils');
const globalStore = require('zigbee-herdsman-converters/lib/store');
const e = exposes.presets;
const ea = exposes.access;

const definition = {
    zigbeeModel: ['TS0601'],
    model: 'TS0601',
    vendor: 'Zemismart',
    description: 'Tubular motor',
    fromZigbee: [legacy.fz.tuya_cover, fz.ignore_basic_report],
    toZigbee: [legacy.tz.tuya_cover_control, legacy.tz.tuya_cover_options, legacy.tz.tuya_data_point_test],
    exposes: [e.cover_position().setAccess('position', ea.STATE_SET)],
    extend: [forcePowerSource({powerSource: 'Mains (single phase)'})],
};

module. Exports = definition;

Continuing the discussion from Zemismart ZM25 Zigbee howto (Tubular roller blind/shade/cover motor):

Hi, I’m having trouble getting this to work. I get this “repair message” when i run the action.
Can you help me with this? :smile:

I’m new to the party and also tried the script to receive the same message.

Note that according to this reply, the script is not actually needed!

I have confirmed that I can set the lower limit, but for some reason the upper limit is not working.

My workflow:

  • Press down
  • Press stop at desired position “down” position
  • Select the “Border” dropdown; and
  • Select “down” (beeps in response)
  • Press up
  • Press stop at desired “up” position
  • Select the “Border” dropdown; and
  • Select “up” (beeps in response)

Then when I pressed “down”, it stopped successfully at the position I had set.
When I pressed “up” it didn’t stop and jarred my finger until I pressed “stop” :stuck_out_tongue:

Will continue testing soon …
Setting upper and lower limit works.

NOTE when in “reverse direction → back” the Border directions are reversed.
I.e I had to set “up” at the bottom and “down” at the top.

Works perfect though!!!

1 Like

I purchased this Zemismart Zigbee Roller Shade on AliExpress.

According to the ZHA device info section:

  • TS0601
  • by _TZE200_fzo2pocs
  • Quirk: zhaquirks.tuya.ts0601_cover.TuyaZemismartSmartCover0601_3

I don’t have a remote and don’t want to install Zigbee2MQTT, but there are some relevant attributes in ZHA:

I’ve set some attributes; the roller sometimes stopped in various positions. However, it doesn’t seem to remember them, and I’m unsure which attribute to set to which values for the up/down position.

Thanks in advance!

Just in case anyone needs to reset the limits (In trying to set the limits on mine, I somehow made the upper and lower limites the same. you can use 106

bool,106,1 - reset limits