DIY HeatPumpMonitor using emonsd. What's the point?

Hi emon folks. I had a Vaillant Heat Pump installed in October 2025 and the installer wasn’t interested when he saw the tiny 56x68cm “plant cupboard”. So I cobbled together something that helps me see what’s going on. Not a new idea or the best way to go about it I guess. Anyhow it has been running for 2 months so I thought I would give a write up and post it.

DIY-HeatPumpmonitor.pdf (3.8 MB)

pdf attached.

Nick

2 Likes

Here are some references for the stuff I used:

EMONSD setup:

EMONCMS

Apps (eg MyHeatPump)

ESP32 DS18B20 Temperature Sensor with Arduino IDE (Single, Multiple, Web Server)

John Cantor blog :
Guide to attaching the DS18B20 temperature probes to the hydraulic circuit:
Temperature sensing with OpenEnergyMonitor

Shelly em Smart Energy Monitor - Wiring Guide
youtube channel: Built By Pete

Shelly em Smart Energy Monitor | Installation
youtube channel: Built By Pete

Guide for Shelly power monitor API’s:
Shelly Gen1 http API (eg Shelly EM)

Shelly Gen2 devices (eg Shelly Pro-EM-50)

1 Like

Nick,

Thanks for this, really interesting. I’m going to add Temp sensors to my DHW circulating loop, I was going to cut the pipes and do it with T pocket connectors, but now that I’ve seen this (and your small margin of error). I think I’ll follow you and attach it to the outside of the pipe. I’m also going to use this as my first ESP32 project.

Thanks once again for all the detailed write up.

Ian

Hi.Ian, Just make sure the two probes read the same value when there is no difference.

Alternatively you could add an offset to one in software to make them identical.

The absolute values I don’t think are critical. Mine are within 0,2C of the correct temperature I think.

The flow temperarures given in myVaillant seem to agree within 0.5C with my probes which was not expected. The Vaillant temps are measure outside, mine are inside. Maybe just a coincidence ?

The way I attached: I put the probes on a flat surface and pressed some thin copper strip over them to form a groove with two wings. I put some double sided pads on the back of the wings and then stuck the copper strips to the inside of the pipe insulation. Finally I put some heat transfer paste on the probes and taped them into the copper grooves using thin aluminium tape. The whole assembly then tie wrapped to the pipe.

The temperatures are read by simple Linux shell functions to strip the output and leave the two values.

$SERVERIP is the IP of the esp32.

function temps () {
  curl -k -s http://$SERVERIP/ | grep temperature | grep span | awk -F> ‘{print $2}’ | awk -F< ‘{print $1}’
  return
}

function flow_temp () {
  TEMPS=$(temps)
  echo $TEMPS  | awk ‘{print $1}’
  return
}

function return_temp () {
  TEMPS=$(temps)
  echo $TEMPS  | awk ‘{print $2}’
  return
}

You will need to adjust as necessary as this was written purely for my benefit and never designed for github ! The randomnerds code has slightly different text. My esp32 web page here:


SERVERIP=192.168.1.63

emonpi: temps

30.88
28.69

from Nick

Thanks Nick, I’m going to start this in the next couple of weeks so I’ll let you know how I get on.

Ian

1 Like

ESPHome or Tasmota make using DS18B20 sensors very easy.

You can also get copper clip on versions search for ds18b20 clip-on

2 Likes

That’s perfect thank you

1 Like