How to measure hot water use

By Sam •  Updated: 03/04/22 

In this post, I explain how I was able to measure hot water use in our home. I like to focus on saving energy because it’s great for the planet and your wallet. In fact, I intended to write a lot more articles on the intersection on frugality and energy savings before I met Angela.

I obsess over minimizing hot water use. “Domestic hot water” use uses 17% of the energy in the average American home. One of my first blog posts was about how made my own off peak water heater. However, after I wrote the post I realized that my 80 gallon tank was probably overkill and that we could save even more money by switching to a heat pump hot water heater (or gas hot water heater).

To buy a hot water heater, you need to know how much hot water you use. The EPA published a calculator to help you estimate this. However, I wasn’t sure the numbers were that accurate. They say it takes 2 gallons of water to shave. That seems ridiculously high. Given this, I decided to take a page out of one of my favorite blogs, and actually Do. The. Math.

Table of Contents

Please do not confuse my personal blog for financial advice, tax advice or an official position of the U.S. Government. This post may contain affiliate links. If you make a purchase after clicking on a link, I get a small percentage of the sale at no additional cost to you.

Doing the Math

I want a new, energy efficient hot water heater. And I want to make sure that I’m not heating water that I don’t need. The best way I could think to buy the perfect sized hot water heater was to actually measure how much hot water we use and when we use it. If you want more examples of measuring energy consumption around the house, check out this blog.

The size of your hot water heater should be based upon the most hot water you consume in an hour. Therefore, I needed to design a system to collect data on the time scale of minutes on our hot water use. While we get limited data on our water use from our water utility, it doesn’t come with a fine enough time scale to be useful and it only measures our total water use and not just hot water.

Therefore, I modified our plumbing and built a data acquisition system to measure our hot water consumption.

img 0177
Prototyping the measurement system.

How to measure hot water use

A lot of my friends use Arduino boards for various projects at home and at work. As I understand them, Arduinos are an open-source data-acquisition board/microcontroller platform. Prior to this project, I’d never used an Arduino before… So I had a lot of learning to do! Even though this was my first Arduino project, it only took a few hours from start to finish. There are tons of great resources for learning how to use the Arduino platform.

Shopping List

Here’s a list of the materials that went into the water flow measuring device:

Arduino  data   logging shield
This is what the data logging shield looks like.

Overall, the whole data acquisition setup with sensors cost less than $40.

Installing the sensors

I installed the flow meter on the cold water side of my hot water heater. The sensor was super easy to install; the hardest part was cutting into the ancient galvanized pipes that are part of my old house. After I removed a section of the pipe, I was able to quickly thread in some PEX connectors, and swap out that section of galvanized pipe. Luckily, the flow sensor comes with 1/2″ NPT threads so it is a breeze to connect to home plumbing.

How to write Arduino code to measure hot water use

The hardest part of the project was writing a computer program to control the Arduino. I needed the Arduino to:

  1. Count the digital pulses from the flow sensor. (Each pulse ~ 1/450 of a liter)
  2. Write the number of counts to the SD card at an interval.
  3. Add a time stamp to the interval from the RTC chip.

Luckily, Adafruit provides some really great example code. The flow sensor support page has an example code. Likewise, the data logging shield also had some example code. I was able to “write” the code to run my program by just copying and pasting lines of code that looked good. (FYI- that’s my favorite kind of programming.)

I included the example code at the bottom of the post. I believe I can share it with you as the data logging shield had no license and the flow meter code allowed distribution as long as the header was included.

Example data

Here is some example data for a weekend day in February. On the bottom graph I plotted the total amount of water used throughout the day. You can see that our family of 5 used about 35 gallons of hot water. For reference, the top graph shows our water use per half-hour throughout the day (i.e. the derivative of the bottom graph).

Top: Semi-hourly water use. Bottom: Total water use. Data taken on a random weekend day in February.

As you can see, it’s a little bit easier to tell what’s going on from the top graph. We used about 10 gallons of water in our morning routine that was spread out over 2 hours. We used a couple of gallons of hot water cooking and cleaning lunch. One or more people took showers (~11 gallons of hot water) at about 6:30 PM. Finally, our dishwasher ran after we were in bed.

I am currently collecting data for an entire month. From these data, I’ll be able to determine how much water we use on an average and maximum day and what’s our maximum hot water use in an hour. I plan on using these data to figure out (1) the most energy efficient type of hot water heater for our family and (2) what size hot water heater to install.


(Update: I used to have the code displayed on the website. However, it was slowing down my website so I deleted it. You can email me for the code).

I spent the absolute minimum time possible getting this to work and mostly copied and pasted from example codes. If you want to measure your own water use, this code will work. If you’re a programmer, you could probably write your own code in about 10 minutes.

That is how I used an arduino to measure hot water use. Tell me what you think? Should I make a YouTube video to go with it?


Sam i.e. "Gov Worker" started working for the government at age 18 and loved it so much that he never left. He started GovernmentWorkerFI in 2019 to help fellow federal employees understand their benefits, take control of their finances, and live their best lives.

Keep Reading