Skip to content

BT ignoring new TRV settings when target_temp_step was left untouched #1667

@code-chicken

Description

@code-chicken

Description

Changing device settings won't have any effect if target_temp_step has been left untouched. It took me countless of hours and trials to learn this important fact!

Steps to Reproduce

  1. Open BT Settings
  2. Proceed to next page where you can change special TRV device settings. Change something like "If your TRV can't handle the off mode ..."
  3. Save
  4. Wait - maybe a minute or so -> nothing will happen (i.e. no noise from the TRV engine)
  5. Reopen BT Settings
  6. Change target_temp_step to a different value. Maybe from "Auto" to "1.0" or vice versa.
  7. The changes you made to the TRV settings before will take effect. (i.e. I can hear the TRV engine working).

Expected behavior:

  1. Open BT Settings
  2. Proceed to next page and change something like "If your TRV can't handle the off mode ..."
  3. Wait some time, maybe a minute or so
  4. => The TRV engine will begin working

Actual behavior:

See "Steps to reproduce"

Versions and HW

Home Assistant: 2025.10.1
Better Thermostat: 1.7.0

TRV(s): TS0601

Debug data

diagnostic data

{
  "home_assistant": {
    "installation_type": "Home Assistant OS",
    "version": "2025.10.1",
    "dev": false,
    "hassio": true,
    "virtualenv": false,
    "python_version": "3.13.7",
    "docker": true,
    "arch": "x86_64",
    "timezone": "Europe/Berlin",
    "os_name": "Linux",
    "os_version": "6.12.43-haos",
    "container_arch": "amd64",
    "supervisor": "2025.10.0",
    "host_os": "Home Assistant OS 16.2",
    "docker_version": "28.3.3",
    "chassis": "vm",
    "run_as_root": true
  },
  "custom_components": {
    "eufy_security": {
      "documentation": "https://github.com/fuatakgun/eufy_security",
      "version": "8.2.1",
      "requirements": [
        "websocket-client==1.8.0",
        "aiortsp==1.4.0"
      ]
    },
    "epex_spot": {
      "documentation": "https://github.com/mampfes/ha_epex_spot",
      "version": "3.0.0",
      "requirements": [
        "beautifulsoup4"
      ]
    },
    "blitzortung": {
      "documentation": "https://github.com/mrk-its/homeassistant-blitzortung",
      "version": "1.3.11",
      "requirements": [
        "paho-mqtt>=1.5.0"
      ]
    },
    "ostrom": {
      "documentation": "https://github.com/oliverwehrens/homeassistant_ostrom_integration",
      "version": "1.0.3",
      "requirements": [
        "requests>=2.25.1"
      ]
    },
    "solar_prediction": {
      "documentation": "https://github.com/code-chicken/ha-solar-prediction",
      "version": "1.0.0",
      "requirements": []
    },
    "webrtc": {
      "documentation": "https://github.com/AlexxIT/WebRTC",
      "version": "v3.6.1",
      "requirements": []
    },
    "google_assistant_sdk_custom": {
      "documentation": "https://github.com/tronikos/google_assistant_sdk_custom",
      "version": "0.1.4",
      "requirements": [
        "beautifulsoup4",
        "gassist-text"
      ]
    },
    "hacs": {
      "documentation": "https://hacs.xyz/docs/use/",
      "version": "2.0.5",
      "requirements": [
        "aiogithubapi>=22.10.1"
      ]
    },
    "pyscript": {
      "documentation": "https://github.com/custom-components/pyscript",
      "version": "1.6.4",
      "requirements": [
        "croniter==6.0.0",
        "watchdog==6.0.0"
      ]
    },
    "chime_tts": {
      "documentation": "https://nimroddolev.github.io/chime_tts",
      "version": "v1.2.2",
      "requirements": [
        "pydub",
        "aiofiles"
      ]
    },
    "grad_vol": {
      "documentation": "https://github.com/NinDTendo/homeassistant_gradual_volume_control/blob/main/README.md",
      "version": "2.0.1",
      "requirements": []
    },
    "pirateweather": {
      "documentation": "https://github.com/alexander0042/pirate-weather-ha",
      "version": "1.7.7",
      "requirements": []
    },
    "waste_collection_schedule": {
      "documentation": "https://github.com/mampfes/hacs_waste_collection_schedule#readme",
      "version": "2.10.0",
      "requirements": [
        "icalendar",
        "icalevents>=0.1.26,!=0.1.28",
        "beautifulsoup4",
        "lxml",
        "pycryptodome",
        "pypdf"
      ]
    },
    "nordpool": {
      "documentation": "https://github.com/custom-components/nordpool/",
      "version": "0.0.17",
      "requirements": [
        "backoff"
      ]
    },
    "google_home": {
      "documentation": "https://github.com/leikoilja/ha-google-home",
      "version": "1.13.1",
      "requirements": [
        "glocaltokens==0.7.6"
      ]
    },
    "alarmo": {
      "documentation": "https://github.com/nielsfaber/alarmo",
      "version": "1.10.12",
      "requirements": []
    },
    "ltss": {
      "documentation": "https://github.com/freol35241/ltss",
      "version": "2.1.0",
      "requirements": [
        "sqlalchemy>=2.0,<3.0",
        "psycopg2-binary>=2.8,<3.0",
        "geoalchemy2>=0.13,<1.0"
      ]
    },
    "asterisk": {
      "documentation": "https://github.com/TECH7Fox/Asterisk-integration",
      "version": "1.0.4",
      "requirements": [
        "asterisk-ami==0.1.6"
      ]
    },
    "ytube_music_player": {
      "documentation": "https://github.com/KoljaWindeler/ytube_music_player",
      "version": "20250704.03",
      "requirements": [
        "ytmusicapi==1.9.1",
        "pytubefix==v8.13.1",
        "integrationhelper==0.2.2"
      ]
    },
    "bms_ble": {
      "documentation": "https://github.com/patman15/BMS_BLE-HA",
      "version": "1.21.0",
      "requirements": []
    },
    "unifigateway": {
      "documentation": "https://github.com/custom-components/sensor.unifigateway",
      "version": "0.3.3",
      "requirements": [
        "pyunifi==2.21"
      ]
    },
    "better_thermostat": {
      "documentation": "https://github.com/KartoffelToby/better_thermostat",
      "version": "1.7.0",
      "requirements": []
    },
    "scheduler": {
      "documentation": "https://github.com/nielsfaber/scheduler-component",
      "version": "v0.0.0",
      "requirements": []
    }
  },
  "integration_manifest": {
    "domain": "better_thermostat",
    "name": "Better Thermostat",
    "after_dependencies": [
      "climate",
      "zwave_js"
    ],
    "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.7.0",
    "is_built_in": false,
    "overwrites_built_in": false
  },
  "setup_times": {
    "null": {
      "setup": 5.278099999372898e-05
    },
    "01J920HG6W2H9PQH5PZNX1JRW8": {
      "wait_import_platforms": -0.11043445599999302,
      "config_entry_setup": 0.18064236899999742
    },
    "01J920Q3KHZA7QGPW8QAKQETV2": {
      "wait_import_platforms": -0.11076853500000539,
      "config_entry_setup": 0.17622841600000072
    },
    "01J920SRZPWREY4C514S255WCY": {
      "wait_import_platforms": -0.11085685599999806,
      "config_entry_setup": 0.18243927599999665
    },
    "01J92114PQETA34R39Z3132GWX": {
      "wait_import_platforms": -0.11090220100000181,
      "config_entry_setup": 0.1824512120000037
    },
    "01JGDYB9W3JCDBV7RY1YD2JTG5": {
      "wait_import_platforms": -0.11093619800000454,
      "config_entry_setup": 0.1772256219999946
    }
  },
  "data": {
    "info": {
      "name": "BT Wohnzimmer",
      "temperature_sensor": "sensor.gw1000a_v1_7_5_indoor_temperature",
      "off_temperature": 20,
      "tolerance": 0.0,
      "target_temp_step": 1.0,
      "humidity_sensor": "sensor.gw1000a_v1_7_5_indoor_humidity",
      "outdoor_sensor": "sensor.gw1000a_v1_7_5_outdoor_temperature",
      "window_sensors": "binary_sensor.sensor_balkontur_window_door_is_open",
      "weather": "weather.tomorrow_io_home_daily",
      "cooler": null,
      "window_off_delay": 0,
      "window_off_delay_after": 0,
      "model": "Thermostat radiator valve/Thermostat radiator valve"
    },
    "thermostat": {
      "climate.heizung_balkonfenster": {
        "name": "Heizung Balkonfenster",
        "state": "heat",
        "attributes": {
          "hvac_modes": [
            "off",
            "heat"
          ],
          "min_temp": 5.0,
          "max_temp": 30.0,
          "target_temp_step": 0.5,
          "preset_modes": [
            "none",
            "auto",
            "manual",
            "holiday"
          ],
          "current_temperature": 13.4,
          "temperature": 5.0,
          "preset_mode": "auto",
          "friendly_name": "Heizung Balkonfenster",
          "supported_features": 401
        },
        "bt_config": {
          "calibration": "target_temp_based",
          "calibration_mode": "fix_calibration",
          "protect_overheating": true,
          "no_off_system_mode": true,
          "heat_auto_swapped": false,
          "child_lock": true,
          "homematicip": false
        },
        "bt_adapter": "mqtt",
        "bt_integration": "mqtt",
        "model": "Thermostat radiator valve"
      },
      "climate.heizung_schreibtisch": {
        "name": "Heizung Schreibtisch",
        "state": "heat",
        "attributes": {
          "hvac_modes": [
            "off",
            "heat"
          ],
          "min_temp": 5.0,
          "max_temp": 30.0,
          "target_temp_step": 0.5,
          "preset_modes": [
            "none",
            "auto",
            "manual",
            "holiday"
          ],
          "current_temperature": 19.7,
          "temperature": 5.0,
          "preset_mode": "manual",
          "friendly_name": "Heizung Schreibtisch",
          "supported_features": 401
        },
        "bt_config": {
          "calibration": "target_temp_based",
          "calibration_mode": "fix_calibration",
          "protect_overheating": true,
          "no_off_system_mode": true,
          "heat_auto_swapped": false,
          "child_lock": true,
          "homematicip": false
        },
        "bt_adapter": "mqtt",
        "bt_integration": "mqtt",
        "model": "Thermostat radiator valve"
      }
    },
    "external_temperature_sensor": {
      "entity_id": "sensor.gw1000a_v1_7_5_indoor_temperature",
      "state": "18.7",
      "attributes": {
        "state_class": "measurement",
        "unit_of_measurement": "\u00b0C",
        "device_class": "temperature",
        "friendly_name": "GW1000A_Pro Indoor Temperature"
      },
      "last_changed": "2025-10-10T08:57:05.054317+00:00",
      "last_reported": "2025-10-10T08:57:05.054317+00:00",
      "last_updated": "2025-10-10T08:57:05.054317+00:00",
      "context": {
        "id": "01K76ND2RYNT0WQEKSTK0MEJPZ",
        "parent_id": null,
        "user_id": null
      }
    },
    "window_sensor": {
      "entity_id": "binary_sensor.sensor_balkontur_window_door_is_open",
      "state": "off",
      "attributes": {
        "device_class": "door",
        "friendly_name": "Sensor Balkont\u00fcr Window/door is open"
      },
      "last_changed": "2025-10-10T07:11:26.253233+00:00",
      "last_reported": "2025-10-10T07:11:26.253233+00:00",
      "last_updated": "2025-10-10T07:11:26.253233+00:00",
      "context": {
        "id": "01K76FBMHD5RFF6D76MEGDPPFC",
        "parent_id": null,
        "user_id": null
      }
    }
  },
  "issues": [
    {
      "created": "2024-12-09T07:54:41.063866+00:00",
      "dismissed_version": null,
      "domain": "better_thermostat",
      "is_persistent": false,
      "issue_id": "missing_entity_sensor.sensor_caroline_air_temperature"
    },
    {
      "created": "2024-12-09T07:54:41.064977+00:00",
      "dismissed_version": null,
      "domain": "better_thermostat",
      "is_persistent": false,
      "issue_id": "missing_entity_binary_sensor.sensor_caroline_badezimmerfenster_window_door_is_open_3"
    },
    {
      "created": "2025-10-08T18:37:44.254664+00:00",
      "dismissed_version": null,
      "domain": "better_thermostat",
      "is_persistent": false,
      "issue_id": "missing_entity_binary_sensor.tursensor_badezimmer_contact"
    },
    {
      "created": "2025-10-08T18:37:44.299153+00:00",
      "dismissed_version": null,
      "domain": "better_thermostat",
      "is_persistent": false,
      "issue_id": "missing_entity_climate.heizung_badezimmer_caroline"
    },
    {
      "created": "2025-10-08T18:37:44.305466+00:00",
      "dismissed_version": null,
      "domain": "better_thermostat",
      "is_persistent": false,
      "issue_id": "missing_entity_sensor.klima_caroline_temperature"
    }
  ]
}

Additional Information

I can reproduce this behaviour any time.
The bad thing is: It took me countless hours and pulled out hairs because I never found out why this f..... TRVs sometimes accept my changes and sometimes they don't.
The good thing is: now I know how to make sure that settings are being accepted. It is probably not only changing the target_temp_step setting to actually force BT to accept the changed TRV settings. It could also be that other settings on the first page have the same effect.

Metadata

Metadata

Assignees

Labels

new bugincoming bug issue

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions