Skip to content
Home Assistant TestFlight
Climate

Better Thermostat

KartoffelToby/better_thermostat · v1.9.3

HACSLocal push

This custom component for Home Assistant will add crucial features to your climate-controlling TRV (Thermostatic Radiator Valves) to save you the work of creating automations to make it smart. It combines a room-temperature sensor, window/door sensors, weather forecasts, or an ambient temperature probe to decide when it should call for heat and automatically calibrate your TRVs to fix the imprecise measurements taken in the radiator's vicinity.

In Apple Home through HomeKit Bridge

What HomeKit Bridge makes of each kind of entity this integration creates, read from its source code. A device only gets the ones that apply to it.

EntityShows up asNote
switchSwitch or outlet
climateThermostat
sensorSensor (temperature, humidity, air quality…)

1 report below say how a device from this integration behaves in the Home app.

What people report

Wraps existing TRV climate entities (Zigbee2MQTT, ZHA, Matter, Shelly, HomeMatic) with model-specific quirks; some Zigbee TRVs with odd calibration or model reporting need fixes.

  • Works2
  • Partly works4
  • Requested1
DeviceIn Home AssistantIn Apple HomeWhat they saidSource
HomeMatic thermostatsWorksSELECT-entity calibration offset supported from 1.8
Saved copy
Native Support for SELECT Entities as Calibration Offset ## Problem Description HomeMatic thermostats expose their `temperature_offset` parameter as SELECT entities with Kelvin-suffix values (e.g., `"0.0k"`, `"1.5k"`, `"-3.5k"`). Currently, Better Thermostat only supports NUMBER entities for local calibration, forcing users to create template NUMBER entities as workarounds. ## Proposed Solution Extend the generic adapter to automatically detect and handle SELECT entities for temperature offset calibration, eliminating the need for template entities. ## Use Case - HomeMatic HM-CC-RT-DN …

Excerpt saved from GitHub on 2026-10-23.

Issue #1888 · 2026-02
Zigbee2MQTT radiator TRVsWorksPreset 'none' publish loop fixed
Saved copy
Description When Zigbee2MQTT i get this error: [2026-08-23 23:51:57] error: z2m: Publish 'set' 'preset' to 'Alrum Radiator' failed: 'Error: Unsupported preset 'none'' [2026-08-23 23:52:20] error: z2m: Publish 'set' 'preset' to 'Badeværelse Radiator' failed: 'Error: Unsupported preset 'none'' [2026-08-23 23:52:28] error: z2m: Publish 'set' 'preset' to 'Christian Radiator' failed: 'Error: Unsupported preset 'none'' [2026-08-23 23:52:36] error: z2m: Publish 'set' 'preset' to 'Gang Radiator' failed: 'Error: Unsupported preset 'none'' [2026-08-23 23:52:44] error: z2m: Publish 'set' 'preset' to …

Excerpt saved from GitHub on 2026-10-23.

Issue #2268 · 2026-08
Beok TGM50-ZB (TS0601 _TZE284_cvub6xbb)Partly works LocalLocal calibration ramps offset to limits; use temperature-based calibration
Saved copy
Description Calibration doesn't seem to be working for my TS0601 _TZE284_cvub6xbb model (TGM50-ZB). I tried different options, but the calibration always ramps up the temperature on the device way beyond the actual temperature of the external sensor. Possibly related: #1672 - I tried with the TS0601_thermostat quirk (copying the content to default) but that didn't work either. Expected behavior: The local temperature of the thermostat is equal to the external sensor Actual behavior: The offset is calculated wrongly - much higher values than the difference between the temp reported by the …

Excerpt saved from GitHub on 2026-10-23.

Issue #1673 · 2025-10
Beok wall thermostat via Zigbee2MQTTPartly worksModel detected as generic Beok wall thermostat instead of model number
Saved copy
It looks like my thermostat model is wrongly detected. From the code, it takes the value from brackets that Z2M provides, but this is how my thermostat is reported: The model then is Beok wall thermostat instead of the specific model number. ### Versions and HW Home Assistant: 2025.10.2 Better Thermostat: 1.7.1-beta4 TRV(s): TS0601 _TZE284_cvub6xbb (Beok wall thermostat); TGM50-ZB ### Debug data diagnostic data ```json { "home_assistant": { "installation_type": "Home Assistant OS", "version": "2025.10.2", "dev": false, "hassio": true, "virtualenv": false, "python_version": "3.13.7", "docker": …

Excerpt saved from GitHub on 2026-10-23.

Issue #1672 · 2025-10
Sonoff TRV (ZHA)Partly works LocalStartup fails when local calibration entity cannot be set; flaky Zigbee
Saved copy
… [homeassistant] Error doing job: Task exception was never retrieved (None) Traceback (most recent call last): File "/usr/local/lib/python3.13/site-packages/zha/zigbee/cluster_handlers/init.py", line 68, in wrap_zigpy_exceptions yield File "/usr/local/lib/python3.13/site-packages/zha/zigbee/cluster_handlers/init.py", line 86, in wrapper return await RETRYABLE_REQUEST_DECORATOR(func)(*args, kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.13/site-packages/zigpy/util.py", line 136, in retry return await func() ^^^^^^^^^^^^ File …

Excerpt saved from GitHub on 2026-10-23.

Issue #1614 · 2025-03
Tado X via MatterPartly works LocalPartly in Home
Humidity not shown in Home app
Humidity from linked sensor missing in HomeKit; fix planned in 1.7
Saved copy
Prerequisites I'm using Tado X via Matter. This is a real device: [code] This is a BT device: [code] ### Description If add the BT device to homekit, then humidity in homekit is not available. I compared with another climate-type devices which are working well and they have current_humidity attribute. BT in my case has only humidity attribute which reflects connected humidity sensor. I'm not sure why BT has no current humidity: because the real device doesn't have humidity or by another reason. ### Steps to Reproduce Add better thermostat device to homekit. Expected

Excerpt saved from GitHub on 2026-10-23.

Issue #1423 · 2024-10
Shelly BLU TRVRequestedDirect valve control PR closed without merge
Saved copy
Motivation: Shelly BLU TRVs with automatic temperature control disabled expose a writable valve-position number through Home Assistant's Shelly integration. Their climate entity have no target temperature or OFF mode. It is not possible to use the Shelly BLU TRV with direct valve control using Better Thermostat right now. This PR lets Better Thermostat regulate these devices by setting the valve opening directly, using its existing Heating Power, MPC, MPC v2, PID and TPI controllers. ## Changes: - Add a Shelly adapter that discovers the writable valve-position number through entity metadata …

Excerpt saved from GitHub on 2026-10-23.

PR #2758 · 2026-10

Gathered from GitHub issues, pull requests, discussions and docs, and from r/homeassistant. These are individual reports, so check the linked thread and the date before you buy.

How it connects

Local push

Talks to the device on your network, and the device tells Home Assistant the moment something changes.

Details

Installs (analytics)8,087 (1.14%)
GitHub stars1,524
Latest version1.9.3 (2026-10-22)
Set up in the UIYes
Maintainers@kartoffeltoby
LicenseAGPL-3.0

In ReReHome

Whatever HomeKit Bridge shares reaches Apple Home as normal HomeKit accessories behind your Home Assistant bridge, so ReReHome shows and controls them like any other.

Bridges get their own settings page listing the accessories behind them.