The primary goal of this project is to enable smart, proportional control of solar energy into the immersion heater in my hot water tank. This design is also well suited to electric space heating though and I plan to test this as well. It is just one small part of my larger smart home solar project. This project will allow my contextual smart home to make intelligent, automated decisions as part of its smart energy management. I'm handing this over to my smart home as it has all the information and whole home context to make the best decisions in real-time.
It should save us lots of money, improve our Return On Investment (ROI) and to also improve our quality of life. With the right conditions, my smart home will decide to divert free power into our hot water tank and/or space heating. It can vary the amount of power diverted to the immersion heater or space heating between zero and 3000W, in 150W increments.
In order to intelligently control the immersion heater and space heating, my contextual smart home needs an accurate view of solar energy generation and energy consumption, i.e. the free power. This needs to have low latency in order for it to be responsive to changing weather conditions. A cloud API is simply not going to be responsive enough and will not work if the Internet connection or remote server is unavailable, so I have developed my own split-core current transformer interface PCB, to measure energy generation and consumption locally.
There are commercial products that can divert spare solar energy to a hot water tank, such as the Marlec Solar iBoost+ (~£370) or the MyEnergi Eddi (~£450). Neither of these has the whole home context that my contextual smart home has though. This allows my smart home to make much more intelligent decisions on when to use solar energy to heat the water and how much energy to divert into our hot water tank and/or space heating. The solution built here is also considerably cheaper, costing £56 to build (for the power controller only).
Our current hot water tank already has a 3kW immersion heater. Before installing the controller, I measured the resistance of the immersion heater at 20.5Ω.
There is a tank thermostat installed in the tank that provides a 'Hot Water Demand' signal to the boiler for hot water heating. I've already developed my own ac voltage detection sensor, which is one of my smart home building blocks and is used to monitor this signal and be one of the inputs into the decision making process.
Because I also have three temperature sensors on my hot water tank, my smart home knows how much hot water is available in real-time. This is an example of a virtual sensor and means my Home Control System could only heat the tank to a set percentage (e.g. 50%) of its capacity if required. It is very easy for my smart energy management to dynamically prioritise based on this too.
My contextual smart home is making much more intelligent decisions than 3rd party products. It has whole home context and knows about the house status, so it automatically knows if we are in, out or away on holiday. It has real-time access to all of the 400+ sensors and devices in my smart home. It knows how hot the water tank is at any given time, when we will need hot water, the weather forecast, who is at home, etc. This stuff is important because it also knows that my wife has a bath and that I always have a shower in the morning. The primary goal of my contextual smart home is to enable intelligent assisted living but, energy efficiency is also important.
My design is loosely based on this design and I worked with a friend to design and build a bespoke PCB that can be easily interfaced to an Arduino. My contextual smart home will use my unified communications protocol to request how much power is diverted into the tank.
The main PCB has:
Power control will be from 0% to 100%, in 5% increments. A clever zero-crossing algorithm reduces noise and improves reliability. Given a 3kW immersion heater element, this will allow anything from 150W to 3000W to be put into the hot water tank.
This is the layout of the components inside the case.
The design is enclosed in an ABS box that is 170mm × 120mm × 100mm deep. The enclosure has fan, ventilation and cable access holes. The fan speed is controlled by the on-board processor and it cycles air through the enclosure regularly, to ensure the internal temperature sensor gets and accurate view of the internal temperature. The fan is very quiet in operation.
Inside the enclosure are the controller, connectors and the cooling system. There are entry points for the power supply, immersion heater and a 4-pin connector for the I2C control.
This unit uses the original wiring put in place for our immersion heater. It has its own circuit breaker in the garage consumer unit and an on/off switch in the airing cupboard. I've simply installed it between the immersion heater and the switch, using a 30cm long piece of high current wiring to match that previously installed. The existing switch can still be used to cut power to the unit and immersion heater.
The controller PCB has a 4-way Molex connector which exposes the I2C interface using following pins:
The SCL and SDA lines require 4K7Ω pull-up resistors.
I'm using a 4m cable between the Arduino in my loft (above my airing cupboard) and this controller, for the I2C comms and testing shows it to be reliable. It's using the default speed of 100,000Hz.
My contextual smart home models the 'Immersion Heater' as an object of object type appliance with variable power capability. It also models the 'Immersion Controller Temperature' as a temperature sensor. These are interfaced to my smart home using an Arduino above my airing cupboard, which uses my unified communications protocol to communicate with my Home Control System.
The 'Hot Water Tank' is a virtual sensor and models the percentage of hot water available in the tank. It is calculated by measuring the temperature at three points on the tank and my testing has proven it to be remarkably accurate.
The actual control is performed by my smart energy management process, which is also part of my Home Control System. The key thing is that it has whole home context, so it is aware of everything else going on in our home.
My smart energy management process changes the priorities of things like the immersion heater dynamically, based on the time of day. When it is active, the algorithm used looks something like this:
My smart home solar installation project was completed in October 2022 and whilst we still generate a reasonable amount of energy during winter, useful energy generation does not start until after 8am. This is too late to be of any use on a week day, as my wife has already left for work before this. There is scope to heat water for use in the evening though.
The other way to save money whilst we are on the Octopus Go tariff, is to use cheap electricity (7.5p/kWh) between 03:00 and 04:30 to heat the hot water tank, before gas is used a few hours later. Gas is costing 10.31p/kWh and is a less efficient way to heat the tank, so this would result in a cost saving.
The controller is now complete and in testing. Sending a notification is one of the common capabilities of my contextual smart home and it can easily be enabled by simply setting a flag for the Immersion Heater object. This means I get a notification every time the immersion heater is switched on and off, which makes it very easy to see what's going on.
My contextual smart home also captures detailled logs, so I can see exactly what power is being sent to the immersion heater and when.
The highest temperature recorded inside the immersion controller by my @smartest_home so far is 42°C. This is pretty good, given that the airing cupboard temperature reaches 34°C.
To get the best Return On Investment (ROI) on any solar installation, you need to make the best use of any spare solar energy generated. Pre-heating hot water in the winter and fully heating it in the summer is one of the most effective ways of doing this. Doing it smartly, with whole home context makes the process even more efficient and effective.
Whilst the focus of this project is hot water pre-heating and heating, the hot water tank in our airing cupboard is also part of our gas-powered central heating system. Any energy put into the hot water tank could also be used to heat our home.
I'm measuring the impact of my solar energy related projects like this on my energy usage and measuring the results on my 2022 energy analysis page.
If you found this page useful you can buy me a coffee. This helps me maintain this website and add more content.