Better Thermostat
This custom component for Home Assistant will add crucial features to your climate-controlling Thermostatic Radiator Valves to save you the work of creating automations to make it smart.
https://github.com/KartoffelToby/better_thermostat
Category: Consumption
Sub Category: Buildings and Heating
Keywords
climate energy-efficiency hacktoberfest hacs home-assistant home-automation homeassistant moes sea801 sea802 sensor smarthome spzb0001 thermostat ts0601 tuya zigbee zigbee2mqtt
Keywords from Contributors
consumption hue-lights metering power virtual-sensors water varta varta-storage
Last synced: about 15 hours ago
JSON representation
Repository metadata
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.
- Host: GitHub
- URL: https://github.com/KartoffelToby/better_thermostat
- Owner: KartoffelToby
- License: agpl-3.0
- Created: 2021-10-30T16:21:04.000Z (over 4 years ago)
- Default Branch: master
- Last Pushed: 2025-10-22T10:06:53.000Z (4 months ago)
- Last Synced: 2025-10-23T16:44:34.292Z (4 months ago)
- Topics: climate, energy-efficiency, hacktoberfest, hacs, home-assistant, home-automation, homeassistant, moes, sea801, sea802, sensor, smarthome, spzb0001, thermostat, ts0601, tuya, zigbee, zigbee2mqtt
- Language: Python
- Homepage: https://better-thermostat.org
- Size: 1.89 MB
- Stars: 1,139
- Watchers: 21
- Forks: 146
- Open Issues: 236
- Releases: 35
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
- Funding: .github/FUNDING.yml
- License: LICENSE
README.md
Better Thermostat
For more info visit: https://better-thermostat.org/
Requirements
- Minimum required Home Assistant version:
2024.12
(Latest tested version:2025.11.3)
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.
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:
- During setup or configuration, you can select which Presets you want to enable for this thermostat.
- For each enabled preset mode (e.g. Eco, Comfort, Sleep), a corresponding
numberentity is created (e.g.,number.better_thermostat_preset_eco). - These entities are located in the Configuration category of the device.
- You can adjust the temperature for each preset directly using these number sliders.
- The values are automatically persisted across Home Assistant restarts.
- 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.
Owner metadata
- Name: Tobias Haber
- Login: KartoffelToby
- Email: kontakt@t-haber.de
- Kind: user
- Description: A Fullstack web application developer from Germany with a passion for open source projects in the smart home industry. Skilled in various programming languages.
- Website: https://t-haber.de
- Location: Germany
- Twitter: Kartoffeltoby
- Company: @dundd
- Icon url: https://avatars.githubusercontent.com/u/8983030?u=c0e47cba24451d547afc534439c4298bd94ab8bb&v=4
- Repositories: 51
- Last ynced at: 2026-01-13T16:59:08.546Z
- Profile URL: https://github.com/KartoffelToby
GitHub Events
Total
- Fork event: 26
- Discussion event: 1
- Create event: 11
- Commit comment event: 1
- Issues event: 233
- Release event: 6
- Watch event: 293
- Member event: 2
- Issue comment event: 1001
- Push event: 42
- Pull request review comment event: 22
- Pull request review event: 32
- Pull request event: 62
Last Year
- Fork event: 25
- Discussion event: 1
- Create event: 11
- Commit comment event: 1
- Issues event: 227
- Release event: 6
- Watch event: 274
- Member event: 2
- Issue comment event: 975
- Push event: 42
- Pull request review comment event: 22
- Pull request review event: 32
- Pull request event: 62
Committers metadata
Last synced: 3 months ago
Total Commits: 857
Total Committers: 63
Avg Commits per committer: 13.603
Development Distribution Score (DDS): 0.544
Commits in past year: 60
Committers in past year: 14
Avg Commits per committer in past year: 4.286
Development Distribution Score (DDS) in past year: 0.75
| Name | Commits | |
|---|---|---|
| KartoffelToby | k****t@t****e | 391 |
| @RubenKelevra | c****d@g****m | 234 |
| Wolfgang Tom | m****l@w****e | 89 |
| James McMahon | j****n@p****t | 17 |
| Folfy | f****y | 15 |
| Dr. Torge Valerius | 2****b | 8 |
| Tobias Haber | t****r@d****g | 7 |
| felixhaeberle | 3****e | 7 |
| Nguyen Thao Dat | t****n@s****e | 4 |
| Copilot | 1****t | 4 |
| Jameson_UK | 1****k | 4 |
| xX7 | 5****7 | 3 |
| misa1515 | 6****5 | 3 |
| chigelo | 1****o | 3 |
| Thomas Wendt | t****y@g****t | 3 |
| Fettlaus | 8****s | 3 |
| Eric HOUET | e****t@d****v | 3 |
| Cycor | 6****r | 3 |
| Hans | 1****c | 2 |
| Jiří Furda | 2****a | 2 |
| Krystian Kotkowski | 6****o | 2 |
| LeoCal | 2****l | 2 |
| Maximilian Pott | m****2@g****m | 2 |
| Michael Mior | m****r@g****m | 2 |
| developer | d****t@s****e | 2 |
| Nicolas Liaudat | n****t | 2 |
| Oliver Butler | d****v@o****k | 2 |
| Pablo C | P****s | 2 |
| Tomcat86878 | 7****8 | 2 |
| Said Tahsin Dane | t****c@g****m | 1 |
| and 33 more... | ||
Committer domains:
- gmx.net: 2
- wp.pl: 1
- schumacher.dev: 1
- orangesquash.org.uk: 1
- patchlevel.de: 1
- generac.com: 1
- me.com: 1
- falial.de: 1
- oliverbutler.uk: 1
- schaller-digital.de: 1
- deltacast.tv: 1
- student.uni-augsburg.de: 1
- division.ag: 1
- phs.scot: 1
- wolfgangtom.de: 1
- t-haber.de: 1
Issue and Pull Request metadata
Last synced: 3 months ago
Total issues: 478
Total pull requests: 159
Average time to close issues: 4 months
Average time to close pull requests: 19 days
Total issue authors: 356
Total pull request authors: 46
Average comments per issue: 4.18
Average comments per pull request: 1.41
Merged pull request: 115
Bot issues: 0
Bot pull requests: 0
Past year issues: 128
Past year pull requests: 69
Past year average time to close issues: 11 days
Past year average time to close pull requests: 15 days
Past year issue authors: 110
Past year pull request authors: 19
Past year average comments per issue: 2.55
Past year average comments per pull request: 1.59
Past year merged pull request: 37
Past year bot issues: 0
Past year bot pull requests: 0
Top Issue Authors
- RubenKelevra (38)
- kuduacz (7)
- pbranly (6)
- Soukyuu (5)
- LinuxfarmerHH (5)
- bsafh (5)
- code-chicken (5)
- jamesonuk (4)
- tomg1970 (3)
- deveth0 (3)
- mueller-esch (3)
- R1DEN (3)
- DeimicUser (3)
- MaJerle (3)
- folfy (3)
Top Pull Request Authors
- RubenKelevra (26)
- folfy (17)
- KartoffelToby (15)
- wtom (9)
- albummi (8)
- cygnusb (8)
- jamesonuk (8)
- Copilot (7)
- Moohan (3)
- hpuac (3)
- tjorim (2)
- apo-mak (2)
- tasomaniac (2)
- iainlane (2)
- imbaczek (2)
Top Issue Labels
- new bug (260)
- feature (118)
- bug (50)
- wait for feedback (29)
- stale (22)
- under investigation (14)
- enhancement (13)
- help wanted (6)
- faq (6)
- documentation (4)
- duplicate (3)
- special device (3)
- new function (3)
- question (2)
- wontfix (2)
- chores (1)
- new integration (1)
Top Pull Request Labels
- enhancement (13)
- bug (8)
- documentation (8)
- chores (3)
- feature (2)
Package metadata
- Total packages: 2
- Total downloads: unknown
- Total dependent packages: 0 (may contain duplicates)
- Total dependent repositories: 0 (may contain duplicates)
- Total versions: 2
proxy.golang.org: github.com/KartoffelToby/better_thermostat
- Homepage:
- Documentation: https://pkg.go.dev/github.com/KartoffelToby/better_thermostat#section-documentation
- Licenses: agpl-3.0
- Latest release: v0.1.0-beta (published about 4 years ago)
- Last Synced: 2025-10-29T20:19:09.598Z (3 months ago)
- Versions: 1
- Dependent Packages: 0
- Dependent Repositories: 0
-
Rankings:
- Dependent packages count: 5.395%
- Average: 5.576%
- Dependent repos count: 5.758%
proxy.golang.org: github.com/kartoffeltoby/better_thermostat
- Homepage:
- Documentation: https://pkg.go.dev/github.com/kartoffeltoby/better_thermostat#section-documentation
- Licenses: agpl-3.0
- Latest release: v0.1.0-beta (published about 4 years ago)
- Last Synced: 2025-10-29T20:19:09.812Z (3 months ago)
- Versions: 1
- Dependent Packages: 0
- Dependent Repositories: 0
-
Rankings:
- Dependent packages count: 5.395%
- Average: 5.576%
- Dependent repos count: 5.758%
Dependencies
- actions/checkout v2 composite
- psf/black stable composite
- actions/checkout v2 composite
- home-assistant/actions/hassfest master composite
- actions/checkout v3 composite
- actions/configure-pages v2 composite
- actions/deploy-pages v1 composite
- actions/jekyll-build-pages v1 composite
- actions/upload-pages-artifact v1 composite
- actions/checkout v2 composite
- hacs/action main composite
- black ==23.9.1 development
- codespell ==2.2.2 development
- flake8 ==4.0.1 development
- homeassistant ==2023.9.2 development
- pre-commit ==2.15.0 development
- ruff ==0.0.289 development
- yamllint ==1.32.0 development
Score: -Infinity