Underfloor heating with zone control

Hi,
Since I am past the hardware part. :slight_smile:
I was wondering how you are doing the software part.

You can set up a thermostat for each room quite easily and open up the valve when heating is required.

But did you add additional logic so your central heating is optimized based on the heating needs of each individual room?

I’m thinking of:

  • Turn of central heating when all valves are closed;
  • Correct modulation of your gas boiler, each. by sending the biggest different in temperature in a room to the central heating;
  • 


I’ve found some inspiration here:

But open to other suggestions.

Turning off/on the central heating (or in my case the heatpump) is descibed in the last part of my post


Hi Dries, yes, I did some measurements and documented that in a video: https://youtu.be/6jN7ZWRN90o?si=BnoR5Jff_OXEI_i3

Hi Lectere,

I followed a different approach. Instead of just switching on/off my gas boiler, I control both target and current temperature of the boiler based on the room with the biggest delta.

E.g. if in room A the current temperature is 18° and target is set to 21°, and in room B the current temperature is 21° and target is set to 22°, the DIYLESS thermostat will have the target and actual temperature of room B.

It allows the gas boiler to modulate (I saw in your initial post that you have a heatpump, modulating might not be relevant in that case). Modulating is more energy efficient (for gas boilers) instead of turning on/off.

Details are described in this topic:

Interesting!

I do have the 220V variants, so your conclusions might not be fully applicable to my situation.

I have a combination of the “cheap” and “Möhlenhoff” thermal floor heating valves (both via Aliexpress).

I did a (very unscientific) comparison between both. I use a Sonoff 4ch pro to controll them. I plugged my Sonoff switch in an Eve Energy plug (with power metering).

The cheap valve consumes 2.7W after being turned on for five minutes (this includes obviously the power consumption of the Sonoff as well). The Möhlenhoff consumes 3.1W after five minutes. Also when immeditialy turned on, the power consumption of the Möhlenhoff seemed to be a bit higher.

My comparison will probably have some limitations. I used two different Sonoff devices, wiring could influence this and I only get power consumption updates from Eve every minute. Your method is definitely more accurate.

Hey everyone :waving_hand:

I’ve been following this thread for a while and learned a ton from all the insights shared here — so first off, thanks to everyone who contributed!

While working through similar challenges in a large house with several underfloor heating manifolds, I ended up creating a custom Home Assistant integration called Thermozona (available through HACS).

It’s designed to give per-zone control over underfloor heating — valves, pumps, and sensors — with smarter logic than what I could achieve using generic thermostats or relay automations.

:wrench: Key features

  • Multi-zone support (multiple manifolds, pumps, and circuits)
  • Flow temperature dynamically adjusts based on actual heat demand
  • Flexible mapping between sensors ↔ actuators
  • Optional PID control for smoother temperature regulation
  • Fully native Home Assistant integration (no external controllers needed)

I experimented with several of the setups mentioned earlier in this thread, but for larger systems I found that a dedicated custom component offered much better scalability and control.

If anyone’s interested in testing, sharing feedback, or helping develop it further, I’d really appreciate it!

:backhand_index_pointing_right: Thermozona on GitHub

I have just downloaded your new integration as i’m planning to substitute my Busch-Jaeger thermostats for my floor heating.
Could i use your integration without heat pump and cooling?
I want to use Shellys for switching the valves.

Great!
I am currently using Versatile Thermostat for this. How does it compare? Features seem to be similar.

@juergenjw Absolutely, you can run Thermozona without a heatpump and you can ignore the cooling aspect, set the modus on Heating and you are good to go.

Cool! Didn’t know this project, looks like a great solution with a lot of features. I think my project is more focussed on an underfloor heating solution icm heatpump. It for example decides the flow temperature based on room temperatures, target temperatures and outdoor temperature. And switches off the heatpump when there is no heating demand, but I am sure that project also does it, long live opensource.

In my search for a solution to my issue I came across this project. It offers far more functionality than I need, but I have not yet found an alternative. Since I am not an advanced user, I prefer standard integrations and HACS solutions. A quick check if this will work for me is much appreciated.

Setting

  • Underfloor heating without smart control of the circuits. I don’t need to control zones separately because the ground floor is open plan.
  • A Shelly BLU TRV gen3 on the underfloor system so I can close the floor heating if necessary.
  • Traditional radiators upstairs, also with Shelly BLU TRVs.
  • Alsavo heat pump integrated to Home Assistant via Tuya. The only controls available are on/off and temperature.
  • In the living room I have a Shelly H&T thermostat for the floor heating.

With this integration I want to achieve that:

  • The heat pump is turned on and off when necessary.
  • The water temperature is adjusted based on demand.
  • The underfloor heating is closed if the ground floor is warm enough while the upstairs is not, since the ground floor faces south with a lot of glazing and can warm up quickly even in winter with some sun. So either the TRV is 100% open or 100% closed downstairs.
  • Optional: add floor temp sensor because the ground floor is wood, so I need to watch the max temp a bit if floor heating is in use.

Keep in mind that the sun heats up a lot so south facing (in northern hemisphere) will not need as much heat as north facing rooms.
So perhaps you should keep some zone control

I reached this thread searching for a solution to a similar problem. I have an UF heating system with an HP. The HP is integrated in HA but has autonomous controls so HA is used only to monitor/reporting and change of operating parameters, not for normal operations.
ATM I have manually balanced all the UF circuits but I’m left with all the zones opened all the time.
It’s not a big problem as we tend to use all the rooms during the day and with UF inertia so long it is difficult to dynamically open or close a room circuit.

Anyway I’d like to try something but I have some doubts.

HA is a nice tool and can be hardened enough but it has a life cycle, and that cycle is much shorter than the 10s of years an heating system must run.

I need something that if (when) HA fails or if (when) I make a mistake or install the wrong update doesn’t leave my home cold as ice


The question is: how to render the zone management solution intregrated in HA but left to operate autonomously?

Any thoughts on that?

A relay board running ESP-Home
Just don’t update the ESP-Home firmware.

If you have web server enabled then you can have a website you can open in case everything is offline and control things that way.
I believe ESP-Home even has climate control built in.

Edit
Just realized you need the temperature inputs to the relay board also.
As long as everything works then it’s not an issue, but if HA fails then it’s harder.
But ESP-Home can communicate node to node, so ESP-Home driven temperature sensors could help it run by itself.

Or you just accept that if HA is offline then you need to control the valves manually using the web interface

@Robsnetwork I think Thermozona will exactly suit your case. Just define one zone for the open plan floor with one circuit: the Shelly BLU TRV gen3 (actually controlling all circuits on your open plan). The radiators upstairs you can define as separate zones.

You need to define a simple automation that mimics the Thermozona Heat Pump Status (heat/idle) and set the Thermozona Heatpump Mode to heat (so it doesn’t give cooling status).

Please try it out and give me feedback if it doesn’t work, will help you out if I can.

That’s right, but it’s not a gigantic villa (unfortunately :wink:) so when the sun shines, it heats the entire ground floor as it’s an open floor.

@japetheape Good to hear and thanks! That will be next week because I have a few days off now. I’ll let you know the results.

Stumbled across this on my quest. Firstly started to build my own logic, mainly about allowing the boiler to modulate and just fire up when at least 3 zones were calling for heat. It started to get complicated by looking at weather compensation and also PID systems. I then started to look at the HACS Verstile Thermostat, seems more geared towards radiators, but not fully tried to get operational yet.

I have a gas boiler running DIYLESS opentherm and Heatmister stats with the gateway. I think I have got a way to effectively turn on the zones, basically setting the stats to be a few degrees higher and thus have the concept of a switch.

My goals are;
Run the boiler efficiently through modulation
Allow different zones to be run at different temps
Perform weather compensation
Take into account warm up time ad overshoot
Start certain pumps when certain mzones are on.
Some presence detection

This is great to see, I am about to do something very similar. I a 8 zones with 8 valves so a bit easier to follow. I decided to use 2 shelly pro 4’s to control the opening closing of the valves and a dry contacts to call for heat, I’m using a gas boiler. The shellys were on sale in December for £50 each so I get all valves taken care of on a neat din rail just above the value actuators. I will use various temperature readings, either adding a small thermometers or making do with the readings I have and adding offset on a case for case basis. I would like to have small digital probs in the wooden floors over the water pipes later on as I think this would be the best way to stop overshooting, but that’s a “one day” wish list right now. I do have a question about the pump. Again I have a “One day” wish of reading the temp difference between the outbound manifold tank and in bound manifold tank and using PWM to slow the pump as the gap closes but right now, I am planning to use constant pressure mode. My pump is on a blend manifold that lowers the temp. I was wondering if constant pressure mode would deal with stopping the pump when all valves are closed or if I should be calling for the pump when I call for heat and stopping the pump when I stop the heat?

@jamiemachine5 @TooBarFoo — your setups are pretty close to what I built my integration for, so it might save you some time.

I have a custom integration specifically for multi-zone hydronic UFH: Underfloor Heating Controller. It handles several of the things you’re both working through.

@jamiemachine5 — on your goals list: the integration does per-zone PID control tuned for screed thermal mass (anti-windup, EMA smoothing for noisy wireless sensors, minimum run times to prevent short cycling), weather compensation via a two-point heating curve, and pump/heat request coordination.

@TooBarFoo — you might find this applicable as well, as your use cases are very similar to what I’m running myself.

Others might also find the Tasmota relay configuration guide relevant if you’re running Tasmota on your relay boards — it covers PulseTime as a dead-man-switch so valves fail closed if HA goes down.