[RELEASE] Tuya Wall Mount Thermostat (Water/Electric Floor Heating) Zigbee driver

[RELEASE] Tuya Wall Mount Thermostat (Water/Electric Floor Heating) Zigbee driver

This driver can be installed using Hubitat Package Manager – HubitatCommunity
If you have installed the driver manually, please use the "Match Up" function of the HPM.

Driver code can be downloaded and installed manually from this link: https://raw.githubusercontent.com/kkossev/Hubitat-Tuya-Wall-Thermostat/main/Tuya-Wall-Thermostat.groovy

The last hotfixes and new features are available in the development branch:


Supported models

Model 1 (AVATTO)

(AE link)
(Amazon.de link)
Driver status: everything working (as this is the author's thermostat :slight_smile: )

Model 2 (MOES)


(AE link)
Driver status: confirmed to be working OK

Model 3 (testing)

This device has a firmware bug that results in sending multiple duplicated packets over the Zigbee network on temperature settings change. This will not take your HE hub down, but is better to avoid.

(AE link)
Driver status: waiting for confirmation

Model 4 (BEOK)


(Beok Controls site link)
Driver status: confirmed to be working OK


While the same driver may work with other Tuya thermostat models (different than these listed below), this is not guaranteed because of the commands differences between the models and manufacturers.


  • Hubitat Elevation dashboards
  • Hubitat mobile app (to be tested!)
  • Amazon Alexa
  • Google Home
  • HomeKit (new)


Currently, not all of the functionalities and settings that are available from Tuya SmartLife app for the specific model are implemented into this HE driver.
The basic functions that are working at the moment are:

  • Synchronizes the thermostat clock to HE hub time and day of the week.
  • Switches the thermostat On and Off (thermostatMode).
  • Reads the thermostat temperature sensor (temperature).
  • Sets and reports the thermostat target temperature (heatingSetpoint).
  • Sets and reports the thermostat operation mode ('manual' or 'scheduled').
  • Reports the thermostat actual operating state ('idle' or 'heating') - relay open or closed state.
  • Reports the PID algorithm output variable as calculated by this simple formula image (AVATTO model only)

The driver adds some extra options and features:

  • Automatic or manual selection of the thermostat group
  • 'Force Manual' option - switches back the thermostat into 'manual' operation mode if it was accidentally put into 'scheduled' mode. Default is off.
  • 'Resend Failed' option - resends the commands for setting up the thermostat setPoint and mode, if failed by any reason.
  • Debug and Text info options. The debugging option is switched off automatically after 30 minutes.
  • Minimum and maximum limits for the heating setpoint.

This driver is currently a work-in-progress. If the 'production' version of the driver from the first post does not work for your model, please try the development branch : (GitHub link) which is updated more often. New devices fingerprints will be first added into the development branch, after being confirmed to work OK.

The 'production' version is updated only when a new feature was added or a critical bug was fixed. This will be the version that will be available for installing from HPM.

Latest revisions history:

  • ver. 1.0.4 2022-01-11 - added BEOK wall thermostat model '_TZE200_2ekuz3dz'

  • ver. 1.0.5 2022-01-15 - added Rx/Tx/duplicate packets counters, multiple bug fixes and improvements. The previous custom command 'Control Mode' is now removed and handled by the standard HE thermostat commands:

  *        off - switches the thermostat display (and relay!) off;
  *        heat - switches to manual control mode
  *        auto - switches to the scheduled control mode

While in 'auto' mode, the setpoint temperature can still be changed from either the thermostat control panel or from HE command. The device will stay in 'auto' mode and will revert back to the scheduled temperature when the next scheduled period kicks in.
If the plan is to control the thermostat solely by Hubitat, the right operating mode is heat.

  • ver. 1.0.6 2022-01-16 - debug/trace commands fixes
  • ver. 1.0.7 2022-03-21 - added childLock attribute and events; checkDriverVersion(); removed 'Switch' capability and events; enabled 'auto' mode for all thermostat types.
  • ver. 1.0.8 2022-04-03 - added tempCalibration; hysteresis; minTemp and maxTemp for AVATTO and BRT-100; added Battery capability for BRT-100
  • ver. 1.2.1 2022-04-05 - BRT-100 basic cluster warning supressed; tempCalibration, maxTemp, minTemp fixes; added Battery capability; 'Changed from device Web UI' desctiption in off() and heat() events.
  • ver. 1.2.2 2022-09-04 - AVATTO additional DP logging; removed Calibration command (now is as Preference parameter); replaced Initialize capability w/ custom command; degrees symbol in temp. unit; Refresh command wakes up the display'; Google Home compatibility
  • ver. 1.2.3 2022-09-05 - added FactoryReset command (experimental, change Boolean debug = true); added AVATTO programMode preference;
  • ver. 1.2.4 2022-09-28 - _TZE200_2ekuz3dz fingerprint corrected
  • ver. 1.2.5 2022-10-08 - BEOK: added sound on/off, tempCalibration, hysteresis, tempCeiling, setBrightness, 0.5 degrees heatingSetpoint (BEOK only); bug fixes for BEOK: Child lock, thermostatMode, operatingState
  • ver. 1.2.6 2022-10-16 - BEOK: time sync workaround; BEOK: temperature scientific representation bug fix; parameters number/decimal fixes; brightness and maxTemp bug fixes; heatingTemp is always rounded to 0.5; cool() does not switch the thermostat off anymore.
  • ver. 1.2.7 2022-11-05
    • BEOK: added frostProtection;
    • BRT-100: tempCalibration bug fix;
    • reversed heat and auto modes for MOES dp=3;
    • hysteresis is hidden for BRT-100;
    • maxTemp lower limit set to 15;
    • dp3 is ignored from MOES/BSEED if in off mode
    • supressed dp=9 BRT-100 unknown function warning;
  • ver. 1.2.8 2022-11-20 :
    • added 'brightness' attribute;
    • removed MODEL3;
    • dp=3 refactored;
    • presence function bug fix
    • added resetStats command;
    • refactored stats;
    • faster sending of Zigbee commands;
    • time is synced every hour for BEOK;
    • modeReceiveCheck() and setpointReceiveCheck() refactored;
  • ver. 1.2.9 2022-12-05 :
    • bugfix: 'supportedThermostatFanModes' and 'supportedThermostatModes' proper JSON formatting;
    • homeKitCompatibility option
  • ver. 1.2.10 2023-01-08 - bugfix: AVATTO thermostat can not be switched off from HE dashboard;
  • ver. 1.2.11 2023-01-14 - bugfix: BEOK setBrightness retry
  • ver. 1.3.0 2023-06-03 - (dev. branch) added sensorSelection; replaced Presence w/ Health Status; added ping() and rtt;
  • ver. 1.3.1 2023-10-29 kkossev - (dev. branch) - added 'HY369' group (TS0601 _TZE200_ckud7u2l); add state.deviceProfile
  • ver. 1.3.2 2023-11-16 kkossev - (dev. branch) - added TS0601 _TZE200_bvrlmajk Avatto TRV07 ; added Immax Neo Lite TRV 07732L TS0601 _TZE200_rufdtfyv as HY367;
  • ver. 1.3.3 2023-11-16 vnistor - (dev. branch) - added modes, valve, childLock, windowOpen, windowOpenDetection, thermostatOperatingState to TS0601 _TZE200_bvrlmajk Avatto TRV07
  • ver. 1.3.4 2023-11-16 kkossev - (dev. branch) - merged versions 1.3.2 and 1.3.3;
  • ver. 1.3.5 2023-11-23 vnistor - (dev. branch) - added childLock status, valve status, battery warning, thermostatMode, setHeatingSetpoint, Valve capability, Preferences: tempCalibration, minTemp, maxTemp to HY367;
  • ver. 1.3.6 2023-11-24 kkossev - (dev. branch) - The newly added events are declared as custom attributes;
  • ver. 1.3.7 2023-12-05 kkossev - (dev. branch) - setting the hysteresis bug fix for AVATTO.
  • ver. 1.3.8 2023-12-08 kkossev - thermostatOperatingState bug fix for BRT-100.

If your thermostat model is working fine with this driver, please send me your model info. Hit thee 'Save Preferences' button on the device page and then copy the log text :

[info] Updating TS0601 Tuya Thermostat (Tuya Thermostat) model TS0601 manufacturer _TZE200_ye5jkfsb modelGroupPreference = Auto detect (AVATTO)

  • endpointId: 01
  • application: 41
  • profileId: 0104
  • inClusters: 0000,0004,0005,EF00
  • outClusters: 0019,000A
  • model: TS0601
  • manufacturer: _TZE200_aoclfnxz

Which model group is it? ( please copy the log text after hitting the 'Save Preferences button).
Are the temperature and the heating setpoint shown OK on the device page?

Tuya Zigbee Thermostat parse() descMap = [raw:catchall: 0104 EF00 01 01 0040 00 03EB 01 00 0000 01 01 00222404000101, profileId:0104, clusterId:EF00, clusterInt:61184, sourceEndpoint:01, destinationEndpoint:01, options:0040, messageType:00, dni:03EB, isClusterSpecific:true, isManufacturerSpecific:false, manufacturerId:0000, command:01, direction:01, data:[00, 22, 24, 04, 00, 01, 01]]

manufacturer: _TZE200_aoclfnxz

Heating setpoint shown correctly on device when I set it via the device driver.

1 Like

Would be great to interact with the built-in scheduler.

fingerprint is added in the MOES model group.

Editing the thermostat built-in schedule will be the most difficult part of the project... Not sure if this can be done from a driver, or will require an App (similar to the built-in Thermostat Scheduler).

For now, you can set up the schedule manually from the device, then select ''program' control mode :

EDIT: starting from version 1.0.5 the thermostat modes are changed from the standard 'Set Thermostat Mode' commands :

A major bug was fixed in version 1.0.2, please make sure you upgrade the driver using one of the links above.

As some thermostat models tend to go crazy (sending many data packets per second) if a heating setpoint is sent outside of their allowed ranges, the new driver version 1,0.3 adds two additional parameters - minimum and maximum temperatures that can be sent to the thermostat :

The default values are 5 and 28 degrees Celsius, which seems to be OK for most use cases.
In this version, the debug logging is switched off by default.

The heating setpoint for most of the devices must be an integer value, for example 20 or 21 degrees, but not 20.5 degrees. Although a 0.5 increments can be set when using the thermostat touch display, 0.5 deg. resolution is not possible from the Zigbee interface.

just tried latest driver have some issues

  1. asked alexa to alter thermostat to 20 works then asked asked to set to 10 get answer thermostat set to auto but on display of thermostat is not showing as auto..
  2. asked alexa to change to heat get reply saying in heat mode the asked to change to 20 replies that thermostat is set to auto.
  3. when set to 20 display on echo is 9 degrees not 20

have gone back to version 1.0.4 22/1/11 have been running this on only heat mode for weeks with no problem.

Beko thermostat

Thank you for the report, @andrewshilton48 ! I will check the changes made between the two versions to find and fix what is causing this misbehavior.

The driver has the option "Force Manual Mode". When switched on, it should return the thermostat back to the 'manual' or 'heat' mode which is the one that allows the heating setpoint to be controlled from HE or Alexa.
When the mode is changed to 'auto', this switches the thermostat into 'scheduled' operation, i.e. the temperature is changed based on the internal device control profile asset per hours and day of the week... manually from the thermostat control panel.

So it may be worth trying the 'Force Manual Mode' option that will prevent an accidental switch to 'auto' (aka ''Scheduled) mode.

@andrewshilton48 can you try the developments branch version (the second link in the first post)?
I believe the problem was fixed ( the 'auto' mode was not enabled for BEOK type thermostats in the previous versions).

I have the following Alexa voice commands working with my thermostat:

  • "Alexa, set [thermostat name] to 26" -> 'Thermostat is set to 26'
  • "Alexa, lower (raise) [thermostat name] by 3" -> ''Thermostat is set to 23'
  • "Alexa, what is the [thermostat name] temperature?" -> ' The [thermostat name] temperature is 22 degrees'
  • "Alexa, set [thermostat name] to off" -> ' Its off'
  • "Alexa, set the [thermostat name] to auto" -> ' Its set to auto' ( the LCD display shows the scheduled temperature, in my case 15 degrees
  • "Alexa, what is the [thermostat name] set to?" -> ' Auto is set to 15'
  • "Alexa, set [thermostat name] to heat" -> ' Its set to heat' ( the LCD display shows the manually setpoint temperature, in my case 23 degrees
  • "Alexa, what is the [thermostat name] set to?" -> 'The heat is set to 23'

Let me know if it works the same way for BEOK thermostat.

Any feedback of the repeater function of this devices?
I have 5 Ikea repeaters, plenty of Xiaomi/Aqara devices, every thing is working well, but info tells me me the setup of the mesh is sensitive for the Xiaomi/Aqara devices when using devices that may not repeat well.

I haven't noticed any issues with my Xiaomi/Aqara devices (I have about 10 of these on the same HE hub Zigbee network). Most of my Aqara battery-powered devices prefer to use SonOff switches as a repeater, two are repeating via TS011F Tuya smart sockets, one via Tuya Zigbee repeater.

Nothing uses my AVATTO wall thermostat as a repeater at the moment, but I will keep an eye on the routing table in the next week.

> Neighbor Table Entry
> [Wall Thermostat, 276E], LQI:255, age:4, inCost:1, outCost:1
1 Like

The development branch of the driver (the second link in the first post) was updated to version 1.0.8 :

  • added childLock command, attribute and events;
  • the driver checks automatically if it was updated to a new version and migrates or initialzes new settings when necessary;
  • removed 'Switch' capability and events;
  • enabled 'auto' ('scheduled' or 'programming') mode for all thermostat types.
  • AVATTO: added tempCalibration; hysteresis; minTemp and maxTemp
  • BRT-100: added tempCalibration; minTemp and maxTemp
  • BRT-100: added Battery capability

If no issues are reported, I will update also the 'production' version which is available from HPM in the next week.

Hi, any experience to share? Is everthing still working?

I have seen occasionaly the AVATTO wall mount thermostat being used as a Zigbee repeater (including a picky Aqara sensor!), but most of the time the battery-powered devices prefer other repeaters. But it definitely works as a repeater, no issues noticed.

[Thermostat Avatto _TZE200_ye5jkfsb, 38F6], LQI:254, age:3, inCost:1, outCost:1

1 Like