Not Building My Own Thermostat — I Went With TadoX, Here’s My Impressions

When my wife and I started looking for the house we wanted to buy, we have been looking at both second hand, and newly built homes, as both of those end up with a different set of tradeoffs. At the end, we decided the right trade off was to get a new build — and it turns out that almost all of the new builds being sold are sold “on plan”, with contracts drawn up well before the house is finished.

Unfortunately, buying “on plan” doesn’t mean you get a full copy of all the architectural plans for the house, which ended up biting us a bit later on, when I realised that some of the choices around the electricals were… particularly bad. But, and yes I said this before, this is a topic for another time.

What was also fairly bad, was the design of the heating system. Our house is on two floors, has a gas boiler – heat pumps were not required when construction started, so we would have to retrofit it, and right now it would be a bad tradeoff – and uses radiators in most rooms, except for the bathrooms that use towel rails. Pretty standard fare for the British Isles (towel rails were not common in Italy when I lived there, but might be by now, not sure), with the usual added annoyance that the radiators are under the windows, which means they don’t quite warm up the room the way you want. But overall, this is a mostly functional, if not terrific, way to handle heating a house in the UK.

Except — the towel rails are also powered by the gas boiler. This was a bit of a surprise: in the flats I lived before, even when having gas boiler and radiators, the towel rails for the bathrooms have been electric. This makes sense as you may want to have warm towels, or dry the wet towels, or help get the humidity out of the bathroom after a shower, even when it’s not season to fire up the boiler.

This wouldn’t have been such a large issue, had they not put the towel rails for the ensuites and bathroom on a single heating circuit for the first floor. Let me explain: with two floors in the house, it is common to make two separate circuits, with distinct valves, so that you can run the hot water only on one of the two at a time — useful for example if you’re a couple, and you spend your day on the ground floor while sleeping on the first, which is effectively our situation currently.

I say currently, because we’re in the process of turning some of the upstairs space into a shared project room, meaning we’ll probably get to a point where one of us would be upstairs for quite a longer time than we do now.

Since each circuit has a single valve to run hot water through the radiators, they classically have a single thermostat to “call” for heating — if the temperature reported by the thermostat is below the given threshold, heating is called for, turning on the boiler (if it wasn’t already), and opening the valve for the circuit. This is the same setup my mother has in her house, and something I grew to hate. In my mother’s house, the original thermostats were placed in two positions that were not representative at all of the temperature in the rooms for which we wanted to heat, leading to manually fidgeting with the temperature just so that it would call or not for the heating — a manual switch would have worked better at that point.

To avoid “wasting” the heat on rooms that are not used, radiators generally come with valves themselves — particularly in our house they came with TRVs: Thermostatic Radiator Valves. These attempt to balance the ambient temperature you point them at (thus the “thermostatic”), and open/close the flow of water in the specific radiator. My mother doesn’t even have those (and her radiators are too old to be retrofit, from what we have been told), which is why the best we could do for her house was moving to Nest thermostats and put the sensor where it actually mattered to her.

Unfortunately, for our house (and it appears for a large proportion of newly built British houses), instead of putting the thermostat in a fairly neutral position, and using TRVs on every radiator (like my mother’s), the standard is to choose one room to be the “controller”, installing the thermostat in there, and skipping the TRV for the radiator, out of necessity: if you were to turn down the TRV in that room, now the thermostat wouldn’t reliably call for heat for other rooms. And the controller for our first floor circuit was designed to be… our bedroom. Which meant we would have had to turn on the heating in our bedroom even if it was too warm already, to turn on the towel rack in our ensuite bathroom.

This was obviously a bad idea, even without remembering that the bathrooms have a hole to the outside cut into them for the extractor fans, meaning they can easily be 6°C or more chillier than the bedroom.

Now, in our last flat in London, I solved the “badly placed thermostats” problem already by building my own. So that was my first thought — get a bunch of Home Assistant controllable TRVs (Aqara and Tuya both make multiple models of them, WiFi, BLUE and ZigBee), and figure out a way to replace the thermostats to “call” for heating. Thankfully, I didn’t embark into this particular rabbit hole, because I would have faced a number of obstacles that I would have failed to account for. Not least the fact that while our boiler is supposed to be compatible with OpenTherm, it wasn’t wired like that — using old school signalling instead, which I would have had a hard time handling.

Instead, I decided to go for a ready packaged solution which is still (somewhat) supported by Home Assistant: TadoX. While their implementation is cloud-dependent, and requires a subscription for the more “advanced” features, including the geofencing for the automatic home/away modes, the TRVs themselves are locally controllable with Matter-over-Thread, which is (mostly) supported with Home Assistant. And it appears to be a product designed for the European market to begin with, so basically checked all the boxes I was looking for in a solution, including hot water scheduling.

I bought the kits myself, and found a local heating engineer to hire to perform the installation, since I wouldn’t dare touching a gas boiler personally. While I was the first customer installing the TadoX, he did have experience with their previous generation, and reconfigured our system to be single-circuit (the valves were already installed to allow switching to that configuration), allowing me to send back the second thermostat kit and saving us some money.

In single-circuit mode, the call for heating to the boiler can come independently from any one radiator, instead of it being split between the two floors. No more “controllers’, no more additional rooms to warm up just to get towels dried — particularly when it comes to the guests’ bathroom. It is actually quite a lovely setup for us, given that at any given time there are at most two rooms that need to be brought up from the baseline temperature, and in many cases only one is necessary.

The TadoX valve controller is by itself a Thread border router, meaning that you technically don’t need anything for your Home Assistant to reach the TRVs, just get the Matter linking going. But to be honest, the setup was frustrating, and I believe some of the radiators have been literally factory resets half a dozen times to be seen by the app, and a couple more just to get them shared to Home Assistant. My best guess why this is happening is that by between the devices being manufactured and packaged, and me installing, a new firmware was released — and as we started setting up the devices across the house, they all wanted to update the firmware at the same time, slowing everything else down.

In terms of using Tado’s own cloud-based app, it is actually quite well oiled and handled, and I don’t think I can complain much about it. It doesn’t have a “learning” mode like Google’s thermostats, but I actually kinda like it better this way. Each room can have independent schedules (which is great, my study and the lounge have obviously different usage patterns), it has the ability to explicitly offset the sensed temperature (useful for bathrooms, where the temperature at the towel rail is quite different from the toilet), has a way to detect if a window was left open to avoid wasting heating time (tried when cleaning stuff with harsher chemicals, works like a charm to stop the radiator until you’re ready to close the window and come back), and most recently has introduced some algorithm to balance the flow through the radiators by observing the reported temperature — I know nothing of hydraulics, but given how everything else has worked out well, I’m happy to see Tado is actually putting thoughts into what features are needed instead of what is flashy.

Unfortunately, what is lacking is a good integration with Home Assistant. While Tado has working APIs for their old generation systems, and the Home Assistant integration for those is able to handle them, even though with a cloud dependency, it appears that between the manufacturer and Home Assistant itself, they decided TadoX only needed the Matter integration, and that’s a lot less polished.

First of all, sharing all the Matter devices was frustrating, though it possibly was a combination of my phone, Google services, Tado app, and Home Assistant — because, yes, all of these things need to align correctly for it to work! You need to be on a 2.4GHz-only WiFi network, you need to have logged into Tado and Home Assistant, and have a working Bluetooth. As I said, I had to factory reset these TRVs more often than I would have liked. Some of it might have also been that somehow my two Nest Hubs had created a second Thread network at some point, and some of the TRVs ended up joining *that* — despite the Tado receiver “joining” the one created by the short-lived eero (that had no router at that point), and Home Assistant also aligning on the same. I have since cleared that out.

Also while the temperature and mode of these TRVs can be set via Matter, and their temperature and humidity reading are available, the battery status is not reported to Home Assistant, and is only available via the app. Not the largest of deals since their batteries appear to last roughly a year, and can be charged via USB-C, meaning they’ll just be charged during a “regular servicing” schedule, but it would have been nice to have that information available. Somehow the Matter thermostat is also not quite properly reporting when heat is being called for, making it very difficult to visualise when the radiator is going to warm up or not.

I have not had any chance to spend more time with Matter to know for sure whether these limitations are due to the way Tado implemented it, or a Matter-specific limitations (there definitely are a lot of Matter limitations!) What I do know is that the next limitation is on Tado, and I really wish they fixed that. Their wireless receiver, despite being the Thread border router, is not implementing Matter protocol not letting you control the hot water through Home Assistant. This got me to hit my head on the desk for a little bit when I found out, because it’s similar to the limitation on our old Nest thermostat — where the hot water setting couldn’t even be controlled through the Google Home app, due to the lack of a correct third-party API, which I kept insisting with the Product Managers is actually a big deal in Europe.

Oh, and there doesn’t seem to be an easy way to tell a TRV to “go back to its schedule” to boost it manually for a short time — I’m still looking forward to have a “I’m going to take a shower” routine that starts the extractor fan (for the humidity) and brings up the temperature in the towel rail for a while, but it would still require me manually hitting the “Resume All Schedules” button on the Tado app after I do that.

Honestly, I wouldn’t mind if these additional features were implemented through a Cloud dependency. Tado has a good enough API for their previous generation, and I would expect it not to be a significant hurdle to make it possible to merge the devices created by Matter with those coming from the API, each integration providing distinct entities. They also are taking the sustainable route, rate limiting the API calls, increasing said limit for paying customers.

As I said on a different post, I really dislike the thought-termination of the word enshittification, so if you’re about to use it to describe what Tado did, please don’t leave comments. I actually believe Tado took a great decision here: their free API tier is more than sufficient for the basic features of their product, and if you want to use more than that, outside of the features provided by their own application, they’re happy to sell you a higher quota. This reduces the risk of their costs ballooning and having to take more drastic decisions.

So at the end of the day, winter season proved TadoX was a good choice — in terms of having a reliable, locally-controllable, cloud-smart heating systems, without me having to take the risk of designing this from scratch with little heating experience. My hope is honestly that these easily-integrated, well-designed smart options will keep improving — particularly when designed in Europe.

Exit mobile version