We have another new addition to our Home Assistant smart home setup with a Zigbee controlled thermostatic radiator valve (TRV) installed on the radiator in our loft workshop.

In the past, we have used a basic manual-controlled TRV on the loft radiator, which runs from our gas-fired central heating system with the TR set to turn off once the temperature reaches a set point.

The radiator is located next to the loft hatch, so hot air from the rest of the house would rise past the TRV and radiator, which resulted in the set temperature not working correctly. With a digitally controlled TRV, we can now add a temperature offset to prevent the valve and radiator and change its settings based on the other Zigbee temperature sensor in the loft.

The target temperature can also be changed depending on the loft hatch being opened or closed, and when it is closed, we can set a lower target temperature as the loft is not being used at that time.

Most smart thermostatic radiator valves use their own custom protocol and smart hub and use cloud-based services, which we wanted to avoid. Some use Wi-Fi, but this would reduce the battery life due to the extra current consumption of a Wi-Fi module compared to a Zigbee based system.

New Zigbee TRV
New Zigbee TRV

We found a Zigbee TRV on Amazon UK marketed as a "KETOTEK Zigbee Radiator Thermostat Valve Head Wi-Fi Compatible Alexa Google Home, Smart Radiator Valve Thermostatic Programmable Tuya Smart Life APP", which the comments showed it was compatible with Home Assistant via Zigbee2MQTT.

This model is also sold under the Tuya and Moes brands, but they all seem to be the same model but with different labels.


  • Power: 2* 1.5V alkaline batteries (NOT included)
  • Display accuracy: 0.5?
  • Sensor: NTC(10k)1%
  • Range of temperature display: 1~70
  • The default range of temperature adjustment: 5~35.
  • Maximum current: 90mA
  • Maximum route: 4.5mm
  • Thread size: M30*1.5

I ordered the TRV from Amazon but couldn't get it to set up, and the house icon on the front, which is supposed to be the main button to access the menus, wouldn't work reliably, so I was unable to use it.

Touch button
Touch button trigger area

I returned the unit to Amazon for a refund. After returning the TRV, I found this video, "Moes Zigbee Smart Valve TS0601 in Home Assistant" by BeardedTinker on YouTube, who was setting up the same valve for his Home Assistant setup.

It appeared the button area was higher than the graphic showed, meaning the unit I had purchased may not have been faulty, so I ordered a second TRV to try it again.

The image shows the active touch area on the new unit compared to the green house icon, which the documentation showed was the button.


The new TRV is supplied with several mounting adapters for different radiator valves, but our radiators have older valves incompatible with the supplied fixing kit. Luckily, we have an older digital dumb TRV, which had a suitable adapter to use with the M30 * 1.5mm thread on the base of the unit.

With the TRV fitted to the radiator, we installed the batteries, and the unit went through a self-test which takes several minutes to complete. When the test is complete, the display shows the current target temperature.

Linking to Zigbee2MQTT

Home Assistant screen with TRV controls
Home Assistant screen with TRV controls

Hold down the central button on the TRV for several seconds to put it into setup mode, click the plus icon until you get to menu item 5 and then press and hold the central button again until the wireless icon starts to flash. This starts the pairing process.

In Zigbee2MQTT, click the top dropdown to Permit join (All), and the paring will start.

Once the TRV has been paired with Zigbee2MQTT, the new device will appear in the devices list.

Selecting the device will take you to the About page, where the friendly name can be edited along with other information about the device.

The Exposes screen below shows all the available settings for the TRV. Many of these are not editable in Home Assistant, so that you can update these in Zigbee2MQTT.

The TRV has a setting only available in Zigbee2MQTT called "local_temperature_calibration" This allows you to add a temperature offset to allow for localised heating by the radiator or other heat sources.

Adding to Home Assistant

Home Assistant screen with TRV controls
Home Assistant screen with TRV controls

In Home Assistant, go to Configuration, then Integrations. If you do not already have MQTT installed, add the MQTT integration, and once it is set up, it will show the number of detected devices and entities.

Click the Devices total, which will take you to a list of all available MQTT devices and select the new TRV entry.

An overview page will load, showing the device information, Entities, Automations, Scenes and Scripts.

At the end of the Entities list is a link to "ADD TO LOVELACE" clicking this will open a dialog with all your current views; after selecting the required view, the new entities will be shown in Home Assistant.

A list of all the entities is added, and a Thermostat Card which allows you to set the target temperature.

If you want to force the valve to the fully open or closed position, you can use the "force" menu from Normal to Open or Close, and after several seconds the valve will start to move to the new position.

Battery Life Update 28th October 2021

After the first six weeks of the TRV being installed, it has used three sets of Amazon Basics AA batteries and one set of 1400 mAh nickel metal hydride rechargeable batteries.

The TRV is installed less than 2m from the Zigbee dongle, so the RF system shouldn't struggle to get a good signal. I am returning to a manual-controlled TRV for the loft radiator and have cancelled the plans to purchase five more Zigbee TRVs for the house's other radiators.