Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[TS0601_thermostat] Overshooting set temperature and not closing TRV's valve #1476

Open
1 task done
RubenKelevra opened this issue Nov 15, 2024 · 7 comments
Open
1 task done
Assignees
Labels
new bug incoming bug issue

Comments

@RubenKelevra
Copy link
Contributor

RubenKelevra commented Nov 15, 2024

Prerequisites

  • Model name of your Devices: TS0601_thermostat

Description

Better Thermostat is overshooting the setpoint by a significant margin with the TS0601_thermostat, normal calibration and setpoint calibration:

The setpoint was reached 20 Minutes ago, but the TRV valve is still at 45%, open, so heat is still pumped into the radiator, despite the setpoint has been reached a long time ago.

This is partly due to very slow processing of sensor data, described in #1474. (Issue #1471 is here no factor, as I fixed this locally, like in PR #1472 and #1473).

Screenshots

Screenshot_20241115_200641

Setpoint was 20°C which was reached 40 minutes ago at time of this screenshot.

Screenshot_20241115_200615

At the same time the TRV has still it's valve 45 % open.

Steps to Reproduce

  1. Setup Better Thermostat
  2. Select a setpoint above the current temperature
  3. Wait until the setpoint is reached
  4. See Better Thermostat heat waaaay past the setpoint.

Expected behavior:

Better Thermostat should shut off the TRV if it's still above 30% valve opening when 0.5 °C below the setpoint is reached. And turn it back on after it has reported HVAC mode 'off' for a minute.

That's my fix from 3 years ago, which works fine:

Screenshot_20241115_180224

Actual behavior:

Better Thermostat will just modulate the set temperature and does not care that the TRV is overheating the room for dozens of minutes.

Versions

HA: 2024.11.1
BT: 1.6.1 with PR #1472 and #1473 applied - otherwise unusable.

Additional Information

@RubenKelevra RubenKelevra added the new bug incoming bug issue label Nov 15, 2024
@RubenKelevra
Copy link
Contributor Author

Here's the issue graphed. Setpoint is 20 °C, but the TRV won't reduce the valve position until 21 °C is reached, because it assumes that the temperature is measured near the radiator, which leads to more than 2 °C of overswing:

Screenshot_20241116_215613

@RubenKelevra
Copy link
Contributor Author

I've implemented the overswing dampening with an automation, and that's the result:

Screenshot_20241117_004505

Overswing is dampened to 0.3 °C

Here's the automation with a debug counter and this binary signalling:

alias: "Heating: Overswing Protection - Bathroom"
description: Implements Overswing Protection for the Bathroom
triggers:
  - entity_id: sensor.feels_like_bathroom
    for: "00:00:15"
    trigger: state
  - entity_id: sensor.radiator_bathroom_position
    for: "00:02:00"
    above: "40"
    trigger: numeric_state
  - entity_id: sensor.radiator_bathroom_position
    for: "00:02:00"
    above: "60"
    trigger: numeric_state
  - entity_id: sensor.radiator_bathroom_position
    for: "00:02:00"
    above: "80"
    trigger: numeric_state
  - entity_id: sensor.radiator_bathroom_position
    for: "00:02:00"
    above: "90"
    trigger: numeric_state
  - entity_id: sensor.radiator_bathroom_position
    for: "00:02:00"
    above: "99"
    trigger: numeric_state
conditions:
  - condition: template
    value_template: >-
      {{ ((state_attr('climate.thermostat_bathroom', 'temperature') | float) -
      0.5) < (states('sensor.feels_like_bathroom') | float) }}
  - condition: state
    entity_id: climate.thermostat_bathroom
    state: heat
actions:
  - choose:
      - conditions:
          - condition: numeric_state
            entity_id: sensor.radiator_bathroom_position
            above: "30"
        sequence:
          - action: input_boolean.turn_on
            metadata: {}
            data: {}
            target:
              entity_id: input_boolean.overswing_dampening_bathroom
          - action: counter.increment
            metadata: {}
            data: {}
            target:
              entity_id: counter.overswing_dampenings_bathroom
          - data:
              hvac_mode: "off"
            entity_id: climate.thermostat_bathroom
            action: climate.set_hvac_mode
          - wait_for_trigger:
              - entity_id: sensor.radiator_bathroom_position
                below: "1"
                trigger: numeric_state
            timeout: "00:01:00"
          - data:
              hvac_mode: heat
            entity_id: climate.thermostat_bathroom
            action: climate.set_hvac_mode
          - action: input_boolean.turn_off
            metadata: {}
            data: {}
            target:
              entity_id: input_boolean.overswing_dampening_bathroom
    default: []
  - delay: "00:01:00"
mode: single

@tasomaniac
Copy link
Contributor

Not sure if it is exactly because of the same reason but I have also noticed that in few conditions my Tado shows heating in the Tado app and there is warm water pumped into the radiators. But actually the Better Thermostat shows that it is not heating.

I don't mind this that much actually because it is usually very low difference. E.g Tado temp is 23.4 and Better Thermostat sets is to 23.5. Just 0.1 difference.

But in terms of statistics, it is a problem because Better Thermostat says it is not heating but indeed it does.

@RubenKelevra
Copy link
Contributor Author

RubenKelevra commented Nov 21, 2024

Not sure if it is exactly because of the same reason but I have also noticed that in few conditions my Tado shows heating in the Tado app and there is warm water pumped into the radiators. But actually the Better Thermostat shows that it is not heating

Better Thermostat should always just show the heating status from the thermostat itself. Is the thermostat in Home Assistant (the one from the device, not from Better Thermostat) showing "idle" or "heating" in this case?

@tasomaniac
Copy link
Contributor

Are you sure of that? I have 3 separate TRVs connected to Better Thermostat. In this case only one of them was heating. And yes, that was also set to heating in home assistant.

I'm not so sure if BT is using the device status. Why? Because there may be multiple connected. What happens when only one is on? Plus some integrations don't support attributes like hvac_action etc. BT may not know the fact that a warm water is being pumped at that moment or not.

@Rapid4
Copy link

Rapid4 commented Nov 26, 2024

Can this be related?
https://www.zigbee2mqtt.io/devices/TS0601_thermostat.html
"system_mode: Mode of this device, in the heat mode the TS0601 will remain continuously heating, i.e. it does not regulate to the desired temperature. If you want TRV to properly regulate the temperature you need to use mode auto instead setting the desired temperature."

@RubenKelevra
Copy link
Contributor Author

@Rapid4 no. In this case the valve position would be at 100% all the time. As you can see above, that's not the case.

If you use the TS0601_thermostat you need to select the flip option in BT, which I have done.

Screenshot_20241126_174424

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
new bug incoming bug issue
Projects
None yet
Development

No branches or pull requests

4 participants