Automatically Lower Blinds Based on Indoor and Outdoor Temperature
- Andrea Leandri
- Jun 30
- 5 min read
Skill level: Beginner to Intermediate | Time to complete: 30-40 minutes
What you'll build: An automation that lowers a room's blinds automatically when it's genuinely getting hot, checking both the outdoor weather forecast and an actual indoor temperature sensor, boosts ventilation, and sends a notification explaining what happened and why.
The Idea
A simple close blinds when it is sunny automation sounds good but causes problems in practice: it closes blinds on a sunny but cool spring morning, or fails to act on a hot, overcast day when the room is still uncomfortably warm from yesterday's heat. The fix is checking both sides of the problem - what the weather is doing outside, and what the temperature actually is inside the room that matters.
This automation only lowers the blinds when all of these are true together: outdoor temperature is forecast above 22C, sky condition is clear or cloudy (not actively raining), it is daytime (between sunrise and sunset), and the room itself is actually above 21.5C, measured by a real sensor in that room.
That last condition is what makes this genuinely smart rather than just reactive to a generic outdoor forecast. A north-facing room and a south-facing room respond completely differently to the same outdoor conditions - the indoor sensor is what grounds the automation in reality.
When triggered, the automation does not just close the blinds - it also boosts the ventilation system and tracks that it acted automatically, so a matching open blinds again automation later knows it is safe to reverse the action.
What You'll Need
Home Assistant - any recent version (2024.x or later)
Buienradar weather integration - already covered in the BBQ Weather guide on this site
Smart blinds/covers - any cover entity controllable from HA
An indoor temperature sensor in the relevant room - a Hue motion sensor, Aqara sensor, or any Zigbee/WiFi sensor with a temperature reading
HA Companion App - for the notification
Why a Combined Indoor/Outdoor Check Matters
Outdoor forecast alone is too blunt: it would trigger identically for every room regardless of orientation or whether that specific room has already cooled down from an open window. Indoor sensor alone is too slow: the automation would always be reacting after the room has already heated up. Combining both means the automation can act as soon as outdoor conditions suggest heat is coming, while the indoor reading confirms it's actually needed for that specific room.
The sky condition check prevents closing blinds purely because temperature crossed the threshold even if it is actually raining with no sun reaching the window. The sun condition check prevents a warm night from triggering blinds to lower at 2 AM for no useful reason.
Step 1: Identify Your Sensors and Entities
Outdoor weather entity: Developer Tools → States, find weather.buienradar, confirm it has a temperature attribute. Sky condition sensor: typically sensor.condition showing values like clear, cloudy, rainy, partlycloudy. Indoor temperature sensor: many Zigbee motion sensors (Hue, Aqara, IKEA) include a temperature reading as a secondary attribute - search sensor. plus your sensor name. Cover/blind entities: Settings → Devices & Services → your blinds integration → Devices, note the entity IDs.
Step 2: Create an Input Select Helper
This helper tracks whether the automation closed the blinds automatically - important for a companion reopen automation later, so it only reopens blinds it closed itself, not ones manually closed for another reason.
Settings → Devices & Services → Helpers → Create Helper → Dropdown. Name: Matteo Blinds Auto Activated. Options: Yes, No. Initial option: No.
Step 3: Create the Automation
alias: "Blinds down if warm and sunny - bedroom"
description: >
Lowers the blinds when the outdoor forecast is above 22C, the sky is
clear or cloudy, it's daytime, and the room's own sensor confirms it's
actually getting warm inside.
triggers:
- trigger: numeric_state
entity_id: weather.buienradar # your weather entity
attribute: temperature
above: 22
conditions:
# Sky must be clear or cloudy - not rainy
- condition: state
entity_id: sensor.condition # your sky condition sensor
state:
- clear
- cloudy
# Only act during daylight hours
- condition: sun
before: sunset
after: sunrise
# The room itself must actually be warm
- condition: numeric_state
entity_id: sensor.YOUR_ROOM_TEMPERATURE_SENSOR # your indoor sensor
above: 21.5
actions:
# Close the blinds
- action: cover.close_cover
target:
entity_id: cover.YOUR_BLIND_ENTITY # your blind/cover entity
# Optional: boost ventilation
- action: rest_command.itho_fan_timer3 # your ventilation REST command, if set up
# Record that this automation acted
- action: input_select.select_option
target:
entity_id: input_select.blinds_auto_activated
data:
option: "Yes"
# Notify
- action: notify.mobile_app_iphone_XXXXXX # your notify service
data:
title: "Blinds lowered automatically"
message: >
It's getting warm in the room - the blinds have been lowered
automatically to help keep it cool.
mode: singleCustomising the Thresholds
22C is a reasonable outdoor trigger point for Dutch summers, but adjust based on the room's exposure: south-facing rooms that heat up fast can trigger earlier at 20C; north-facing rooms that rarely get too warm can trigger later at 25C. The 21.5C indoor confirmation threshold works well for bedrooms - adjust stricter (23C) or more proactive (20C) to taste.
Why the indoor threshold is slightly below the outdoor one: rooms with poor insulation or significant window area often run a degree or two warmer than the general house temperature even before the outdoor forecast fully reflects it. Setting the indoor threshold a touch lower catches this lag.
Step 4: Add a Matching Open Blinds Automation
The closing automation alone leaves blinds down indefinitely. A companion automation reopens them once conditions cool down - but only if this automation was the one that closed them, using the input_select helper to avoid reopening blinds closed manually for another reason.
alias: "Reopen blinds - bedroom cooled down"
description: >
Reopens the blinds once the room has cooled and they were closed
automatically by the warm-weather automation.
triggers:
- trigger: numeric_state
entity_id: sensor.YOUR_ROOM_TEMPERATURE_SENSOR
below: 20
for:
minutes: 15 # confirm it's genuinely cooled, not a brief dip
conditions:
# Only reopen if this automation was the one that closed them
- condition: state
entity_id: input_select.blinds_auto_activated
state: "Yes"
actions:
- action: cover.open_cover
target:
entity_id: cover.YOUR_BLIND_ENTITY
- action: input_select.select_option
target:
entity_id: input_select.matteo_blinds_auto_activated
data:
option: "No"
- action: notify.mobile_app_iphone_XXXXXX
data:
title: "Blinds reopened"
message: >
The room has cooled down - blinds have been reopened automatically.
mode: singleReusing This Pattern for Other Rooms
The same four-condition pattern (outdoor temp, sky condition, daylight, indoor temp) works for any room with its own temperature sensor and blinds. Duplicate the automation and adjust the indoor sensor entity ID, the blind entity ID, the input_select helper name (each room needs its own), and thresholds tailored to that room's sun exposure. A south-facing living room might trigger at a lower outdoor threshold than a shaded north bedroom, even in the same house.
Troubleshooting
Automation never triggers: Verify the weather entity's temperature attribute is updating in Developer Tools - States. Confirm the entity name matches exactly.
Triggers but blinds don't move: Test the cover entity manually in Developer Tools - Services - cover.close_cover. Confirm the entity ID is correct.
Closes blinds even on a cool day: Check Traces - likely the indoor sensor condition is not actually being enforced. Verify the entity ID and threshold.
Doesn't reopen automatically: Confirm the input_select value is actually set to Yes after closing - check Developer Tools - States. If No, the close automation may have failed partway.
REST command for ventilation fails: Test the rest_command service independently in Developer Tools - Services before relying on it inside this automation.
Guide written by a Home Assistant enthusiast in Utrecht. The difference between a forecast and what a room actually feels like is exactly why the indoor sensor matters.



Comments