Hot water tank temperature monitoring

Hi All,
I have an emonPI already and it is doing a great job monitoring my electricity usage, PV generation, and some Node Red integrations and dashboard.
I’m now thinking of trying to monitor the temperature of our hot water tank - the idea being to see if there is enough hot water there for evening showers etc. As an aside, the tank is heated by Gas, and also with the immersion via an iBoost.

So, my question is, would a emonTH V2 with the external temperature sensor do the job? I’m thinking of pushing the sensor through the external insulation of the tank, but I am not sure where to place it (vertically) to get the best data.
Would anyone who has done this before be able to advise where would be best? I’m wondering if (for example) I put it near the top of the tank, I would see reading of hot water right up until the tank was nearly empty of hot water, then a sudden jump to cold, or if there would be a more gradual temperature change? I don’t see the data being much use if it only lets me know the tank is out of hot water just before it runs out.

Apologies for the ramble, but hopefully it makes sense…



Is this a standard domestic HW tank?

Yes, normal domestic (UK) water tank.



I have just done this myself. I just used a DS18B20 which I pushed under the insulation so it is touching the tank. I placed it at the same height as the thermostat so I could monitor what the thermostat was responding to. I use an emonTX with emonESP as I have good WiFi in the loft but poor radio. The first thing I learnt was that our thermostat is next to useless as it does not switch the boiler back on until the temperature has dropped 25 degrees! I have a Danfoss industrial thermostat waiting to be fitted with adjustable hysteresis.


Hi Ian,

Thanks - that makes sense. I should have realised that the thermostat for the boiler was there too, but it just hadn’t occurred to me!
What kind of readings / data do you get at the water is heated up / used? Do you think you can tell from the current temperature and/or a graph of the data how much hot water is left? eg (with a bit of testing / monitoring) do you think you could say that if the sensor was showing a temperature of X there should be enough water for a shower?

My end goal here is maybe to get Node Red to monitor the tank temperature, and if the Solar PV had diverted enough to the immersion during the day, then turn off my hot water (gas) in the evening. Do you think this is doable?



You could use an ESP (like a D1 mini) on it’s own with something like Tasmota installed. The advantage of the EmonTH is that it runs off batteries so does not need external power.

Ah found it; this link from this post might be interesting.

I used an emonTX because the hot water tank is remote from my emoncms server.

I still use a NanodeRF to push the data to the server over the internet.

I probably should have said I used a shop encapsulated temperature sensor. I got the idea from Glyn who mentioned in one of his posts that he had just pushed one under the tank insulation so it touched the tank. It may not be precise but it provided me with the information I was after.

Hi Tim,

Yes I think you might be able to judge the volume of hot water left. I started this because I was puzzled by the fact that if several people showered the last person would stop when the water got too cold but the hot water was not reheating. It is because even though the water temperature gets low enough to make showering unpleasant it is not low enough to fire the boiler. The first thing I did was override the timer to constantly On as I could not understand the temperature graph. I can post screen shots of the graphs tomorrow if you are interested. One thing I have learnt is our boiler heats the water quickly and might even keep pace with the heat loss from showering when I have closer thermostatic control.

Hi Ian,

Thanks for all the information, it’s really appreciated!
Sounds like I might be able to do what I want so that it great.

If you could post some screenshots, it would be really interesting.



My point is you do not need an EmonTX just for temperature. An ESP8266 type board, with a shop type temperature sensor can send the data, via WiFi, using MQTT or the HTTP API, directly to the emoncms instance (be that on the local LAN or on

I have a Heat Pump Water Heater. Here is my graph from this morning:

The blue line is water utilization (currently whole house, so both cold and hot) in hundredths of a gallon/min. THe red line is the top sensor and the yellowish line is the bottom sensor in degrees F. It is nominal 50 gallon tank. The tank is set to Heat Pump only mode with a set point of 142. The heat pump turned on when the bottom sensor hit 132 (where the yellow line flattens out at 06:32). At the three big dips and quick rises in temperature it turned on one of the elements.

I beleive a regular water heater would look somewhat different. When the heat pump turns on, it tends to equalize the temerature between the top and bottom.

Here’s a shot of a 40 Gallon tank with a 4500W immersion element.
The activity just after 0400 is during and after a shower.
The mangling at ~1700 is due to a commercial power failure. (flaky Oklahoma energy supplier)

Same shot, zoomed in:

That was my first thought - I was thinking of getting the EmonTH with the Encapsulated DS18B20 temperature sensor.
After all the great information on here, I am wondering if I need 2 sensors to check the top and middle/bottom of the tank.
Do you know if the EmonTH can take 2 temp sensors or just one? It mentions about having more than one sensor here - EmonTH V1.5 - OpenEnergyMonitor Wiki - but I don’t see how to do it…


Thanks for the graphs, really helps me understand what I could get…
So, do you just run your tank based on the value of the bottom sensor? Is the top sensor more for information?
I’m trying to work out if I need 1 sensor or 2…



Hi Tim

You can connect multiple DS18B20 sensors to the emonTH.

You wire them all to the same pin.

Good example here (using a different processor but the principle is the same)

You will need different firmware. It on this page towards the bottom.

Here is a screen shot of my HW graph. You can see why I need a new thermostat. High temperature switch off is consistent but low temperature switch on is almost random!

I still haven’t figured out what is going on. I am not bothering to investigate further, I will just fit a new thermostat.

Understood. I do use Wemos and Tasmota for all sorts of sensing. In this particular case my emoncms instance is not on the local LAN and in the same building there are a number of legacy emonTX already sending data via the nanodeRF so it made sense to me to do the same with this particular set up.

Thanks Ian,
Very useful. I did notice this, but it seemed to suggest that it was for v1.x hardware, and the shop seems to be selling v2 - do you know if they are compatible? Then I guess my next step would be working out how to update the firmware!

I can understand your problem with the thermostat - there is a big difference there between switch on temps!
I think if I can get a graph like that though, I should be able to control my water… Maybe just 1 sensor will be enough.


The v1 and v2 firmware are not interchangeable as the v2 uses a I2C temp/humidity sensor.

I don’t think it is likely to be difficult to make a “multi-temp” version of the v2 fw, using the differences between the v1 and v1 multi-temp sketches as a starting point.

(That’s if it hasn’t already been done somewhere here on the forum, I don’t have any specific recollection of that happening, but maybe worth a search.)

Me neither - but there’s a “dual” and “multiple” DS18B20 in GitHub for the V1, which looks well worth checking out. I suspect it’s almost only a case of lifting the One-wire specific bits out of that and putting them into the V2 sketch, because as far as I know, it’s only the combined temperature and humidity sensor and its use of I2C that’s significantly different.

Indeed, looking briefly at the v2 repo, it seems the v2 hw also has a position for a dht22 and most of the links for v2 info go to the v1 info. I wonder why there are 2 repos? As the v2 fw could possibly run on a v1 with a change of pin assignments (A5/A3), we could just support one repo and fw that covers the v1 too.