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

homeassistant

12130 readers
3 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.

top 22 comments
sorted by: hot top controversial new old
[–] [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 9 months ago

massively overcomplicating things

...you say? 🤔

[–] [email protected] 10 points 10 months ago* (last edited 10 months ago) (1 children)

I have had collegues that did entire PHD's on this topic with giant simulations and machine learning... It's just to say that this is a very difficult problem to solve exactly, so go easy on yourself and find a simple approximation or something good enough to get you the edge on the prices you pay for heating. I see some good ideas in the comments already, but keep it simple is my best advice.

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

So if I solve the problem, do I get their PHDs? Would I have to pay postage?

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

I think you'll have a really really good product/algorithm to sell for the big HVAC and heating companies... You wouldn't have to worry about saving a bit of moneys here and there anymore that's for sure 😅

[–] tifriis 5 points 10 months ago (1 children)

Maybe you can check how versatile made it: https://github.com/jmcollin78/versatile_thermostat Works like a charme here

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

Oh, wow, that's... a whole thing. I'll take a look at that, thanks.

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

If you're measuring the temperature in the room currently, you could try trending it yourself. Start the heater, and see how quickly the temperature rises (e.g., degrees per hour). Call this Rate 1.

Then turn off the heat and see how quickly the temperature drops. Call this Rate 2. For the formula below, make it a positive number.

Assuming the weather conditions are similar and the room temperature doesn't change too much during data collection:

Rate of heat loss = Heater power * Rate 2 / (Rate 1 + Rate 2)

This number could be impacted by the weather: temperature, wind and insolation (affected by time of day, time of year, latitude, and cloud cover). It's also impacted by room conditions (temperature, slade position, how many times the door is opened), so you'd need to do a few trials to get a sense for thr impact of different variables.

You've probably already thought of this, but your strategy is going to result in noticeable swings in temperature in the room, because ypure going to do a lot of heating at once when prices are cheap, then turn off the heating and let the room cool. Compare that to a thermostat that tries to maintain a constant temperature.

Sounds like a fun project - good luck! I'd love to hear updates here as you go.

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

We're thinking along the same lines, I think, I just wanted to see if someone smarter than me had published their solution :D

I'll post if/when I get something that works, thanks.

[–] [email protected] 4 points 10 months ago* (last edited 10 months ago) (1 children)

I might be able to help you get an approximation.
Though quite honestly, you'd probably save time and effort by just using a thermostat in each room, and setting HA not to power the heat on when pricing is >75% day average, since you know ahead of time, and it'll probably save you about as much.

Overall, you'll need to calculate the heat loss per delta T per room.
You'll likely have to do this by best estimate, then perhaps a bit of real-life experimentation with a 1KW heater, or similar.

For each room, make a list of the external walls, their composition, and the depth of each layer of material depth.*
Look up the rough WMK (watts of heat lost per square meter (at 1m thick), per degree difference from the outside to the inside) for each material.
Take those values, and use them to make an estimate of the room loss.
So for example, a room with 1 external wall of 10m2, made of 215mm brick (0.7WMK), and 50mm of fibreglass insulation ( 0.038WMK).
1÷(((1÷0.7)×0.215)+(1÷0.038)×0.05) = 0.61 WMK.
Multiplied by 10m2, 6.1Watts per degree difference.
So if it's 0 outside, and 20 inside, 120W lost by that wall.

There are a lot of other factors that you can bring in (air tightness, rsi, thermal gain). But this will give you a low ballpark number you can start working off for each room.
So long as you're supplying more than the room is losing, it will gradually heat.
If you want to work out how much it will take to warm all the objects/walls, that's a whole other calculation. But if you're maintaining temps, it doesn't matter so much.

Oh, and a thin sheet of glass will lose about 5W/m2/k. Scary!

* I'm ignoring internal walls, as I'm assuming you'd plan to keep the house roughly the same temperature. And it would get complicated.

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

Thanks, I already suspected I would need to get Excel involved and this confirm it! The window thing you mentioned is very real - my place has single-pane 2×3m windows everywhere; their insulative properties are basically negligible.

Once I've got a reasonable set of estimates going I'll probably push the calculations into a Helper to produce daily numbers automagically. If it works reasonably I'll post an update on here. Thanks again!

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

My thermostats compute this for me. This is all the ones I have on the ground floor (other ones aren't in HA yet). It's been a bit cold last night, around -14°C. Oh, and the chart is for yesterday.

"Cuisine" is a pretty large room of about 250-300 sq ft, and it's in kind of an open space with "Salon", hence why the latter doesn't run very often. "Bureau" is my office, about 150 sq ft, and "SDB RDC" is a bathroom / laundry room, a bit less than 100 sq ft.

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

Looking back in history, it's actually pretty representative and doesn't change that much even if the outside temps move by ~10°C. "Cuisine" pretty much always eats between 35 and 40 kWh per day while "Salon" doesn't do much. My house is very old (180 years old), so the insulation definitely isn't up to modern standards, but I've seen newer houses (like '50s-'70s) with worse.

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

Interesting. I think the stinker for me is that I'm in a (rented) property with huge, single-pane windows and the changes can be pretty dramatic. Makes me think it's time to look for a more eco-friendly place...

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

https://loadcalc.net/

That's for sizing equipment, but in the top left you can change the design conditions to get two points and interpolate between them.

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

Oh, nice, I'll have a play about, thanks!

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

Why not just use standard thermostat functionality: set the target temp a bit higher when rates are low and a bit lower when rates are high. It won’t be perfect but it’ll stay more comfortable and you don’t have to over complicate things.

One thing you don’t mention is whether you have any way to store heat, to even out the times when your heat is off. Some of this is thermal mass in the room and maybe that’s all you can do. My parents house when I was a kid had thermal storage radiators that worked really well. The heating elements were on a timer, so only came on overnight when rates were lower, but only heated the bricks or oil or whatever storage medium was inside. The radiators were essentially an insulated box so were cool to the touch. Then, during the day, the thermostat simply controlled a fan circulating air through the radiator to pick up heat as needed.

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

Thanks for your response.

Why not just use standard thermostat functionality: set the target temp a bit higher when rates are low and a bit lower when rates are high.

That was my original idea and it actually works pretty well, but since the cost of power spends most of the day at industry average rates electric heating gets pretty expensive which is really what I'm trying to minimise.

One thing you don’t mention is whether you have any way to store heat

I don't, but I really, really wish I did. The place I'm in is rented so I'm loathe to make big changes like installing storage heaters (installing relays in the walls behind the current radiators doesn't count, shush) but I had old-fashioned, 1980s storage heaters exactly as you described in my old place and I loved them for the exact reasons you described. They weren't active with a fan, but even just having a very heavy, very hot thing in the corner of the room was enough to maintain the temperature and given my electric rates regularly get below 5p/kWh and sometimes even go negative overnight my heating bill was basically negligible. Consider me a member of Team Storage Heaters.

As you suggested, what I'm trying to do is turn my walls, floors and furniture into the thermal mass of a storage heater, by making them toasty when it's cheap in the hope they'll keep the room slightly warmer when it's expensive.

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

I've used https://www.bestheating.ie/btu-calculator to decide the power of my new boiler, so far it is working well. But as other said, this is likely a very rough approximation.

[–] [email protected] 1 points 9 months ago

Thanks, I gave that a go and it actually came up pretty close to the numbers I already had (after converting BTU to kWh anyway) so that was a useful sanity check, thanks!