June 30, 2026
Description
This is my take on a motorized shade solution for automating existing roller-style shades. This works with traditional cordless roller shades (the spring loaded type that you pull down). Its based around a relatively cheap aliexpress geared brushless motor with an encoder driven by an esp32 for use with ESPHome and HomeAssistant. The finished product is capable of accurate positional control and uses a reed switch at the full open position to re-home the system each time the shade is fully opened. They are relatively quiet, very reliable and operate on 12v DC power. You will have to attach a small magnet to the shade (with tape or something).
Here is the Bill of Materials:
| Item | Qty | Links | |
| Socket head cap M3x6 | 7 | ||
| Socket head cap M2x4 | 7 | ||
| Small Neodymium Magnet | 1 | ||
| CHR-GM25-BL2418 DC12V i34 (130rpm variant) | 1 | Link | Alibaba (cheaper for bulk) |
| MKA17101 Reed Switch NO | 1 | Link | |
| 5v Buck Converter | 1 | Link | |
| 3x7cm Protoboards | 1 | Link | |
| ESP32 | 1 | Link | |
| 608 2RS Ball Bearing | 1 | Link |
The more of these you build the cheaper they are per unit because you end up buying the smaller components in bulk anyways. If you make 5 of them they end up being around $25 each. Use Alibaba for the motors if ordering more than one or two. In theory you probably don't need a protoboard if you really want to cut costs.
There are two versions of the printed files, one with holes sized for heat-set inserts and one with holes meant to be directly threaded into.
Here is a diagram of the wiring:
Push the reed switch as much towards the esp32 (into the page) as possible to get it closest to the magnet that you will attach to the shade. When attaching the magnet to the shade, it works best if it is mounted sideways rather than flat. Here is a picture of how I did it, and so far it has never failed to home properly after a month of use. Wherever you place it will determine the stopping point of the shade.
The bottom endpoint is configurable inside home assistant. The only issue I have run into is drift over many cycles if the shade isn't homed for a while (eg. 50% →0% → 50%) over and over without fully opening. This happens only when the shade travels down at full speed and abruptly stops. If you add a ramp and run it downwards at around 80% speed there will be no drift even after 20+ cycles. The YAML included has many customizable parameters related to this. Without the ramp function at the end and at full speed, after around 20 ish cycles it will drift downwards about an inch. Even still, as long as they are opened fully periodically, this will never be a problem.
Assembly should be pretty straightforward if you follow the exploded view diagram. The gear shroud needs to be snapped on and might require some force, Its not meant to come off again without breaking. I've also included a version of the wall plate with different mounting points for shallower window frames and the hanger I used for the other end of the shade. You may also need to make a different size shade insert to fit in your particular tube. If you leave a comment with the inner diameter of your tube i can add more variants.
That's it! Happy printing!
License:
Standard Digital File License