Smart blinds are one of the most satisfying home automations you can build. Imagine your curtains opening at sunrise, closing when it gets too hot, or dropping down when you start a movie. Here's everything you need to know about setting up blinds, curtains, and roller shades with Home Assistant.
Jump to a section
Not all blinds are created equal. The right motor depends on what you already have hanging in your windows.
Retrofit tip: You don't need to replace your blinds. SwitchBot Curtain clips onto existing curtain rods. Zemismart tubular motors slide into existing roller tubes. Shelly 2PM replaces the wall switch for wired shutters. Start with what you have.
These are the motors that actually work well with Home Assistant. Tested by the community, supported by integrations.
The community favorite. Connects via Zigbee2MQTT or ZHA with full position control. Fits standard 35mm and 38mm roller tubes. Quiet, reliable, and completely local.
Protocol: Zigbee · Price: ~€45-70 · Power: Wired (12V) · Integration: Zigbee2MQTT, ZHA
Solar-powered motor that clips onto existing roller blind chains. No wiring needed. Works via Bluetooth with a MQTT bridge (Soma Connect) for Home Assistant. Great for rentals where you can't modify windows.
Protocol: Bluetooth + MQTT bridge · Price: ~€90 · Power: Solar · Integration: MQTT
Another chain-drive option. Solar panel charges the battery. Works with Home Assistant via the AXIS integration. Good build quality but pricier than Zemismart.
Protocol: Bluetooth/Wi-Fi · Price: ~€150 · Power: Solar + Battery · Integration: Native
Clips onto your existing curtain rod in minutes. No tools, no wiring. Battery lasts 3-8 months depending on usage. Home Assistant integration supports position control. The solar panel accessory makes it fully self-powered.
Protocol: Bluetooth (Hub optional) · Price: ~€70 · Power: Battery/Solar · Integration: SwitchBot
Zigbee curtain motor that works with ZHA and Zigbee2MQTT directly. No extra hub needed if you already have a Zigbee coordinator. Quiet operation, good battery life, and proper position reporting.
Protocol: Zigbee · Price: ~€60 · Power: Battery · Integration: ZHA, Zigbee2MQTT
Full motorized track system. Replaces your curtain rail entirely. Very smooth and quiet operation. Wired power means you never deal with batteries. Available in custom lengths up to 6 meters.
Protocol: Zigbee · Price: ~€80-150 (track included) · Power: Wired · Integration: Zigbee2MQTT
The go-to for controlling existing wired roller shutters. Fits behind your wall switch, replaces the dumb switch with smart control. Has a dedicated "roller shutter" mode with position calibration. 100% local via the Shelly integration.
Protocol: Wi-Fi · Price: ~€18 · Power: Wired (mains) · Integration: Shelly (native)
Z-Wave option for wired shutters. Reliable, long range (Z-Wave beats Wi-Fi through walls), and works with the Z-Wave JS integration. Energy monitoring built in. Premium price but premium reliability.
Protocol: Z-Wave · Price: ~€55 · Power: Wired (mains) · Integration: Z-Wave JS
The protocol matters more for blinds than most other smart home devices. Here's why.
Our recommendation: Go Zigbee if you're starting fresh. Go Shelly (Wi-Fi) if you have existing wired shutters. Go SwitchBot (Bluetooth) if you want the quickest install with zero wiring. Check our Zigbee guide for coordinator recommendations.
The setup process depends on your motor type. Here's the general flow.
Mount the motor according to its type. Tubular motors slide into roller tubes. Curtain motors clip onto rods. Shelly modules go behind wall switches. Follow the manufacturer's instructions for the physical installation.
For Zigbee motors: put your coordinator in pairing mode, then power on the motor. It should appear in ZHA or Zigbee2MQTT within 30 seconds. For Shelly: add it through the Shelly integration using auto-discovery. For SwitchBot: install the SwitchBot integration from HACS.
Most motors need calibration to know their fully open and fully closed positions. For Shelly, use the "Roller Shutter" device profile and run the calibration from the Shelly app or web UI. For Zigbee motors, set the upper and lower limits using the motor's built-in buttons. This step is important for accurate position control.
Once paired, Home Assistant creates a cover entity for each motor. You can rename it (e.g., "Living Room Blinds"), assign it to a room, and add it to your dashboard. The cover entity gives you open, close, stop, and set_position controls.
Shelly roller mode tip: In the Shelly web UI, set the device type to "Roller Shutter" (not "Switch"). Then enable "Position Control" and run calibration. The motor will travel the full distance once to learn the timing. After that, percentage positions will be accurate.
The real magic happens when your blinds start thinking for themselves. These are the automations that make the biggest difference.
Wake up naturally with daylight instead of an alarm. Open blinds at sunrise (or 30 minutes after if you like sleeping in). Only triggers on weekdays if you want to sleep in on weekends.
automation:
- alias: "Open blinds at sunrise"
trigger:
- platform: sun
event: sunrise
offset: "+00:30:00"
condition:
- condition: time
weekday: [mon, tue, wed, thu, fri]
action:
- service: cover.open_cover
target:
entity_id: cover.bedroom_blindsClose south-facing blinds when the outside temperature hits 25C and the sun is shining. This alone can reduce your cooling costs significantly in summer. Pair with a weather integration for outdoor temperature.
automation:
- alias: "Close blinds when hot and sunny"
trigger:
- platform: numeric_state
entity_id: sensor.outdoor_temperature
above: 25
condition:
- condition: sun
after: sunrise
before: sunset
action:
- service: cover.close_cover
target:
entity_id: cover.south_facing_blindsClose living room blinds and dim the lights when you start playing a movie. Open them back up when the movie stops. Works with any media player entity in Home Assistant.
automation:
- alias: "Movie mode blinds"
trigger:
- platform: state
entity_id: media_player.living_room_tv
to: "playing"
action:
- service: cover.close_cover
target:
entity_id: cover.living_room_blinds
- service: light.turn_on
target:
entity_id: light.living_room
data:
brightness_pct: 10Automatically close all blinds at sunset so neighbors can't peek in. No more walking room to room closing everything manually. Combine with turning on lights for that cozy evening transition.
automation:
- alias: "Close all blinds at sunset"
trigger:
- platform: sun
event: sunset
offset: "-00:15:00"
action:
- service: cover.close_cover
target:
entity_id:
- cover.living_room_blinds
- cover.bedroom_blinds
- cover.kitchen_blindsWhen you're away for more than a day, have blinds open and close on a schedule to make it look like someone is home. Combine with smart lighting for a convincing presence simulation.
automation:
- alias: "Vacation blinds open"
trigger:
- platform: time
at: "08:30:00"
condition:
- condition: state
entity_id: input_boolean.vacation_mode
state: "on"
action:
- service: cover.set_cover_position
target:
entity_id: cover.living_room_blinds
data:
position: 70Want more automation ideas? Check our 30 best Home Assistant automations or explore ready-made blueprints.
Once your blinds are in Home Assistant, you'll want easy controls on your dashboard.
The built-in cover card gives you up/down/stop buttons and a position slider. Simple, functional, works out of the box. Add one card per blind or use a group to control all blinds together.
The Mushroom card collection (available through HACS) includes a beautiful cover card with a visual position indicator. Tap to open/close, hold to set position. Looks much cleaner than the default card and fits well in modern dashboards.
If you have multiple windows in one room, create a cover group to control them all at once. One "Living Room Blinds" button that opens or closes every blind in the room. Use cover.group in your configuration.yaml.
For more dashboard inspiration, check our dashboard examples gallery.
Don't motorize every window at once. Start with the living room or bedroom. Figure out what works, dial in your automations, then expand. Most people find that 2-3 smart blinds cover 80% of what they actually need.
Make sure your smart blinds still work manually. Shelly 2PM keeps the physical wall switch working. SwitchBot Curtain can be pulled by hand. If your Home Assistant server goes down, you don't want to be stuck in the dark (or blinding sunlight).
If you open 5 blinds at the same time, the noise can be jarring. Add a 5-10 second delay between each blind. It looks more natural and reduces strain on your Zigbee network. Use delay steps between your cover service calls.
The sun.sun entity tracks azimuth and elevation. You can close only south-facing blinds when the sun is actually hitting them, and leave other windows open. Way smarter than closing everything at 2 PM. The sun_position template sensor makes this even easier.
Battery motors are convenient but need recharging every few months. If the window is near a power outlet, go wired. Solar panels (available for SwitchBot and Soma) are a good middle ground. For shutters that are already wired to a wall switch, Shelly 2PM is the obvious choice since power is already there.
Budget for a typical setup with 3-4 motorized blinds.
3x Shelly 2PM (existing wired shutters)
3x Zemismart Zigbee roller motors + coordinator
8x mixed motors (Zigbee + Shelly) + coordinator
Compare that to commercial solutions: Lutron Serena shades start at €300 per window. Somfy motors run €150-250 each plus the proprietary hub. With Home Assistant, you get better automation at a fraction of the price, and no subscription fees.
Take our free smart home scan to see which of your devices already work with Home Assistant, and get a personalized migration plan.
Best coordinators and devices for your Zigbee network.
🤖The best automations to build after setting up your smart home.
💡Pair your blinds with smart lights for the perfect ambiance.
🌡️Smart blinds + smart climate = serious energy savings.