better_thermostat icon indicating copy to clipboard operation
better_thermostat copied to clipboard

BT Entity (and card) does not correctly show heating status all the time

Open auanasgheps opened this issue 1 year ago • 11 comments

Prerequisites

  • [x] Model name of your Devices: TS0601 (_TZE200_cpmgn2cf)
  • [x] Output from Home Assistant Developer Tools state e.g.
Output

hvac_modes: heat, off
min_temp: 5
max_temp: 35
target_temp_step: 0.5
current_temperature: 19.9
temperature: 19.5
hvac_action: off
window_open: false
call_for_heat: true
last_change: 2023-11-27T10:37:43.530313
saved_temperature: null
humidity: 53.5
main_mode: auto
tolerance: 0
heating_power: 0.0232
errors: []
batteries: {"sensor.studio_th_temperature": {"battery": "60", "battery_id": "sensor.studio_th_battery"}, "sensor.studio_th_humidity": {"battery": "60", "battery_id": "sensor.studio_th_battery"}, "binary_sensor.studio_finestra_contact": {"battery": "90", "battery_id": "sensor.studio_finestra_battery"}, "climate.studio_valvola": {"battery": "off", "battery_id": "binary_sensor.studio_valvola_battery_low"}}
friendly_name: Studio Riscaldamento
supported_features: 1
  • [x] Output from Home Assistant Device Diagnostic from BT
Output
{
  "home_assistant": {
    "installation_type": "Home Assistant OS",
    "version": "2023.11.3",
    "dev": false,
    "hassio": true,
    "virtualenv": false,
    "python_version": "3.11.6",
    "docker": true,
    "arch": "aarch64",
    "timezone": "Europe/Rome",
    "os_name": "Linux",
    "os_version": "6.1.21-v8",
    "supervisor": "2023.11.3",
    "host_os": "Home Assistant OS 11.1",
    "docker_version": "24.0.6",
    "chassis": "embedded",
    "run_as_root": true
  },
  "custom_components": {
    "smartir": {
      "version": "1.17.8",
      "requirements": [
        "aiofiles>=0.6.0"
      ]
    },
    "climate_group": {
      "version": "0.4.2",
      "requirements": []
    },
    "xiaomi_cloud_map_extractor": {
      "version": "v2.2.0",
      "requirements": [
        "pillow",
        "pybase64",
        "python-miio",
        "requests",
        "pycryptodome"
      ]
    },
    "asuswrt_custom": {
      "version": "0.8.5",
      "requirements": [
        "aioasuswrt==1.4.0",
        "pyasuswrt==0.1.20"
      ]
    },
    "spotcast": {
      "version": "v3.6.30",
      "requirements": []
    },
    "scheduler": {
      "version": "v0.0.0",
      "requirements": []
    },
    "adaptive_lighting": {
      "version": "1.19.0",
      "requirements": [
        "ulid-transform"
      ]
    },
    "xiaomi_miot": {
      "version": "0.7.13",
      "requirements": [
        "construct>=2.10.56",
        "python-miio>=0.5.6",
        "micloud>=0.3"
      ]
    },
    "hacs": {
      "version": "1.33.0",
      "requirements": [
        "aiogithubapi>=22.10.1"
      ]
    },
    "yi_hack": {
      "version": "0.4.6",
      "requirements": []
    },
    "alarmo": {
      "version": "v1.9.13",
      "requirements": []
    },
    "better_thermostat": {
      "version": "1.4.0",
      "requirements": []
    },
    "meross_lan": {
      "version": "4.4.1",
      "requirements": []
    }
  },
  "integration_manifest": {
    "domain": "better_thermostat",
    "name": "Better Thermostat",
    "after_dependencies": [
      "climate"
    ],
    "codeowners": [
      "@kartoffeltoby"
    ],
    "config_flow": true,
    "dependencies": [
      "climate",
      "recorder"
    ],
    "documentation": "https://github.com/KartoffelToby/better_thermostat",
    "iot_class": "local_push",
    "issue_tracker": "https://github.com/KartoffelToby/better_thermostat/issues",
    "requirements": [],
    "version": "1.4.0",
    "is_built_in": false
  },
  "data": {
    "info": {
      "name": "Studio Riscaldamento",
      "temperature_sensor": "sensor.studio_th_temperature",
      "off_temperature": 17,
      "humidity_sensor": "sensor.studio_th_humidity",
      "window_sensors": "binary_sensor.studio_finestra_contact",
      "weather": null,
      "window_off_delay": 30,
      "outdoor_sensor": "sensor.balcone_th_temperature",
      "model": "TS0601_thermostat",
      "window_off_delay_after": 30,
      "tolerance": 0.0
    },
    "thermostat": {
      "climate.studio_valvola": {
        "name": "Studio Valvola",
        "state": "auto",
        "attributes": {
          "hvac_modes": [
            "heat",
            "auto",
            "off"
          ],
          "min_temp": 5.0,
          "max_temp": 35.0,
          "target_temp_step": 0.5,
          "preset_modes": [
            "none",
            "schedule",
            "manual",
            "boost",
            "complex",
            "comfort",
            "eco",
            "away"
          ],
          "current_temperature": 21.5,
          "temperature": 19.5,
          "hvac_action": "off",
          "preset_mode": "complex",
          "auto_lock": "MANUAL",
          "away_mode": "OFF",
          "away_preset_days": 1,
          "away_preset_temperature": 15,
          "battery_low": false,
          "boost_time": 300,
          "child_lock": "UNLOCK",
          "comfort_temperature": 20,
          "current_heating_setpoint": 19.5,
          "eco_temperature": 15,
          "force": "normal",
          "holidays": [
            {
              "hour": 6,
              "minute": 0,
              "temperature": 20
            },
            {
              "hour": 8,
              "minute": 0,
              "temperature": 15
            },
            {
              "hour": 11,
              "minute": 30,
              "temperature": 15
            },
            {
              "hour": 12,
              "minute": 30,
              "temperature": 15
            },
            {
              "hour": 17,
              "minute": 30,
              "temperature": 20
            },
            {
              "hour": 22,
              "minute": 0,
              "temperature": 15
            }
          ],
          "holidays_schedule": "06:00/20\u00b0C 08:00/15\u00b0C 11:30/15\u00b0C 12:30/15\u00b0C 17:30/20\u00b0C 22:00/15\u00b0C",
          "last_seen": "2023-11-27T14:44:36+01:00",
          "linkquality": 255,
          "local_temperature": 21.5,
          "local_temperature_calibration": 0,
          "max_temperature": 29,
          "min_temperature": 5,
          "position": 0,
          "preset": "complex",
          "programming_mode": null,
          "running_state": "idle",
          "system_mode": "auto",
          "update": {
            "installed_version": 87,
            "latest_version": 87,
            "state": "idle"
          },
          "update_available": false,
          "valve_detection": null,
          "week": "5+2",
          "window_detection": "OFF",
          "window_detection_params": {
            "minutes": 10,
            "temperature": 5
          },
          "window_open": false,
          "workdays": [
            {
              "hour": 6,
              "minute": 0,
              "temperature": 20
            },
            {
              "hour": 8,
              "minute": 0,
              "temperature": 15
            },
            {
              "hour": 11,
              "minute": 30,
              "temperature": 15
            },
            {
              "hour": 12,
              "minute": 30,
              "temperature": 15
            },
            {
              "hour": 17,
              "minute": 30,
              "temperature": 20
            },
            {
              "hour": 22,
              "minute": 0,
              "temperature": 15
            }
          ],
          "workdays_schedule": "06:00/20\u00b0C 08:00/15\u00b0C 11:30/15\u00b0C 12:30/15\u00b0C 17:30/20\u00b0C 22:00/15\u00b0C",
          "friendly_name": "Studio Valvola",
          "supported_features": 17
        },
        "bt_config": {
          "calibration": "target_temp_based",
          "calibration_mode": "heating_power_calibration",
          "protect_overheating": true,
          "no_off_system_mode": false,
          "heat_auto_swapped": true,
          "valve_maintenance": false,
          "child_lock": true,
          "homaticip": false
        },
        "bt_adapter": "mqtt",
        "bt_integration": "mqtt",
        "model": "TS0601_thermostat"
      }
    },
    "external_temperature_sensor": {
      "entity_id": "sensor.studio_th_temperature",
      "state": "19.9",
      "attributes": {
        "state_class": "measurement",
        "battery": 60,
        "humidity": 53.5,
        "last_seen": "2023-11-27T14:43:27+01:00",
        "linkquality": 255,
        "temperature": 19.9,
        "unit_of_measurement": "\u00b0C",
        "device_class": "temperature",
        "friendly_name": "Studio TH Temperature"
      },
      "last_changed": "2023-11-27T13:40:12.099102+00:00",
      "last_updated": "2023-11-27T13:43:27.426022+00:00",
      "context": {
        "id": "01HG8GAHE2QZTWN4A1T0SHC36Z",
        "parent_id": null,
        "user_id": null
      }
    },
    "window_sensor": {
      "entity_id": "binary_sensor.studio_finestra_contact",
      "state": "off",
      "attributes": {
        "battery": 90,
        "contact": true,
        "device_temperature": 23,
        "last_seen": "2023-11-27T14:35:32+01:00",
        "linkquality": 255,
        "power_outage_count": 17,
        "voltage": 2985,
        "device_class": "door",
        "friendly_name": "Studio Finestra Door"
      },
      "last_changed": "2023-11-27T11:38:37.810955+00:00",
      "last_updated": "2023-11-27T13:35:32.797465+00:00",
      "context": {
        "id": "01HG8FW1XXMRE18NHMQTCNQ881",
        "parent_id": null,
        "user_id": null
      }
    }
  }
}

Description

BT does not always report when the real valve is heating. Usually small adjustments are not shown, larger ones do.

Please note that BT is working perfectly and I'm not having any functional issues whatsoever, but to know if the valve is heating I can't trust the BT Entity but I have to use the Valve entity, which ideally I'd like to ignore.

Here's an example: BT Entity: Better Thermostat Entity

Real TRV Real TRV

As you can see, BT only shows the larger heating moments, but not smaller ones.

Steps to Reproduce

  1. Configure temperature to 19.5
  2. Wait for temperature to exceed heating point to stop - my temp sensors have 0.2° C precision, so it will reach 19.7, then heating will stop
  3. Wait for temperature to drop to 19.5 again
  4. BT logic kicks in by opening the valve a little bit, but BT entity will not show the valve is open or heating

Expected behavior:

BT entity should always show when the TRV is heating.

Actual behavior: BT entity shows heating only sometimes, usually when there's a substantial temperature gap.

Versions

HA: 2023.11.3 BT: 1.4.0

Additional Information

auanasgheps avatar Nov 27 '23 13:11 auanasgheps

i have the same phenomenon with my homematic ip thermostats. however, my thermostats are switched off completely - when the target temperature has been reached. they do not go back into heating mode even when the temperature drops. in other words, the rooms cool down overnight and i have to switch the thermostats on again manually in the morning. they then run until the target temperature has been reached, then they go back into off mode. tested with the 1.3.0 and 1.4.0 version. Screenshot 2023-11-29 121750

kallejoken avatar Nov 29 '23 19:11 kallejoken

Your issue is different than mine - my problem is only visual as the thermostats are behaving perfectly!

auanasgheps avatar Nov 29 '23 23:11 auanasgheps

Same issue here. I use to switch the heating system on / off the hvac_action state of the BT climate entity This is the status of the BT climate entity: image

but this is the status of the TRV climate entity: image

the TRV wants to start heating, but BT says no. I also noticed that in this status the TRV valve position is also partially opened: image

This leads to some heaters heating even if they are not calling for heat.

example: i have 3 heaters on a floor: kitchen, living room and bathroom; only kitchen is calling for heat (using hvac_action from BT) but also the bathroom heater is heating up since the valve is partially open (and the TRV hvac_action is calling for heat)

niddu85 avatar Nov 30 '23 09:11 niddu85

This leads to some heaters heating even if they are not calling for heat.

This is not my issue, I suggest to report your issue in a separate case.

My problem is only cosmetic: BT and the valves are functioning correctly

auanasgheps avatar Nov 30 '23 10:11 auanasgheps

This leads to some heaters heating even if they are not calling for heat.

This is not my issue, I suggest to report your issue in a separate case.

My problem is only cosmetic: BT and the valves are functioning correctly

thanks, i just addressed this to a new issue

BetterThermostat Climate HVAC action not accurate #1165

Just for info, what logic do you use to drive your heating system?

niddu85 avatar Nov 30 '23 21:11 niddu85

I use https://github.com/nielsfaber/scheduler-component and https://github.com/nielsfaber/scheduler-card to program heating based on time and my location. It's great!

auanasgheps avatar Dec 01 '23 17:12 auanasgheps

I use https://github.com/nielsfaber/scheduler-component and https://github.com/nielsfaber/scheduler-card to program heating based on time and my location. It's great!

thanks, this is exactly what i use as well, but this component just sets the target temperature on the TRV/BT.

Which device do you use to turn the water heater on? i guess a relay. Which signal is driving this relay?

niddu85 avatar Dec 01 '23 22:12 niddu85

I don't have a relay because I don't need it: i live in an apartment where we have "central heating", the heater for the apartments is in the basement and is on most of the day.

By the way yes, you could use a relay (like a Shelly) and combine the action when BT is requesting for heat.

auanasgheps avatar Dec 02 '23 01:12 auanasgheps

I don't have a relay because I don't need it: i live in an apartment where we have "central heating", the heater for the apartments is in the basement and is on most of the day.

By the way yes, you could use a relay (like a Shelly) and combine the action when BT is requesting for heat.

All right, understood. That's the reason why you don't see the heating issue I see but just a GUI issue 😉

niddu85 avatar Dec 02 '23 08:12 niddu85

That also raises the question what should be the trigger for activating the heating itself (heater/boiler) - the BT thermostats, or the TRVs themselves. In my practice I had better results with triggering on BT ones, but your mileage may vary

R1DEN avatar Dec 06 '23 08:12 R1DEN

That also raises the question what should be the trigger for activating the heating itself (heater/boiler) - the BT thermostats, or the TRVs themselves. In my practice I had better results with triggering on BT ones, but your mileage may vary

In an ideal scenario, the user should follow the BT logic. Hopefully we can get it perfect. BT has made a long way since the "betas" of last winter.

auanasgheps avatar Dec 06 '23 09:12 auanasgheps