Smart Home Heating & Hot Water Controller

When we moved into our current home, it was fitted with this very basic IMI heating and hot water controller. This project describes how I went about replacing this to enable my contextual smart home to take full control of our central heating and hot water.

Note:  This project is not trying to change the physical structure and pipework of the heating in my current home. In an ideal world, I would have a multi-zone system with full zone independence but for this project, I am just making the best of what is already in place.

Background

It's probably worth adding a few words about how we use our current heating and hot water system ...

Our current home is well insulated. From about April to November the central heating is usually switched off completely. During the colder months our central heating is only ever required from the morning to about 9:30pm, at which point it is then switched off to let the house gradually cool down over night. Because the house is well insulated, it also warms up quickly. Using the heating in this manner may seem odd to some people but, it has worked well for us and our energy bills are fairly low for this type and size of house. This is one reason why I haven't really looked at advanced automation before now.

Over the years, as we have refreshed various rooms and bathrooms we have fitted passive thermostatic radiator valves. These give some limited control on the heat output and distribution of heat throughout our home. All the bathrooms have them fitted, as does the kitchen (which has many other sources of heat in it).

We have no active cooling in our current home, other than a fixed ceiling fan in the conservatory and portable fans we use around our home. All my experience and research leads me to think that we need air conditioning in our next home.

Controller

The IMI controller that was installed when the house was built is very basic. It is a simple two-channel device that allows two scheduled on and off events each day. It doesn't even allow them to be different for each day of the week, so I can't even have a different schedule for weekdays and weekends.

Gas Boiler

Our gas combi-boiler was in a utility room but now resides in an extended kitchen. It is wall mounted and clearly audible when on.

Radiators

The boiler and pump passes hot water through a number of radiators, distributed around our home. These have been installed using a complex mix of 22mm pipes, to 15mm pipes and then to micro-bore pipes to each radiator. About half of the radiators have dumb thermostatic radiator valves on them.

Thermostat

This mechanical thermostat was installed in our entrance hall when the house was built. In most respects it is terribly badly placed. On a cold winter day, opening the front door even briefly, will hit it with cold air and the heating will kick in, even though it may already be perfectly warm in the rest of the house.

Only in one respect is it well placed, in that it is mounted on a wall directly under the airing cupboard. Running new wires to this location is really easy. I will have to run new wires because there are only two wires going down to the thermostat, a live wire and a switched return.

Because it is so badly placed, simply replacing it with some kind of 'smart thermostat' won't help much. I'm also not a huge fan of any of the current 'smart thermostats' available on the market, so I will be taking a different approach.

Hot Water

The boiler heats water in an insulated Flomax tank to around 80°C and this is pressurised by the mains water pressure. There is a small header tank on top of the tank for the central heating system. Hot water from this tank exits via a blender (to reduce the temperature) and goes to the various hot taps. The heating system is a closed circuit with a heat exchanging coil passing through this tank. This means that the hot water is effectively on when the heating is on.

There are three connected temperature sensors mounted on this tank, one at the bottom, one in the middle and one at the top. These allow my contextual smart home to measure how much hot water is available and this can then be used to more intelligently control the hot water heating. It also means that my smart home can answer questions like, "Is there enough hot water for a bath?" or "Is there enough hot water for a shower?" via its artificial intelligence.

Objectives

The objectives of this project are to:

Design

My contextual smart home models both 'Heating' and 'Cooling' and these encompass all of the types of space heating and cooling in my smart home. Both can be controlled by any of the numerous user interfaces and all of them enforce permissions. Over the summer months I switch off Heating completely. Both the Heating and Cooling can't be on at the same time, to avoid conflict. This is never an issue in the UK, assuming you have reasonable insulation.

The Hot Water is considered a separate item and under independent control from the Central Heating.

Even when the Heating is off, my smart home will exercise the Central Heating once a week for five minutes, to ensure the pipes are kept clear and the pumps don't seize up.

Isolation

Next to our boiler is a wall switch and this cuts the power to the boiler and the airing cupboard. This includes the controller, pumps, immersion heater, etc. This will remain fully functional for all of the mains powered elements of this project but, the new Arduino-based controller will have its own 12V dc protected power supply.

Manual Override

As with all smart home technology it makes sense to have some form of manual control or override, just in case. This project is not going to be an exception. The power to each solid-state relay will go via a 3-position switch (on, auto, off). In normal operation this witch will be in the central position, which is under smart home control but the up position will force it off and the down position will force it on. These switches will not be in obvious view and will not be easy to access, to avoid them being operated accidently. If nothing else, they make testing a lot easier.

Buttons

I use a lot of smart buttons and switches and have already implemented a few that relate to this project. Every smart button in our contextual smart home is also a source of occupancy information.

The 'Hot Water +30' button will extend the time the Hot Water is on by 30 minutes. I will have a 'Hot Water +60' button. These make it easy to ensure hot water is available outside of our normal usage patterns. Because out boiler is so efficient, it only takes 15 minutes to heat enough water for a shower from cold but, in normal usage it retains fairly hot water for over day, as the tank is so well insulated.

I'm going to 3D print a mount and mounting plate for the buttons/switches. This has large clear letters that will be obvious and painted black to stand out on the white background. This will make it much more readable, when mounted inside our airing cupboard.

Note that I have also added '+60' and '+120' buttons for the central heating, to enable manual over-ride and control. This is just good practice in the smart home, rather than be 100% dependent on smart functionality.

Buttons don't have to be physical. I can use iOS short cuts, software buttons in web interfaces and have even developed a responsive user interface that works on the Amazon Echo Show 8.

"Thermostat"

My first goal is to use the existing thermostat wiring to pull through some low voltage wiring, so that I can replace the existing thermostat one that is powered by a 12V dc supply. The thermostat is basically a switch that signals (using mains voltages) whether the current temperature is above or below the target temperature.

The target temperature is currently measured by the mechanical thermostat in our entrance hall but my contextual smart home will allow any of my temperature sensors to be used, including virtual sensors. This is because it supports technology abstraction.

My contextual smart home also models the concept of 'smart thermostat' in software and these are extremely powerful. A controller can be used to easy configure dynamic target temperatures based upon house mode, occupancy, the season, month, etc.

Optimisation

This mechanical thermostat is a dumb switch and doesn't do anything clever. Smarter thermostats work slightly differently and employ a number of techniques in order to ensure your heating system works better for you and also runs more efficiently.

Time Proportional & Integral (TPI)

is a feature in a thermostat that ensures that the boiler fires for the shortest possible time in order to reach and maintain chosen set point. It does this by using software to learn how the room temperatures are achieved and maintained, then uses this data and the current temperature to predict how long the boiler needs to be fired for. Each instance of my software 'thermostat' controller will be configurable for the specific zone it resides in and I plan to make it a learning algorithm too.

External Temperature & Weather Compensation

Smart thermostats generally rely on weather data from the Internet rather than using an outdoor sensor, as this makes the installation quicker and easier . But my contextual smart home has external temperature sensors and this is part of its wider context.

The weather is the biggest factor in determining how much energy is required to heat your home. The colder the weather outside, the more energy will be required but the weather outside is constantly changing. My contextual smart home not only knows about the weather but it also knows about weather forecasts. This can be a factor in how it operates, to greatly improve the efficient and comfort.

A big part of this project is an on-going study and assessment of its operation and the effect these external factors have on my control algorithms. I aim to optimise and improve them in a generic way, such that they can be applied to any home or zone within it.

Boiler Run Time

Boilers run more efficiently when they have reached their optimum operating temperature. This means that running a boiler for short periods of time and often is usually a lot less efficient than running it for longer and less often. Each type, make and model of boiler is different in this respect and the control algorithm needs to factor this in when the boiler is in operation.

Context

The advantage of having both the Central Heating and Hot Water under the control of my contextual smart home is that it is fully context aware and can be controlled based on the house house mode and it knows if we are home, out at work or away on holiday. It also has full occupancy and presence context, so it can adapt accordingly and also deliver a personalised user experience.

Implementation Phase 1

The first phase if this project involved replacing the IMI controller with the Z-Wave based Secure SSR302. Electrically, it is identical to the IMI controller and so was a straight swap.

The SSR302 is controlled via my Vera Plus Z-Wave gateway. This is the weakest part of the control link in my smart home and so I plan to replace the SSR302 with solid state relays in a later phase. For now though, it allows me to progress things and test the other parts.

There are two locking screws and then the controller just pulls out of the standard connection plate.

With this done, my contextual smart home now has intelligent control over the timing of the Central Heating and Hot Water but not the target temperature (yet).

During the summer months, our central heating system is switched off and is not used at all from about April to October. Once a week (though this may change), during these months my @smartest_home exercises our central heating by setting a high target temperature and turning on the heating for 10 minutes. This helps keep the pipes clear and the pumps running smoothly, which improves reliability.

Note:  The obvious downside that I discovered to this approach is that the old controller is configured to turn on the hot water when the heating is also turned on. Without this, the heating system doesn't run properly. Unfortunately, the SSR302 cannot be configured to work this way, so I'm having to do this in software.

Implementation Phase 2

The second phase of this project involves developing my own 'smart thermostat'. It's not really a thermostat though and more of an accurate, networked temperature sensors.

This approach makes smart thermostats redundant and all the traditional smart thermostat functionality is implemented in my smart home's software.

Implementation Phase 3

Phase 3 involves replacing the Z-Wave based SSR302 with my own wired controller based on and Arduino and two relays. This hugely increases the reliability of the system as Z-Wave is not even close to wired technologies in terms of reliability.

Note:  I'm not using solid state relays because in some situations the mains voltage maybe applied to the output stage even when it is turned off. A standard relay has change-over contacts and can handle this situation better.

In order to simplify the integration and wiring of my own 'controller', I have designed a blank controller plate in Autodesk Fusion 360. This has the physical characteristics of a standard controller and simply clips onto the standard controller back plate but, it allows me to use my own custom wiring on the controller side. This will be 3D printed on my Ender 3 Pro 3D printer. I did this by carefully measuring my old controller's dimensions.

This is my final 3D printed blank controller plate. The captive nuts allow a standard blank 1-gang switch cover to be used to cover over the wiring to the pins (not shown installed here).

I looked at using a standard switch blanking plate as a cover, to make it a nice safe and tidy installation. I'm now going down the path of 3D printing a cover though. My new cover is very simple and has a double skinned wall to block light at the sides, and a single 1mm thick front to allow the LEDs to show through.

I've designed a bespoke PCB with two relays and LED indicators.

I used some panel pins as the pins to make the electrical connections and cut them down to the right length and smoothed them off with a multi-tool.

This is the controller installed on the back plate (minus the front cover). It's working really well. One thing the old controller did was, to ensure the hot water channel was on when the central heating is on. The heating doesn't work otherwise! This simple logic is implemented in the Arduino interface, so that the logic elements of 'Hot Water' and 'Central Heating' are independent from a control perspective but, mapped correctly from a relay control perspective.

Implementation Phase 4

Phase 4 involves replacing radiator valves with smart thermostatic radiator valves. This will be another project in its own right as I will not be using the very average devices that are currently on the market and certainly won't be using devices powered by batteries or using their own local temperature sensors!

I've bought a few quality 'dumb' thermostatic valves and I'm looking at 3D printing my own smart 'heads'.

Implementation Phase 5

Phase 5 is basically an on-going study of how well my new heating system works under full smart home control and the optimisation of my models and algorithms to maximise the efficiency and comfort levels. This is helped by the fact that my Home Control System captures detailed logs and can easily be configured to capture more or less detail as required.

Use Cases & Examples

This example tweet from our @smartest_home shows how it monitors the hot water tank temperature at various levels, to understand how much hot water is available at any one time.

Summary

Placing the boiler under direct smart home control makes the control much more 'intelligent' and efficient. It will be very interesting to see just how our energy use declines going forward and I will share the numbers here. To aid us in measuring this we monitor our hourly gas and electricity usage, so we have real numbers for our measurements.

My research in this space also shows that the days of the smart thermostat are numbered. With the smart home in control, the smart thermostat is now an expensive, redundant toy.

My boiler is old and uses binary control but even if it was a modern boiler (and it might soon well be), then the Arduino controller used here could be updated to use the OpenTherm protocol to directly control my new boiler.

Measured Energy Savings

Just by putting our hot water heating under intelligent, contextual control I have reduced my gas usage by over 18%. This is purely down to the adaptive scheduling of our hot water system (using a controller), resulting in the boiler being on for less time. Whilst we also have a manual 'boost' button that extends the time the boiler is on for by 30 minutes, we have very rarely needed to use it. This is to be expected as it was designed for those unusual situations where it is not possible to predict hot water requirements.

With both the heating and hot water under intelligent control, I'm seeing reductions in my gas bill closer to 30%.

Further Reading