Automated Blinds & Curtains SAVE YOU MONEY!!!
Did you know that around 20% of an average home’s total heat loss is through your windows? By making sure that you close your curtains or draw the blinds in the evening, you might be able to reduce that heat loss by up to nearly 30%. That’s real money you can save just by closing your curtains! And I don’t want you to just take my word for that, I took these values from a paper published by The University of Salford back in 2017.
They built a full scale replica of a typical early 20th century home in a climate controlled warehouse that they call The Energy House. That meant they could precisely measure just how much energy it took to heat a home and how much was leaking out through the building’s fabric. They experimented with different types of window coverings with various differing results, but in every case there was a saving to be had.
Obviously, automating curtains and blinds will probably not save you any money overall because they’re expensive to buy, but with that disclaimer out of the way, I assume you’re here because you want automated blinds and curtains anyway for the sake of having gadgets. So what are the advantages of automating them? Firstly there’s convenience – in our kitchen, we had normal manual roller blinds, but we never used them. I think we were probably just too lazy because you had to remember to close them when it got dark, and then open them again in the morning. That’s a lot of effort. Secondly there’s a security aspect – if you go away on holiday then you can make the house look more lived in if the curtains and blinds are closing every evening and opening again in the morning.
I don’t personally have any automated curtains – yet. The reason being that automated curtain rails are very expensive. You can get retrofit solutions such as the SwitchBot Curtain robot, which seems to get great reviews, but I’d need to replace my current curtain poles because they’re quite thick and the curtains regularly get stuck when you manually close them. A robot isn’t going to be able to cope with that!
What I do have are three Ikea Fyrtur blinds. Two in the kitchen, and one in our bathroom. If you haven’t seen these before then let me give you a quick rundown. They come in two flavours: black-out or not black-out, and they come in one colour: grey. They also come in a whole range of fixed widths – so you can’t technically cut them to a precise width, although I have seen a YouTube video where they did just that with a hacksaw and some scissors, but you really do void your warranty then! Each blind is battery powered and drives a motorised roller. They come with a little button and a signal booster.
You can use them totally standalone because the booster allows the button to pair directly with the blind, or you can use Ikea’s Tradfri smart gateway. But, both the button and the blind use the Zigbee protocol which means you can connect it straight to Home Assistant!
I personally use a Conbee II Zigbee stick paired with the Zigbee2MQTT add-on in Home Assistant. You can use the native ZHA integration instead, but I find that Zigbee2MQTT supports far more devices, in fact I’ve yet to find a Zigbee device that it doesn’t support, and there’s very little difference in the effort required to get it working.
Now I need to tell you what’s wrong with them. Well, they’re not that reliable and they keep forgetting how to communicate with the Zigbee controller. This is usually after I’ve had a power cut and some of my zigbee smart plugs have gone offline for a while, or if I’ve removed a smart plug that the blinds were using as a mesh relay. Basically, they don’t seem to cope well with the zigbee mesh converging after a change. I have to quickly repair them, which also involves setting the stop point for the blind opening. It’s a pain, I probably do this once a month for a blind. I stopped using Ikea’s signal boosters for the same reason because this made the problem even worse, so those gadgets have been relegated to my spares box. If they do stop communicating with your smart hub, then they can still be controlled manually by pressing the physical buttons next to the battery compartment, if you can reach them!
Another disclaimer – don’t install these blinds in the bathroom! Ikea don’t officially say why, it could be because of water and electronics, but I think it’s more likely because of the material deforming when it gets damp. It starts to warp and buckle a bit in the humidity, and sometimes it even gets stuck when opening or closing. In extreme situations it’ll even chew itself up in the mechanism because it’s not closed evenly.
On to the automations then, and this is very easy. But, obviously, I have managed to over-complicate it somewhat. I decided that closing them at sunset wasn’t ideal because it’s quite often still a bit light at sunset, especially during the summer months. Rather than use a timed offset from sunset, Home Assistant lets you track the sun’s elevation. Through trial and error I figured out that it’s dark enough to close the blinds when the sun is 2 degrees below the horizon.
alias: 'Blinds: Close at Sunset' description: '' trigger: - platform: numeric_state entity_id: sun.sun attribute: elevation below: '-2.0' condition: - condition: time after: '12:01' - condition: state entity_id: input_boolean.manual_override state: 'off' action: - service: cover.close_cover data: {} target: entity_id: - cover.kitchen_blinds - cover.en_suite_blind mode: single
In my “close the blinds” automation I use this as the trigger and when the sun drops below -2.0 degrees it executes. I’ve got my usual check to make sure I’ve not turned on my manual_override switch to disable automations, and I make sure that the time is after midday – that’s to make sure that the automation doesn’t fire in the early hours of the morning. Alternatively, you could check that the sun’s ‘rising’ attribute is false. Finally the action calls the cover.close_cover service specifying the blind entities. You’ll see I’ve created a group for the kitchen blinds so as I can call them in one go.
alias: 'Blinds: Open Kitchen at Sunrise' trigger: - platform: sun event: sunrise offset: '+00:00:00' - platform: time at: '07:00' - platform: state entity_id: input_select.home_mode to: Home (Day) condition: - condition: time after: '06:59' - condition: sun after: sunrise before: sunset - condition: template value_template: '{{ state_attr(''cover.kitchen_blinds'',''current_position'')|int != 100 }}' - condition: state entity_id: input_boolean.manual_override state: 'off' - condition: template value_template: '{{ is_state_attr(''sun.sun'', ''rising'', true) }}' action: - service: cover.open_cover data: {} entity_id: cover.kitchen_blinds - delay: hours: 0 minutes: 1 seconds: 0 milliseconds: 0 mode: single
Opening the kitchen blinds is similarly straightforward, but also complicated. I want my blinds to open at sunrise, but no earlier than 7am. So I set my automation to trigger at sunrise, at 7am, and if my home mode changes to Day (so is not Night, and I’m not Away). The conditions check that it’s at least 7 o’clock, that sunrise has happened, that the blinds are not already open, and that the sun is rising. This means that if sunrise has triggered the automation at, say 6am during the summer, the blinds will not open because we haven’t reached the 6:59am condition. But at 7am the automation will trigger again and they’ll open.
On the flip side during the Winter it might be 7am but the sun hasn’t risen yet so the automation is blocked by the “after sunrise” condition, but when sunrise happens and triggers the automation, it’ll run. See, simple but complicated!
alias: 'Blinds: Open En-Suite (Using Workday)' description: '' trigger: - platform: time at: '09:00' - platform: time at: '11:00' condition: - condition: or conditions: - condition: and conditions: - condition: time after: '09:00' - condition: state entity_id: binary_sensor.workday_sensor state: 'on' - condition: and conditions: - condition: time after: '11:00' - condition: state entity_id: binary_sensor.workday_sensor state: 'off' - condition: state entity_id: input_boolean.manual_override state: 'off' action: - service: cover.open_cover target: entity_id: cover.en_suite_blind data: {} mode: single
Finally, the bathroom blind has a different opening schedule depending on what day it is. I use Home Assistant’s built-in “workday” sensor with default values for the UK. This sensor is on when it’s a regular work day (in my case, Mondays to Fridays) and off at the weekend. It also knows when it’s a public holiday and will turn off for those days too. My bathroom blind will open at 9am on a work day, and 11am on a non-working day. These timings are to make sure that it doesn’t open while we’re in the shower, and to give the blind time to dry out a bit after our showers before rolling itself up. This helps reduce the issues I’ve had with the blind sticking to itself, and should also help prevent mould building up on it.
So that’s how I’ve implemented automated blinds in my house. I hope to expand it to curtains, and maybe different types of blinds in the future. Please let me know if you’ve done anything differently or if you have any suggestions or improvements.