this post was submitted on 30 Jan 2024
18 points (95.0% liked)

homeassistant

12139 readers
4 users here now

Home Assistant is open source home automation that puts local control and privacy first. Powered by a worldwide community of tinkerers and DIY enthusiasts. Perfect to run on a Raspberry Pi or a local server. Available for free at home-assistant.io

founded 2 years ago
MODERATORS
 

Does anyone know a way of calculating the amount of heating I need to maintain an average temperature in terms of kWh of heating per 24 hours? Ideally one taking into account weather conditions.

I have a pretty big Home Assistant setup which includes switches for individually controlling all the (electric) heaters in my home. I'm also using an electricity supplier that changes the amount they charge every 30 minutes to reflect supply and demand. Given these rates are published at least 24 hours in advance I can currently choose a number of hours to run the heaters per day and have an automation automatically select the cheapest periods. I'm paying less per kWh for heating than I would if I was using a gas boiler. Plus, it's all from renewables, so working out that number of hours is the next step.

you are viewing a single comment's thread
view the rest of the comments
[–] [email protected] 14 points 10 months ago* (last edited 10 months ago) (1 children)

This is effectively what a thermostat does.

The problem is that the controller won't know how well insulated each room is, how cold it is outside (including wind speed), which doors and windows are open and when, what people or devices are doing in each room.

The way thermostats solve this is by creating a closed loop where they react to how the room reacts to their actions.

Depending on how your heaters work you'll likely need some dynamic component to react to these unforeseen changes unless you can live with the temperature being very unstable.

To get a rough idea of how long the heaters will have to run you can look at each room in for the last n days and see if the heater's runtime was long enough to (on average) hold your target temperature. Dividing the average temperature with the target temperature will give you an idea whether they were on for too long or too short. (If the heaters have thermostats you'll likely need to subtract a small amount from that value so that it will settle at the minimum required heating time)

If that value is close to 1.0 you know that on those days the heating time was just about perfect.

Once that is the case you can take the previous days heating time and divide it up over the cheapest hours. The smaller of a value n you choose the more reactive the system will be but it will also get a little more unstable. Depending on your house and climate this system described here might simply be unsuitable for you because it takes too long to react to changes.

There are many other ways to approach this very interesting problem. You could for example try to create a more accurate model incorporating weather and other data with machine learning. That way it could even do rudimentary forecasting.

[–] [email protected] 3 points 10 months ago (1 children)

What you're describing is similar to the approach I've already taken which is reassuring! The problem I've got is that it only really works if the weather's fairly consistent, but the problem I have is that the property I'm in is very old, with fairly naff insulation and huge, single-pane windows that get battered by wind from an open aspect. I think for most people your approach would work well, though.

And, yeah, I don't mind the temperature peaking and troughing for a couple of hours every now and then, but I appreciate that's not for everyone!

[–] [email protected] 3 points 10 months ago (1 children)

If you have such a system up and running already you could try to modify it before ripping it out and starting from scratch.

Borrowing an idea from the machine learning approach you could additionally take the difference in average outside temperature yesterday and the average forecasted outside temperature today. Then multiply that by a weight (the machine learning approach would find this value for you but a single weight can also be found by hand) and subtract it from the target temperature before the division step discussed previously. Effectively saying "you don't need to heat as much today since it will be a little warmer".

I fear that's about all you can do with this approach without massively overcomplicating things.

[–] [email protected] 2 points 10 months ago

massively overcomplicating things

...you say? 🤔