better_thermostat is a free, open source internet of things (iot) project written in Python and released under AGPL-3.0. It has 1,539 GitHub stars, 192 forks and 56 open issues, and was last pushed 13 hours ago. On this registry it ranks #60 of 99 tracked projects in Internet of Things (IoT), with 5 head-to-head comparisons available. It gained 52 stars over the last 30 tracked days.

What is better_thermostat?

Better Thermostat is a free, open-source custom component for Home Assistant that adds smart climate control to thermostatic radiator valves (TRVs), and it is aimed at home-automation users who want accurate, automated room heating without writing their own automations.

What it is

Better Thermostat is a Python integration that lives in the Home Assistant ecosystem and is distributed through HACS, where it carries the HACS Default badge. It carries the AGPL-3.0 licence and is developed in the open on GitHub, with a companion Lovelace UI element called better-thermostat-ui-card that displays more information than the default Home Assistant thermostat element. A minimum Home Assistant version of 2026.7.2 is required, and the project is continuously tested against Home Assistant.

The concrete problem it solves is the imprecise temperature reading of a stock TRV. A radiator valve measures the air right next to the radiator, not the air in the room, so a heating schedule built on that number overshoots or undershoots. The usual workaround is a pile of hand-written Home Assistant automations that fuse a remote sensor, window contacts and weather data into a target temperature. Better Thermostat replaces those automations: it combines a room-temperature sensor, window and door sensors, a weather forecast provider, or an ambient temperature probe to decide when to call for heat, and it automatically calibrates the TRV to correct the imprecise internal reading.

Key capabilities

  • Uses a temperature sensor positioned away from the radiator to measure real room temperature, then calibrates the TRV against it.
  • Window and door sensors disable heating directly, so no automation has to be written for that behaviour.
  • A weather forecast provider or an outside air temperature sensor can turn the heat on and off.
  • Groups multiple TRVs into one entity, for rooms that have more than one radiator.
  • Runs automatic valve maintenance to stop valves sticking closed over the summer.
  • Offers selectable control algorithms, including MPC (Model Predictive Control), PID with beta auto-tuning for Kp, Ki and Kd, TPI, AI Time Based, and simple target temperature matching.
  • Learns and persists preset temperatures dynamically, so the baseline "no preset" setting remembers the last temperature set and survives restarts.

Who uses it and how

  • Home Assistant households running TRVs from vendors such as Moes and the SEA801/SEA802 families, both of which appear in the project's topic list.
  • Energy-conscious users tuning heating for efficiency, the stated goal behind the enhanced TRV algorithm.
  • Rooms with several radiators, where TRVs are grouped into a single entity so the whole room behaves as one thermostat.
  • Homes with frequently opened windows or doors, where the contact sensor cuts heating without any extra automation.
  • Users who want their TRVs exposed to Google Home, which the integration makes compatible.

Getting started

Install through HACS, where the integration is listed as a default repository, and install the optional better-thermostat-ui-card the same way. Home Assistant 2026.7.2 or newer is required.

How it compares

No paid products or competing tools are named in the facts supplied here, so the plain answer is that this component stands alone in this registry entry. It is best understood as an extension to Home Assistant rather than a standalone product, and any comparison belongs against the hand-rolled automation approach it replaces.

When to use it — and when not to

A self-hoster must already run a Home Assistant instance at version 2026.7.2 or newer, own compatible TRVs, and provide at least one room-temperature sensor for the integration to be useful. Anyone outside the Home Assistant ecosystem, or without a TRV to control, should not pick it. The honest caveats are that PID auto-tuning is currently in beta, and the TPI algorithm trades a slightly looser setpoint for gentler valve and battery behaviour.

project readme (upstream, from github) — read inline

Better Thermostat

Active installations GitHub issues Version Discord hacs_badge

**For more info visit: **

Requirements

  • Minimum required Home Assistant version: 2026.7.2 (continuously tested against Home Assistant Tested Home Assistant version)

Companion UI

We've created a companion UI element which can display more information than the default thermostat element in Home Assistant. Check it out via HACS: better-thermostat-ui-card

  • If you have a question or need help please create a new discussion or check if your question is already answered
  • If you have a suggestion, found a bug, or want to add a new device or function create a new issue
  • If you want to contribute to this project create a new pull request

Features

This integration brings some smartness to your connected radiator thermostats setup:

  • Uses a temperature sensor far away from the radiators to measure the real room temperature
  • Makes your TRVs fully compatible with Google Home
  • Let your windows disable your heating (avoid programming this via an automation)
  • Your weather forecast provider will turn your heat on/off
  • Or an outside air temperature sensor can do this as well
  • Does some valve maintenance automatically, to avoid them getting stuck closed over the summer
  • Group multiple TRVs to one (e.g. for a room with multiple radiators)
  • Enhance the default TRV Algorithm with some smartness to reduce energy consumption
  • Dynamic preset temperature learning & persistence (baseline/"no preset" remembers the last temperature you set and survives restarts)
  • Advanced Control Algorithms: Choose between MPC, PID, TPI, AI Time Based or simple target temperature matching for precise control.
  • Selectable Presets: Configure which preset modes are available for your thermostat during setup.

Advanced Control Algorithms

Better Thermostat now supports multiple advanced control strategies to optimize your heating:

  • MPC (Model Predictive Control): Uses a physical model of your room and radiator to predict future temperature changes and optimize valve opening.
  • PID Controller: A classic Proportional-Integral-Derivative controller that learns your room's characteristics to maintain a stable temperature. It features auto-tuning (currently in beta) to automatically find the best parameters (Kp, Ki, Kd) for your room.
  • TPI (Time Proportional Integral): A control method that cycles the valve on and off (or modulates it) to maintain a stable temperature, reducing overshoot.
  • AI Time Based: Uses a custom algorithm based on simple measurements and calculations (not actual AI) to calculate the required heating power and adjusts the TRV calibration to achieve it. This improves upon the standard TRV internal algorithm.

Not sure which to pick? A quick guide:

Algorithm Best For Trade-off
TPI A robust default — steady across room types, gentle on valve & battery, good with multiple radiators Slightly looser setpoint tracking than PID/MPC
PID Tight setpoint tracking in a stable, well-characterised room More valve activity; varies more by room; autotune is still in beta
MPC Anticipating solar / known disturbances when the room is modelled well Most valve activity; can over-react with several radiators; needs tuning
AI Time Based Quick setup, no tuning Looser comfort, weaker in complex rooms

Start with TPI or AI Time Based. Try PID for tighter tracking in a stable room, or MPC for disturbance anticipation if you're willing to tune.

These modes can be selected in the advanced configuration of the device.

Preset Temperature Configuration

Preset temperatures are now fully configurable via dedicated number entities.

How it works:

  1. During setup or configuration, you can select which Presets you want to enable for this thermostat.
  2. For each enabled preset mode (e.g. Eco, Comfort, Sleep), a corresponding number entity is created (e.g., number.better_thermostat_preset_eco).
  3. These entities are located in the Configuration category of the device.
  4. You can adjust the temperature for each preset directly using these number sliders.
  5. The values are automatically persisted across Home Assistant restarts.
  6. Changing a preset temperature via the number entity immediately updates the thermostat if that preset is currently active.

Default starting values:

Away:            16.0 °C
Boost:           24.0 °C
Comfort:         21.0 °C
Eco:             19.0 °C
Home:            20.0 °C
Sleep:           18.0 °C
Activity:        22.0 °C

Which hardware do we support?

We support all thermostats which are compatible with Home Assistant as long as they are shown up as a climate entity.

Integrations that are tested

  • Zigbee2Mqtt
  • Deconz
  • Tado
  • generic_thermostat

How to setup

Install this integration via HACS or copy the files from the latest release

Configuration details can be found in the documentation or on our website: better-thermostat.org

Some nice-to-know config tips for the configuration.yaml

Example Window/Door - Sensor config
group:
  livingroom_windows:
    name: Livingroom Windows
    icon: mdi:window-open-variant
    all: false
    entities:
      - binary_sensor.openclose_1
      - binary_sensor.openclose_2
      - binary_sensor.openclose_3
Combine multiple TRV to one (Group)

No worry, Better Thermostat supports grouping out of the box


Contributing?

checkout the CONTRIBUTING.md file

☕ Support

If you want to support this project, you can ☕ buy a coffee here.

Buy me a coffee

Frequently asked questions

Is better_thermostat free to use?

better_thermostat is open source under the AGPL-3.0 licence. There is no licence fee and no seat count — you can self-host it or, where the project offers one, pay a vendor for a managed version instead.

What does better_thermostat do?

This custom component for Home Assistant will add crucial features to your climate-controlling TRV (Thermostatic Radiator Valves) to save you the work of creati

What is better_thermostat written in?

better_thermostat is primarily written in Python. Its source is publicly available at https://github.com/KartoffelToby/better_thermostat, and it has 1,539 GitHub stars.