Thermostat won't stop heating (Tuya TS0601)

Hey Hassiors,

i now have 3 Tuya thermostats installed and all three have the problem that when they heat, they don’t stop at the target temperature. As an example, the thermostats are set to 15 degrees in automatic mode. The room temperature is 17 degrees. Now I want to heat to 19 degrees. The thermostats open completely and the heating quickly reaches 19 degrees and above but now they don’t switch off automatically.
The thermostats are connected to a c2531 and zigbee2mqtt. Does anyone have a similar problem or do I need to configure something additional?

1 Like

Yes, I had the same issue. Unfortunately these TRV’s are not compatible with my Honeywell main thermostat which has TPI, they are messing up the TPI calculation.

I have exactly the same problem. What ist the meaning of TPI? Should it be not that easy, that the thermostat turns of on reaching the desired temperature? Is there a specific calculation behind this logic?

Still no solution for this… any ideas?

I managed to solve the problem. The problem was the TRV using an algorithm for heating depending on a profile for an average room with an average count of windows and draught. It’s possible to disable this algorithm by following the guide by brainzap:

This document describes on page 7 how to disable this algorithm. This guide is in german. For all non german speaking people, here is the translation:


3.1. The thermostat does not close on reaching the desired temperature

The thermostat uses by default an algorithm for temperature control, which is based on
average values ​​for room size, ventilation, windows, …

Sometimes this setting doesn’t work correctly, so it has to be deactivated.

To deactivate this algorithm, you have to carry out the following instructions:

  1. Press the Home symbol (:house:) for about 5 seconds (until the symbol lights up).
  2. Release the Home symbol (:house:) and press it again for about 10 seconds
  3. Now you are in the settings and the ( :repeat:) symbol flashes
  4. Press the (+) symbol until the number 4 lights up and the (SET) symbol flashes.
  5. Confirm by simply pressing the Home Symbol (:house:).
  6. Press the Home Symbol (:house:) about 10 times until you see the letter “A” to the right. Below should no blink a “0”.
  7. Press the Plus symbol (+)
  8. Now a “1” should flash
  9. Confirm by simply press the Home Symbol (:house:).

The algorithm is disabled and the thermostat should work correctly.


2 Likes

What a great PDF! Thanks for that. And this really solved the problem? On github they said that when a valves offers PID-Control you should use it…

0/1 mode is like using just one leg when you have to healthy legs. Is tuya supply it why to not using it (PID-Mode)?

But i will give it a try!

Hi, tried this, but it is still heating to max.

Reported temperature seems ok.

After Weeks of tests, I can say, that it unfortunately still not works. Although the TRV reports, that it’s not heating, and the valve percentage is 0%, I can hear water flowing through it until I send the OFF command. It’s still heating to the max value until the manual OFF. I try to switch again to mode 0 in the next days and to play around with the max temperatures etc. I’ll report again in the next weeks how it works (or not).

1 Like

I have same problem. My solution is send force=close and force=normal in automation. Because valve dont close fully if its open on 0%. Full close(force close) and 0% is not same. It seems to me like a bug.

2 Likes

Same for me. Even when lowering the target temperature below the current temperature, the trv sometimes keeps on heating with the same valve position. Excuse me for saying this, but that firmware is really f*cked and I am angry stuff like that is sold to customers.

Also, it seems setting force=normal does not reliably put the trv back to heating mode (sometimes it works, sometimes not). So I am setting the hvac_mode instead, which seems to work reliably.

Here is my automation (example for Zigbee2MQTT if your climate entity is called climate.my_trv):

alias: Close my_trv when target temperature is reached
description: ""
trigger:
  - platform: numeric_state
    entity_id: climate.my_trv
    for:
      hours: 0
      minutes: 1
      seconds: 0
    above: -0.1
    value_template: >-
      {{ state_attr('climate.my_trv', 'current_temperature') -
      state_attr('climate.my_trv', 'current_heating_setpoint') }}
action:
  - service: select.select_option
    data:
      option: close
    target:
      entity_id: select.my_trv_force
  - delay:
      hours: 0
      minutes: 1
      seconds: 0
      milliseconds: 0
    enabled: true
  - service: climate.set_hvac_mode
    data:
      hvac_mode: auto
    target:
      entity_id: climate.my_trv
mode: single
2 Likes

Good idea and nice insights about unreliable force=normal :+1:
In my case I think I want to run your actions only when my climate’s hvac_action changes to off state. Also added an optional condition for thermostat_bedroom_z2m_position==0 just to be sure force close is really needed:

alias: Close a TRV when thermostat was disabled and its position is 0
description: ""
trigger:
  - platform: state
    entity_id:
      - climate.thermostat_bedroom_z2m
    to: "off"
    attribute: hvac_action
    for:
      hours: 0
      minutes: 2
      seconds: 0
condition:
  - condition: state
    entity_id: sensor.thermostat_bedroom_z2m_position
    state: "0"
action:
  - service: select.select_option
    data:
      option: close
    target:
      entity_id: select.thermostat_bedroom_z2m_force
  - delay:
      hours: 0
      minutes: 1
      seconds: 0
    enabled: true
  - service: climate.set_hvac_mode
    data:
      hvac_mode: auto
    target:
      entity_id: climate.thermostat_bedroom_z2m
mode: single

FYI: it looks like the attribute “current_heating_setpoint” has been renamed to “temperature”.
At least with my z2m integrated device:

Zigbee Model: TS0601
Zigbee Manufacturer: _TZE200_cpmgn2cf

I wanted to add that I read somewhere about this problem, apparently the TRV’s motor is either not strong enough tu fully close the valve (i.e. push the pin) or its own pin is the wrong length so some people suggested sticking a tiny magnet i.e. 4mm diameter, 2mm thickness onto the TRV’s pin and then recalibrate.

Sounds plausible to me and will test this weekend. Basically, if the TRV doesn’t manage to fully push that pin then when it calibrates itself it will set the deepest it can push that pin to position: 0% thinking that is the furthest it can go.

I had the same problem for months until i figured it out (it was actually written on the manual i got with the TRV). On the TRV itself, there is setting “C” (settings on my Tuya TS0601 TRV [manufacturer model: _TZE200_cpmgn2cf] go 1-9, and then A-C), with modes:
“0 - soft close”, and
“1 - hard close”.
The default setting for this TRV is unfortunately “0” which does not fully close the valve. When set to “1” it works as it should. Hope it helps someone.

1 Like