Hi everyone,
In this post I will share my experiences with the Zemismart ZM25 Zigbee roller blind motor (I’ll call it motor from here on), how I’ve configured it and got it to work with Home Assistant.
I have 6 of these motors. I bought one with a 9 channel 433MHz RF remote and bought the rest as motor only without an additional RF remote. You need at least 1 remote to set up the Upper and Lower limits since you can not set them any other way (at least as of now EDIT: Look at #16 by @ndbroadbent to set limits without the RF remote.) Also, you should always have a fail-safe manual control option as a backup which will be the 433MHz RF control with the remote. A 9-channel remote means that it can control up to 9 different motors.
This motor works with the Zigbee2MQTT addon and it works very well. I’ve also tried it with ZHA but it didn’t work consistently that way. It is very silent and features position indication as well as position setting.
Keep in mind that if you’re already using ZHA, you need an additional Zigbee dongle to use with Zigbee2MQTT addon. You can not use the same USB Zigbee dongle for ZHA and Zigbee2MQTT at the same time.
All the configuration of the motor is done with the single recessed button on it.
To factory reset the motor, first hold the button on the motor until it makes a short up-and-down movement or a single short movement. Then quick press the same button 5 times. It will respond with a short up-and-down movement. Factory reset is complete, meaning Zigbee and 433Mhz RF remote pairing information on the motor is cleared.
To pair with the 433Mhz RF remote, first select the desired channel on your remote. Then single click the button on the motor. It will respond with a short up-and-down movement. It’s now in RF pairing mode. Then click the Down button, Stop button and the Up buttons one by one. It should be paired now. You can now control the motor with the RF remote.
To set the Upper or Lower limit points on the motor, using the remote move the blind to the desired upper or lower limit position, then click the recessed set button on the back of the remote once. You will see ‘1’ on the remote screen. This is a temporary mode of the remote which stays active for about a couple of seconds until the remote display clears. Now, while you have the ‘1’ on the remote screen, remote is in the mode to send the ‘set limit position’ command to the motor either for the upper limit or the lower limit. Click the Up button on the remote to set the upper limit or Down button to set the lower limit. The motor will reply by a short up-and-down movement to indicate limit is set.
To clear the upper or lower limit setting in the motor, click the recessed set button on the back of the remote 3 times. You will see ‘3’ on the remote screen. This means the remote is temporarily in the mode to send the ‘clear-limit-position’ command. While the screen showing 3, either click the Down button to clear the lower limit or click the Up button to clear the upper limit. The motor will reply by a short up-and-down movement to indicate that the limit is cleared.
To pair the motor with your Zigbee coordinator, click the ‘Permit join (All)’ button on the sidebar Zigbee2MQTT interface. Now slowly click the motor button 3 times, waiting for the motor to respond with the short up-and-down movement between each click.
So this will be like: Click, <>movement, Click, <>movement, Click, <>movement. Now the motor is in Zigbee pairing mode. It will shortly appear in the Zigbee2MQTT devices section.
Next thing is to rename your shade entitiy and give it a descriptive name. It will by default have a hex value name. The easiest is to click the blue ‘rename device’ button on the right side of the device in the devices list of Zigbee2MQTT interface. Turn on ‘Update Home Assistant entity ID’ and give it a name like ‘Shade 1’. This will rename the device name shown in Zigbee2MQTT as well as the entitiy id in Home Assistant which will help you to identify the specific motor in Home Assistant. Now restart Home Assistant. You should also mark your motor with ‘1’ so you would know which one it is. Now we know which motor is which entity in Home Assistant. Now you can go and change the name (not the entitiy id) of the entitiy specific to where you’ve installed it. Go to Settings in Home Assistant side bar, click ‘Devices & Services’ and click devices in ‘Mosquitto broker / MQTT’ integration. Click on the device you want to rename and click the entity under ‘Controls’, goto entitiy Settings and enter something like ‘Kitchen Shade’ or ‘Bedroom Shade Left’ to the Name field. The entitiy id is still ‘cover.shade_1’ so you know which motor it is and the name is ‘Kitchen Shade’. If you name your device id and name this way, if you install it somewhere else you can easily change the name and keep the same id. Basically you use the entitiy id to keep track of the physical motors and the entitiy names to keep track of installation location.
The 9-channel RF remote also has a channel called ‘C’. In this mode you can control all of your shades/motors at the same time. This is similar to the ‘cover group’ helper entitiy in Home Assistant. If you have multiple motors, you can group them with the ‘cover group’ helper entitiy and control all of them with voice if you expose the group entitiy to google home.
I hope this will be helpful.