Open-source project
Valar-Systems/Ropener avatar
Valar-Systems/Ropener

The Ropener: a quiet stepper motor curtain opener you can build from a kit

WiFi Stepper Motor Curtain Opener

564 stars36 forksPythonNOASSERTION

At a glance

What is it?
Ropener is a hardware design for a silent curtain opener built around an ESP32 and a Trinamic TMC2209 stepper driver, with the firmware in ESPHome and the mechanical parts as 3D printable files. The repository carries the PCB, the plastic parts and the firmware, and the commercial kit exists because sourcing the parts in bulk is impractical.
Who is it for?
Ropener fits a maker who wants a quiet automated curtain opener and is comfortable with ESPHome, a soldering iron and printing their own plastic parts. It does not fit someone who needs a tested, certified product with a support contract, since this is a design someone publishes and builds themselves.
Can I use it commercially?
Check first. The repository uses a licence we do not classify automatically, so read its LICENSE file before any commercial use.
Is it still maintained?
Yes. The repository last received commits 50 days ago.
What is it written in?
Mainly Python, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on October 22, 2026, and from our analysis. They are not legal advice.

Editorial analysis

A curtain opener designed around silence

The Ropener is a smart curtain opener that uses two buttons and ESPHome to open and close a curtain, and it can be combined with Node-RED and Home Assistant through ESPHome so the curtain opens and closes automatically. The silence is not incidental, it is the headline of the project, and the mechanism that delivers it is named in the README. At the heart of the device is a custom PCB using an ESP32 and a Trinamic TMC2209 stepper driver, and the motor is described as dead silent. The mechanical arrangement is simple to picture and worth understanding before you build anything. The motor attaches to the wall just behind one of the curtains. A carriage is attached to the back of each curtain panel, a string runs through each carriage and through the motor, and the motor pulls it open and closed. That is the whole kinematic idea: a string, a carriage per panel, and a quiet motor to move them.

The hardware revision changed the strength and the part count

There is a current hardware revision and it differs from the first one in ways that matter if you are building. The latest v1.1 revision uses a smaller-diameter MK8 drive gear, which the README says boosts the pull strength from 11 pounds to 15 pounds. It also swaps to a single larger bearing per arm, which means fewer parts, and it uses pre-cut PTFE tubes. The details are in the hardware notes in the repository. The reason the revision changed is mechanical rather than electronic, since the same ESP32 and the same stepper driver are doing the work, and the improvement is in the gearing and the bearing arrangement. If you are following an older build guide, you need to check which revision it describes, because the number of bearings per arm and the printed plastic geometry both differ between v1.0 and v1.1.

Why a kit exists when the design is open

The author of the design, Daniel Frenkel, runs a small US-based shop that sells a hardware kit, and the README is unusually direct about why. Without the kit it is a pain to source all the parts, and it costs a lot more, because you are forced to buy 100 screws when you only need 2, and 100 feet of rope when you only need 30 feet, at a time. The README puts the sourcing figure at five times the cost. That is the real argument for the kit rather than any claim about the design, and it is a hardware truth rather than a marketing one. It also says the waitlist is the only indication the author has to make more, so the kit is as much a production planning tool as a sales channel. The alternative, sourcing the parts yourself, is supported and documented, the hardware directory in the repository holds the design files, and you can optionally print the plastic parts yourself.

Printing and assembly, with the time costs stated

The build guide and the installation guide are both video links in the README, which tells you the assembly is physical work rather than a firmware problem. The build guide covers putting the device together and the installation guide covers fitting it. The time figures are given plainly: total print time is about nine hours, and you can buy the prints instead of making them, and total assembly time is about twenty minutes. That gap between the two numbers is the interesting part of the project. Almost all of the effort is in printing and finishing the plastic parts, and once they exist the mechanical assembly is short. The 3D printing section is organised by revision, with the current revision v1.1 having a print plate you can open directly, and individual step files in the same folder if you would rather print them one at a time. The earlier v1.0 files remain in the repository for anyone who has already built one.

Fitting it to the curtain, and which curtains work

Installation is described as very easy, and the mounting options are the included foam mounting squares, which are the recommended method, small nails for drywall only, or two screws and anchors. The device attaches to the wall behind one of the curtains, and the string-and-carriage arrangement means it works with a pair of panels rather than a single blind. The README also has a section on whether it will work on your curtains, with a table of the supported curtain types, which is the check to do first. A mechanism that pulls a string through a carriage attached to the back of a panel has assumptions about how the panel is hung and how much clearance there is behind it, and the compatibility list exists because those assumptions are not universal. The 3D printed parts are the moving surfaces, so the geometry of the curtain and the frame both matter.

ESPHome as the control path, and Matterbridge for the voice assistants

ESPHome is the preferred way of controlling the device, which means the curtain becomes an entity in whatever home automation you already run rather than a device with its own app and protocol. The README mentions combining it with Node-RED and Home Assistant via ESPHome for automatic opening and closing, and for voice control it says to pair it with Matterbridge so the curtains can be controlled with Alexa, Apple and Google Home. The hardware side of the control is the two buttons, so the design keeps a manual path that does not depend on any of the automation stack working. That is a deliberate choice for a device that opens a window, and it is also the reason the buttons are mentioned in the opening description rather than as an afterthought.

What the repository actually contains

The top-level entries map onto the phases of building this. There is a hardware directory holding the PCB design and the plastics, with a subdirectory per hardware revision, and a firmware directory for the ESPHome code, plus a flash directory, which is presumably the tooling for putting the firmware onto the device. There is a tools directory, a docs directory, and a media directory holding the photographs and the animated images the README embeds, including the images that show the motor behind the curtain and the carriage arrangement. There is also a .nojekyll file, which is a GitHub Pages convention for serving a directory without Jekyll processing, consistent with the repository being browsable as a project site. The licence is a custom one that GitHub cannot classify, so the LICENSE file in the repository root is the authority on the terms, and the project is not archived with the last push on 2026-09-03. The tagged releases run on a different version line from the hardware, with v2.9.0 in July 2026 and v2.8.0 and v2.7.1 just before it, so the software moves faster than the mechanical design.

Editorial conclusion

Ropener fits a maker who wants a quiet automated curtain opener and is comfortable with ESPHome, a soldering iron and printing their own plastic parts. It does not fit someone who needs a tested, certified product with a support contract, since this is a design someone publishes and builds themselves. Verify first that your curtains are the type the project supports, since there is a compatibility list, and read the hardware notes for the current revision, because the earlier revision and the current one differ in pull strength and part count, and building the wrong one leaves you with a different mechanism than the one documented.

Frequently asked questions

What is the Ropener?

It is a smart curtain opener that uses two buttons and ESPHome to open and close a curtain, and it can be combined with Node-RED and Home Assistant through ESPHome for automatic operation. The design uses a custom PCB with an ESP32 and a Trinamic TMC2209 stepper driver, and the motor is described as dead silent.

How does the Ropener physically move the curtains?

The motor attaches to the wall just behind one of the curtains. A carriage is attached to the back of each curtain panel, a string runs through each carriage and through the motor, and the motor pulls it open and closed.

What changed in the v1.1 hardware revision of the Ropener?

It uses a smaller-diameter MK8 drive gear, which raises the pull strength from 11 pounds to 15 pounds, swaps to a single larger bearing per arm so there are fewer parts, and uses pre-cut PTFE tubes. The earlier v1.0 files remain available for anyone who already built one.

How do I control the Ropener curtains?

ESPHome is the preferred control method, so the device fits into an existing automation setup. The README mentions combining it with Node-RED and Home Assistant through ESPHome, and pairing it with Matterbridge to control the curtains with Alexa, Apple and Google Home. Two physical buttons are provided as a manual path.

Official sources

  1. Issues
  2. Project website
  3. README
  4. Releases
  5. Valar-Systems/Ropener on GitHub
Add this badge to your README

If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.

Add this badge to your README

markdown
[![Hysen Labs](https://hysenlabs.com/badge/valar-systems-ropener.svg)](https://hysenlabs.com/projects/valar-systems-ropener)

Was this useful?