3D-Printed Automated Window Shade for Home Assistant (~$25)

3D-Printed Automated Window Shade for Home Assistant (~$25)

3D Printing

Disclosure: This post contains affiliate links. Stack Archive may earn a commission if you purchase through these links, at no extra cost to you. Learn more.
  • Skill level: Intermediate (requires ESPHome familiarity)
  • Print time: ~4–6 hours
  • Component cost: ~$25 USD
  • Integrates with: Home Assistant via ESPHome

Purpose

Convert any standard roller shade into a Home Assistant-controlled smart blind using a 3D-printed motor bracket, a small geared motor, and an ESP32 microcontroller. No modifications to the shade itself β€” the 3D-printed parts clamp to the existing hardware.

Pre-requisites

  • Bambu Lab A1/P1S/X1C or any FDM printer capable of printing PETG or ABS
  • Home Assistant instance (any platform: Raspberry Pi, NUC, cloud)
  • ESPHome add-on installed in Home Assistant
  • Basic experience flashing firmware to an ESP32

Steps

  1. Print the motor bracket and shade coupler. Use PETG or ABS for heat tolerance β€” shades near windows get warm. Print at 40% infill with at least 3 perimeters for structural integrity. Design files are available on MakerWorld and Printables.

  2. Source the components. You need: one ESP32-S3 or ESP32-WROOM board ($4–6), one small 6V geared DC motor with encoder ($8–12), a reed switch for homing ($2), and a motor driver module ($3–5). Total lands under $25 for most configurations.

  3. Wire the motor driver. Connect the motor driver IN1/IN2 pins to ESP32 GPIO outputs. The encoder and reed switch connect to interrupt-capable GPIO pins for position tracking and hard-stop detection at the fully-open position.

  4. Flash ESPHome firmware. Create an ESPHome configuration that defines a cover entity with open, close, and stop actions mapped to your motor driver outputs. The reed switch becomes the reference position sensor β€” when the shade reaches full-open, the switch triggers a re-home routine that resets position tracking.

  5. Configure Home Assistant automations. With the ESPHome device discovered, create automations for time-based control (open at sunrise, close at sunset), temperature-triggered behavior (close when indoor temp exceeds threshold), or voice control via your preferred assistant.

  6. Mount and calibrate. Clamp the motor bracket to the shade’s existing mounting hardware. Run the shade through a full open-close cycle to calibrate travel time and verify the hard stop at full-open. Adjust travel_time in your ESPHome config to match the actual measured time.

The Trap

Don’t skip the encoder or reed switch and rely on time-based position tracking alone. Roller shades vary in tension as they wind and unwind, and time-only tracking drifts across dozens of cycles β€” your shade will slowly go out of calibration. The reed switch at full-open is the safest and cheapest way to self-correct position on every full-open cycle.

Cited References

Source: r/BambuLab

Content created with AI assistance and reviewed for accuracy.

πŸ’¬

Join the conversation

Stack Insiders is our free community for readers who want to go deeper β€” share resources, ask questions, and connect with others across every vertical we cover.

Join Stack Insiders →

Newsletter coming soon.

Curated digests across AI, biohacking, photography, travel, and more. Be the first to know when we launch.