finds.dev← search

// the find

KartoffelToby/better_thermostat

★ 1,459 · Python · AGPL-3.0 · updated Jul 2026

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.

A Home Assistant custom component that wraps your existing TRV climate entities and adds a proper control loop on top — using an external room sensor for actual temperature rather than the one baked into the radiator head. Built for the common case where cheap Zigbee TRVs report temperatures 3-5°C too high because they sit next to a hot pipe.

The adapter pattern (mqtt.py, tado.py, deconz.py, etc.) handles the mess of per-device quirks without polluting the core logic — model_fixes/ is a graveyard of device-specific hacks that would otherwise live in automations. The control algorithm selection (MPC, PID, TPI) is genuinely useful: MPC is overkill for most users but the TPI mode is well-suited to bang-bang TRVs that can't modulate. Test coverage is real — separate unit and integration suites, algorithm simulators in tmp/, and CI running hassfest validation against actual HA versions. The window sensor integration works via sensor groups rather than hardcoded entity IDs, so multi-window rooms work without automation gymnastics.

PID auto-tune is flagged as beta and has been for a while — it requires leaving a room undisturbed long enough to gather data, which is basically never. The MPC implementation requires manual input of room thermal parameters (mass, heat loss coefficient) that most users have no way to measure, so they guess, and guessing wrong makes MPC worse than simple target-matching. Documentation for the algorithms is thin on the 'when to use which' question; the README lists features but doesn't say when TPI beats PID or why you'd bother with MPC. Telemetry is opt-out with data going to an external endpoint — the README doesn't mention this prominently.

View on GitHub → Homepage ↗

// want more like this?

We dig through GitHub every week and send a few repos picked for what you actually care about — each with an honest take like this one.

Get finds in your inbox → Search again →