Smart Curtain Motors (Broadlink RM Pro, Dooya)

I’ve done something similar works a treat

So i have just got my 4 dooya dm25leq/l tubular motors with battery, but instead with a dooya 2702 remote. This is a 15 channel remote where the 2700 is a single channel. So i can steer the motors individually.

I got my codes converted by installing python 3.6, running pip install pillow from command prompt, and running pip install pycurl. Then the bitbucketconverter script from this post started working, took me a good few hours to figure this one out. I had already gotten the rfraw codes using this very helpful post.

I got my 4 motors all on a seperate channel, and here are the codes for the first 4 channels if anyone is interested:

ch1 - up - down - stop
rfraw AA B0 35 05 04 12DE 05FA 015E 02F8 2242 A481A3B2B2A3A3A3B2A3A3A3B2B2A3B2A3A3B2A3B2B2B2B2B2B2B2A3B2A3A3A3A3B2A3A3A3B2B2B2B2 55
rfraw AA B0 35 05 04 12CA 05FA 015E 02E4 222E A481A3B2B2A3A3A3B2A3A3A3B2B2A3B2A3A3B2A3B2B2B2B2B2B2B2A3B2A3A3A3A3B2A3A3B2B2B2B2A3 55
rfraw AA B0 35 05 04 12C0 05FA 015E 02E4 230A B481A3B2B2A3A3A3B2A3A3A3B2B2A3B2A3A3B2A3B2B2B2B2B2B2B2A3B2A3A3A3A3B2A3B2A3B2A3B2A3 55

rfraw AA B0 35 05 04 12CA 05FA 0154 02E4 231E A481A3B2B2A3A3A3B2A3A3A3B2B2A3B2A3A3B2A3B2B2B2B2B2B2B2A3B2A3A3A3B2A3A3A3A3B2B2B2B2 55
rfraw AA B0 35 05 04 12CA 05F0 0168 02E4 222E A481A3B2B2A3A3A3B2A3A3A3B2B2A3B2A3A3B2A3B2B2B2B2B2B2B2A3B2A3A3A3B2A3A3A3B2B2B2B2A3 55
rfraw AA B0 35 05 04 12CA 05F0 0168 02EE 2224 B481A3B2B2A3A3A3B2A3A3A3B2B2A3B2A3A3B2A3B2B2B2B2B2B2B2A3B2A3A3A3B2A3A3B2A3B2A3B2A3 55

rfraw AA B0 35 05 04 12C0 05FA 015E 02E4 2242 A481A3B2B2A3A3A3B2A3A3A3B2B2A3B2A3A3B2A3B2B2B2B2B2B2B2A3B2A3A3A3B2B2A3A3A3B2B2B2B2 55
rfraw AA B0 35 05 04 12C0 05F0 015E 02E4 2224 A481A3B2B2A3A3A3B2A3A3A3B2B2A3B2A3A3B2A3B2B2B2B2B2B2B2A3B2A3A3A3B2B2A3A3B2B2B2B2A3 55
rfraw AA B0 35 05 04 12CA 05FA 015E 02E4 230A B481A3B2B2A3A3A3B2A3A3A3B2B2A3B2A3A3B2A3B2B2B2B2B2B2B2A3B2A3A3A3B2B2A3B2A3B2A3B2A3 55

rfraw AA B0 35 05 04 12CA 05FA 0168 02E4 222E A481A3B2B2A3A3A3B2A3A3A3B2B2A3B2A3A3B2A3B2B2B2B2B2B2B2A3B2A3A3B2A3A3A3A3A3B2B2B2B2 55
rfraw AA B0 35 05 04 12C0 05F0 015E 02E4 222E A481A3B2B2A3A3A3B2A3A3A3B2B2A3B2A3A3B2A3B2B2B2B2B2B2B2A3B2A3A3B2A3A3A3A3B2B2B2B2A3 55
rfraw AA B0 35 05 04 12CA 05F0 0168 02E4 2224 B481A3B2B2A3A3A3B2A3A3A3B2B2A3B2A3A3B2A3B2B2B2B2B2B2B2A3B2A3A3B2A3A3A3B2A3B2A3B2A3 55


@jelle2503 & @c_wolsey I’m lost with this, and maybe you guys can point me in the right direction given project similarities? I don’t really know what I’m doing…

Sorry I have never used ESPhome and the codes look completly diffrent to the tazmota ones. I dont know where I would start

1 Like

No worries, thanks for quick response. I don’t suppose you know of there’s an easy way to convert between the codes in @jelle2503 post (I have the same remote, maybe they will work) and this format of raw code?

# Or raw output if it's not known yet
# The values may fluctuate a bit, but as long as they're similar it's ok
[D][remote.raw] Received Raw: 4088, -1542, 1019, -510, 513, -1019, 510, -509, 511, -510, 1020,
[D][remote.raw]   -1020, 1022, -1019, 510, -509, 511, -510, 511, -509, 511, -510,
[D][remote.raw]   1020, -1019, 510, -511, 1020, -510, 512, -508, 510, -1020, 1022

So after failing with using a Sonoff RF Bridge hack with esphome to learn/send commands (2nd link), I finally have my Dooya DM25LE roller blind motors (1st link) integrated/contolled with a Broadlink “RM2 Pro Plus3” (which is now a bit of a hassle to integrate for the reasons in third link below)

Just an addition to this post. Here’s the B0 codes for channel 0, which controls all channels with one press of a button.
Super useful. Also if you cannot get the command to trigger your blinds, try change the transmit length of the rfraw code which is the 10 in these commands… They are default at 04 which is a very short pulse, which sometimes does not trigger the blinds. I have mine set to 20 for the stop “hold” button to trigger the “half-open” state. <3

channel 0 (all channels)
rfraw AA B0 35 05 10 12CA 05F0 015E 02E4 2238 A481A3B2B2A3A3A3B2A3A3A3B2B2A3B2A3A3B2A3B2B2B2B2B2B2B2A3B2A3A3A3A3A3A3A3A3B2B2B2B2 55

rfraw AA B0 35 05 10 12CA 05E6 0168 02E4 222E A481A3B2B2A3A3A3B2A3A3A3B2B2A3B2A3A3B2A3B2B2B2B2B2B2B2A3B2A3A3A3A3A3A3A3B2B2B2B2A3 55

rfraw AA B0 35 05 10 12D4 05FA 0154 02EE 2238 B481A3B2B2A3A3A3B2A3A3A3B2B2A3B2A3A3B2A3B2B2B2B2B2B2B2A3B2A3A3A3A3A3A3B2A3B2A3B2A3 55

My problem is not HA, I have that bit sorted using the sonoff and tasmota/portisch.

How do you reset the motor travel limits? I have a sunflower branded motor and a dooya dc2700 remote - and no instructions !

Hi Annaka and community :slight_smile:

I am pleased that this is working all well for you.
I’m having no luck with this at all.

I have a motorised blind with 433mhz remote and while adding it as an appliance (curtain) on my Broadlink RM Pro+ it just wouldn’t recognize the on or off press at all. However it does recognize the first long press.

PS: I’ve tried 2 units of RM Pro+ and same problem.
And I am also having trouble pairing other devices like TV, Foxtel etc. Although the very first unit (My Aircon) works like a charm and integrated with Ok Google too.

And, I don’t have Hassio and not familiar with it.

Also, I am using Broadlink’s app which has a dotted B logo because IHC was clunky.

Any suggestions on how to get it to work for my blinds?


Dooya looks like the path I want to take as well. Great work on working out the RF codes.
I’m interested in the bidirectional communication that most of Dooya’s motors have now.
They provide position feedback; Bi-directional motor: ‘UP/STOP/DOWN’ + Percentage control + Position feedback.
Has anyone been able to determine the RF codes RECEIVED from the motor to determine position? Or send a position command TO the motors?

I have been using DM25TE dooya motors and they work flawlessly. Easy to get the code, quite silent and speed adjustable. The highest speed opens up my blinds in less than 30second. DM45F/SK seems to be the perfect replacement. But never seen them sold. I guess they are quite new.

Do you get position feedback in HA?

Mine are one way comnunication. But I am using a custom component and can set position based on time to close and open. no feedback.

Has anyone considered a Shelly 2.5 its only 20 Euro Inc VAT
And it does Roller/Shutter step

If you have AC powered rollers, then these are great. The only reason I ask is for retrofit - so battery/lithium powered. Most are 433MHz.
I found Dooya have a smart hub DD7002B that supports Google, Alexa and IFTTT - and bidirectional communication with all their new motors.

I was just referring the original poster who is said.

So if the RF wasn’t reliable I could revert back to a wired Z-wave Controller, I was thinking of using a [Fibaro Roller Shutter but they are £50 just for the controller, which bumps the price quite a lot. So I thought I will try the RF route first. I may still go this route when I re-plaster the living room and run the wires in properly which I am doing in a few months.

I had heard about the Broadlink RM Pro (£30 ish) and heard good things about it.

From what I hear shelly do some great gear. But they weren’t available when I set this up. I would definitely buy one and try it. If it removes the hassle of grabbing codes it is worth the money.

Do let us know how it goes if you go down this route.

Thanks to everyone who provided the detailed info above, exactly what I was looking for.

A quick question to those with multiple Dooya curtain motors - can each of the motors be set to respond to different codes? It would seem obvious that they do, particularly with the 15-channel remote that was mentioned above, but I don’t want to buy the wrong one and find that all my curtains open and close at the touch of one button.

Thanks in advance.

Yes. Also one motor can be made to respond to different controllers too.
My balcony has 4 motors, I’ve set the channel 3 to control all at once and channels 4-7 to control individual motors.

That’s good to know, thanks.

I’ve ordered a DT82TV and a Shelly 2.5 to experiment with. If all goes well, I’ll order a few more.

If the Shellys work as expected, then that makes addressing each motor individually or as a group perfectly simple.

I’ll let you know…