Fixing my heating system

The heating system in my apartment building consists of a group of heat pumps that deliver warm water to the underfloor heating system of about a dozen apartments, including mine. During the warm summer months, the system supplies cool water instead. The heat pumps figure out whether to supply warm or cool water, and a thermostat in my apartment controls a valve to maintain the desired temperature.

The problem is that there’s a rather annoying problem with the system. During the warmer summer months, the heat pumps and thermostats occasionally get confused. Sometimes, the thermostat thinks it’s getting cool water, but the heat pumps are actually supplying warm water! This will cause the temperature inside the apartment to climb to very high temperatures: it’s basically only limited by how well the building’s insulation can retain the heat. From a control systems engineering perspective, it’s like the controller is missing a minus sign somewhere.

For a variety of reasons, the problem can’t be solved at the source (likely a faulty configuration of the controller of the heat pumps). Being at my wits’ end, I decided to create a workaround in the form of a small circuit board.

The circuit board features the following components:

  • ESP32-C3 module and USB-to-serial converter
  • MAX31865 RTD-to-digital converter (and a PT100 probe)
  • 24V relay

Assembling the board was pretty straightforward and I’ve already covered the process in previous posts. I’m getting more and more comfortable with the process of designing, assembling and reflowing circuit boards like these: the design took an afternoon to complete and the assembly and commissioning took only a few hours.

The ESP32 is running ESPHome, which connects to my Home Assistant system. Flashing the ESPHome firmware using a USB cable is a one-time job since future updates or changes can be done over the air. The PT100 temperature probe measures the temperature of the water that is supplied by the heat pumps and the relay controls the flow of electricity towards the electronic valve.

In Home Assistant, I’ve configured a sensor which provides the maximum outdoor temperature over the 24 hours. Combining this with the reading of the temperature probe, I’ve defined the following automation rule:

If the temperature of the water is above 25 degrees and if the maximum 24-hour outdoor temperature is above 20 degrees, interrupt the flow of electricity to the valve.

Moreover, a notification of the event is sent to my phone. This little device will therefore not prevent the problem from occurring, but it will fully mitigate its negative effects. After an occurence, I manually reset the valve once the heat pumps have figured out their mistake, which is typically after three to four hours of the incident occurring.

Leave a comment

Your email address will not be published. Required fields are marked *