Skip to content

Ideas Energy saving heating

ggodart edited this page Jan 30, 2021 · 1 revision

Introduction

In order to save energy, it is essential to minimise the time that a heating system is active. Key to this is Zoning and Intelligent timers. Though written for a heating system (I live in the UK where AC is very rare) it could be adapted to an Aircon system.

Zoning

In a Zoned heating system, each room's heating is controlled individually, analysis at the Tower of London showed they saved 25% of their massive heating bill by using zoning. You can also achieve this sort of saving, and more in some cases.

For this to work, the heating needs to be controllable in each room, for a wet radiator system this is achieved by changing the Thermostatic radiator valve for an electronic one. It also needs a temperature sensor in each room see here for examples. In addition to these physical devices the following MiserHouse items are defined;

Item Comments
$room_name->{Heating_state} Is the heating on or off. This may be controlled by the user (e.g. a web page, a timer, an override (eg turned to off when mode_occupied set to out
$room_name->{temperature} The current temperature in the room
$room_name->{target_temperature} The temperature that the heating should keep this room at when $room_name->{Heating_state} eq ON
$room_name->{occupied} Is this room being used, set to out for rooms not currently being used e.g. a spare bedroom, or dining room. Set by a web interface or remote control
$room_name->{comfort_temperature} The temperature that the heating should keep this room at when the room is occupied but $room_name->{Heating_state} eq OFF. This is useful for rooms that cool down very quickly (low thermal mass) so the heating doesn't have to work so hard to get the temperature up to the target temperature when the heating comes on
$radiator-{room_name} Name of the room where this heater lives, used for the case where there are multiple radiator control valves in a room
$room_name->{seconds_per_degree} How long it takes to heat this room by one degree, used by smart timers to work out when to tun on the heating. See below for how this is set automatically
$boiler The name of the heat source where there is one boiler and multiple radiators
$frost_temperature The minimum temperature for any room irrespective of the other modes

Logic

The system relies on a number of state handlers;

  • If any radiator is on make sure the boiler is on, conversely if they are all off turn the boiler off
  • If the room temperature drops below the frost temperature turn on the radiator in that room
  • If the room is occupied and the heating is on, control the radiator to bring the room temperature up to the target temperature
  • If the room is not occupied but the house is occupied, control the radiator to bring the room temperature up to the comfort temperature
  • If the house becomes not occupied, turn the heating off in all rooms
  • If any of the temperature settings change re-check that the radiator is in the correct state

Intelligent timers

When you set the timer for most heating systems you set the time the heating comes on, so on warm days it comes on too early and cold days too late. With an intelligent timer you set the time you want the room to be warm.

This mechanism relies on knowing how quickly a room warms up $room_name->{seconds_per_degree}. I have found that the following technique works pretty well.

  • Establish a maximum and minimum seconds per degree and use these if any of the subsequent measurements go out of range (150 to 4200 seconds per degree centigrade)
  • every time a radiator turns on set $room_name->{start_tmperature} = $room_name->{temperature}
  • every time a radiator turns off, if its been on for more than 30 minutes (based on get_idle_time) calculate the rate;
$room_name->{seconds_per_degree} = $this_radiator->get_idle_time / ( $room_name->{temperature} - $room_name->{start_tmperature} )

Then for each timer every 5 minutes it can see what the current room temperature is, and can calculate if it needs to turn on the heating based on how long before the target time and how long it will take to warm up.

Clone this wiki locally