June 2021 - Hot Water Tank Data Analysis

This project is mostly about the analysis of data relating to my hot water tank, starting on 12th June 2021. My smart home collects and logs a huge amount of data over the course of each day but not all of it is stored in log files. More than half of it is simply printed to screen for short term analysis and debugging but, this data can also be captured and stored to file if required. On the 12th June 2021, my smart home generated approximately 11,200 lines of useful data (to both screen and file), which I stored to enable this initial analysis.

Objective

The objective is to extract all the data relating to my hot water tank and smart shower usage, to better understand what is going on. I would also like to improve the algorithm used to estimate how much hot water is remaining in our hot water tank. Ultimately it has the same objective as all my other smart home projects, to improve our quality of life. I also want to be able to ask my contextual smart home via its artificial intelligence whether there is enough hot water for a shower or bath.

Simple things like making sure the water comes on early enough in the morning, make a big difference to the perceived quality of life and luxury of your home. A key goal of my contextual smart home is that it does stuff before we need to ask and this includes things like ensuring that we have hot water when required but, it must also do it in a very energy efficient manner.

The Sensors

All of the temperature sensor used here are Dallas 1-Wire DS1820 sensors, configured to report only changes greater than 0.7°C and at least 7 seconds apart. Updates are also forced every 17 minutes. Prime numbers in the smart home are good! :-) This approach ensures good accuracy and timeliness, without generating huge volumes of data.

The Data

My contextual smart home gives me a fantastic level of control over what gets logged and how often. All the data here comes from an Arduino slave processor and I can adjust update intervals, force updates, set updates based on the size of change and also perform rate limiting. I can force data to be logged to file or to not be logged to file too.

The key object data I've extracted here is:

Other objects/data I could use but haven't chosen to are:

The data is extracted from the log files using the EditPlus text editor and then copy and pasted to Microsoft Excel, which is used to plot the charts.

The Graph

Analysis

There are a few key things that stand out from the graph:

Our gas boiler can heat up the water tank very quickly. I pressed the 'Hot Water +30' button in our bedroom at 11:04 and this turns the hot water heating on for 30 minutes, which is enough to get to 100% hot water availability.

My current algorithm is far too dependent on the 'Water Tank Bottom Temperature', which varies massively when the boiler is on. It is more accurately measuring the water inlet temperature from the boiler. So I'm changing the algorithm to have much more focus on the middle and top temperatures. This algorithm is coded on an Arduino slave processor, so it is easy to change.

16th June 2021

Having made some changes, I used logs from my contextual smart home for 16th June, to see what impact my changes had. The log file for this day was 264KB and had 5754 entries. 16th June was a Wednesday and so it also shows the impact of my wife running a bath before she goes to work. The key events are:

The following data is plotted below:

Summary

Following the analysis of the first data set, I made changes to the algorithm that determines the 'Hot Water Tank' percentage of hot water available. I then chose the 16th June for a new data set to investigate the impact of my changes. It works a lot better.

This data has allowed me to optimise the current schedules controlling our hot water heating, meaning the boiler runs for for much less time and therefore saving significant amounts of energy. Based on the availability of hot water in the tank, it is possible to turn the hot water heating off earlier than my smart schedules would determine, to save quite significant amounts of energy. This is something I'm now testing.

Taking a shower uses about 20% - 30% of the hot water in the tank, depending on the duration and shower water temperature. Running a bath about 30% - 40%. If the hot water is being heated, then the impact on hot water in the tank is really very small.

The hot water tank is pretty well insulated, with a foam jacket sprayed onto the tank during manufacturing. Even so, the heat loss from the tank could be reduced with better insulation.

My 'Hot Water +30' buttons work really well and allow manual control to get back to 100% hot water availability. These buttons exist physically (in our airing cupboard, at my bedside, etc.) as well as being 'web buttons' and also as iOS/Siri shortcuts on our iPhones.

So my now has an accurate view of hot water availability. Using its artificial intelligence, Natural Language Processing (NLP) and various user interfaces, it can now answer the question: "Is there enough hot water for a shower/bath?"

Occasionally, my @smartest_home will tweet the Hot Water Tank level.