Building cheap and easy Smart radiator valves for Home Assistant (€6 a piece)
UPDATE: I no longer recommend these cheap no-brand valves, as all of them died few months after use.
In this article, I will show you how to make inexpensive smart radiator valves. I’ve been using this setup in my home for a while and so far I’m very satisfied with the results — I can create schedules for the desired temperature in each room, control it from my phone when I'm away, and most importantly — save on heating costs. And the best part — it didn't cost a fortune. If that sounds interesting to you — keep on reading.
Introduction
I was thinking about smart heating in my home ever since I started my smart home journey a few years ago, but I couldn’t reason such an investment because smart radiator valves are quite expensive — we are talking around €50 a piece plus a hub. So for 4 radiators in my apartment, it would cost me approximately €250, which is quite a big investment, considering that it might need many years to pay off, If at all. And additionally, I would need to sacrifice my comfort in winter to save on heating costs. So I decided it was most likely not worth it and postponed it to next winter.
But recently because of the energy crisis, my heating prices have tripled so I decided I want to give this project another go.
Since I already had a Home Assistant and temperature sensors in my smart home setup, I needed only a super basic solution that could just enable or disable my radiators from home assistant. First I was looking for a servo motor that I could just fit on my radiators but unfortunately, I couldn't find anything — only a few projects that required a 3D printer, which looked like an unreliable solution and too much DIY for me, plus I didn’t want to deal with 3D printing and related costs, so this was not an option for me.
Eventually, I found what I needed — actuator valves on Aliexpress for €6 a piece, that are powered directly by 220V, and right away an idea came to my mind about how to put this all together using hardware I already had.
Hardware
In this example I'm using the following equipment:
- Normally Open Actuator valve 230V (€6) — Aliexpress | Amazon
- Power cable (€1.5) — Home Depot
- Mi Temperature and Humidity Monitor 2 (€6) — Aliexpress | Amazon
- Sonoff Mini R2 (€7) — Aliexpress | Amazon
- Home Assistant running on Raspberry Pi 3 (€50–€100)— Amazon
- [Optional] Sonoff Zigbee Window sensor (€7) — Aliexpress | Amazon
Note: As an Amazon and Aliexpress Associate I earn from qualifying purchases.
Of course, If you already have any other temperature sensor or power switch you can use that as long as you can control it from Home Assistant. For example, in other rooms, I have Sonoff S27, Sonoff Basic R3 smart switches running Tasmota firmware, and Aqara temperature and Aqara windows Zigbee sensors. They all work well for this use case.
Disclaimer
Before you begin, consult a professional electrician and your local regulations when dealing with mains powers. I take no liability or responsibility for your actions or anything mentioned in this article. Take correct precautions — always disconnect the cable from the mains when wires or terminals are exposed.
Also make sure that the smart switch and its cables are well isolated from water sources, possibly leaking radiators, and are securely fixed out of reach of children or pets. In order to prevent the power cable from accidentally disconnecting from screw terminals when pulled, secure both cables together with a zip tie or use solder and electrical tape.
This article assumes that you already have set up a Home Assistant and have a basic knowledge of editing configuration files manually and adding other smart devices. But if you don't — don't be discouraged, there is plenty of tutorials available online.
Hardware
Comparison with regular TRV
When ordering, make sure that the connection diameter is the same as your existing TRV.
Choosing right actuator
There also seems to be a 24V version available, but it would require an additional DC power adapter to convert from 120v or 220v depending on your location, so I wouldn't recommend using that unless you have a central heating room where you can supply multiple actuators from a single power supply.
On Aliexpress you can find two variations — Type 1 and Type 2 — I tested both, and they are pretty much the same, with just a minor visual difference.
Drawbacks
As the main drawback, I should mention that this actuator consumes approximately 2W of power in one state (explained in the next section), which wouldn't be the case with a servo-motor. But on the other hand — this actuator will most likely last a lifetime.
Power consumption is a side effect of how this actuator works — internally it's heating some kind of thermal wax that expands depending on its temperature causing the push pin to extend or retract. As a side effect, it doesn't react instantly — It takes up to 5 minutes for it to change from one state to another. But In my experience, I haven't noticed any issues because of the lag. Maybe during the cold winter, my opinion will change, in that case, I will update this article.
In this history graph, you can see that on a sunny day (first in the picture) heating was mostly off, but on a shady day, the heating was regulated accordingly. When the target temperature is reached it fluctuates around ±0.25°C, which is really impressive in my opinion. Perhaps you could achieve even more better results by setting the “cold_tolerance” value to zero, causing heating to kick in sooner, but I haven't tried that out yet.
NO (Normally Open) vs NC (Normally Closed) actuator
This is a bit difficult to explain, but I will try to do my best. In short — both NO and NC actuators are suitable for this project. The only difference is which state they reside in when powered on/off — affecting power consumption.
Normally Closed: When powered off, there will be no heating. When you want to heat the room, supply power to the actuator that consumes 2W of power while the heating is on.
Normally Open: Inverse of NC. When the actuator is powered off — the radiator will be heating at 100%. So when you want to turn off the heating, you will need to power on the actuator. Additionally, you need to set up an inverse switch for Home Assistant (explained later in the article).
Note: I don't know If every radiator is the same, but in my case when I removed TRV from my radiator — it went to 100% heating. You can verify by doing the same.
So which one then?
Given my experience, I would suggest you combine both or choose depending on the use case — in the rooms where the heating most of the time is off choose NC. But for rooms that most of the time are being heated choose NO. That way you can reduce the power consumption of the actuators.
Setting up Home Assistant
Make sure to connect your smart switch and temperature sensor with Home Assistant beforehand.
Using File Editor Addon I added the following configuration to my “configuration.yaml” file:
switch:
- platform: template
switches:
tasmota_inverse:
value_template: "{{ is_state('switch.tasmota', 'off') }}"
turn_on:
service: switch.turn_off
entity_id: switch.tasmota
turn_off:
service: switch.turn_on
entity_id: switch.tasmota
climate:
- platform: generic_thermostat
name: Demo thermostat
heater: switch.tasmota_inverse
target_sensor: sensor.temperature_humidity_sensor_3697_temperature
min_temp: 15
max_temp: 26
ac_mode: false
target_temp: 21
cold_tolerance: 0.3
hot_tolerance: 0
min_cycle_duration:
seconds: 5
keep_alive:
minutes: 3
initial_hvac_mode: "off"
away_temp: 16
precision: 0.1
In my case switch entity is called “switch.tasmota” and the temperature sensor “sensor.temperature_humidity_sensor_3697_temperature”.
And here comes the tricky part — In order for the thermostat to work correctly with NO actuator — an Inverse switch entity “switch.tasmota_inverse” is necessary. If you are using an NC actuator then you can omit this and instead use the switch entity directly. For more details about generic thermostat entity configuration refer to Home Assistant official documentation. After saving the file restart the home assistant to apply the new configuration. Then a new thermostat device should appear on your Devices page.
Finally add the thermostat card to the dashboard, for easier control.
Setting up schedule
To easily create and manage schedules I have set up a Scheduler card, which requires HACS to be installed.
I created two very basic schedules that change the target temperature to 18°C when I go to sleep and back to 21.5°C a few hours before I wake up, so It has some time to heat up the rooms.
Bonus: Extending with window sensor automation
In winter it often happens that during the day sun heats the room too much and I want to ventilate rooms for a prolonged time. Therefore I have extended my setup with window sensors so that when I open the window, Home Assistant will automatically disable the heater in the corresponding room. But considering the 5 min delay of actuators — this might be totally irrelevant if you are just opening windows for 5 minutes.
You can use the existing blueprint or manually create two separate automation entries for each window — disable the heater when the window state changes to open and enable the heater when the window state changes to closed. This will temporarily disable heating while keeping your temperature settings as is.
Conclusion
Depending on your previous experience with Home Assistant this is a fairly easy project.
The main drawbacks of this solution are:
- Need to have power sockets near radiators and figure out how to hide the power cable;
- Depending on NC or NO in one state actuators will consume 2W per radiator;
- It requires some skills to set up.
Overall I'm very happy with the results and how it turned out. Hopefully, I inspired you to make something similar and save some money.
If you have any suggestions or ideas feel free to comment below. You are also welcome to follow my blog and YouTube channel for more exciting stuff.
Keep on inventing!