Hi everyone! ![]()
I wanted to share my new project with you: Multizone Thermostat.
The idea was born out of a personal need: current climate integrations often require complex YAML configurations. Initially, I created some custom automations to centralize my boiler while keeping the various zones independent, essentially trying to build a complete multi-room thermostat.
After doing some research, I tried a few of the most popular integrations out there, but none offered a 100% UI-based configuration. At that point, also thanks to some AI coding tools, I decided to turn the logic of my automations into a proper, native integration.
I delayed publishing this post a bit because the project initially started just to solve my specific use case, but I ended up getting carried away! Ultimately, I decided to evolve the system: from a simple valve aggregator into a smart and dynamic control system.
Here are the main features I introduced:
-
Dynamic Autotuning (from Hysteresis → to silent PID)
First off (and I noted this in the repo as well), I recycled the PID algorithms from some existing integrations, because it made no sense to reinvent a well-tested and solid mathematical foundation. However, the system was designed to eliminate the hassle of manually calculating PID parameters or having to run active, annoying autotuning processes. Instead, it uses a passive autotuning logic (typical of industrial systems): the system starts in Hysteresis mode, studies the room’s thermal dispersion in the background, and once it figures out the timings, it seamlessly and invisibly switches to the PID controller. You never have to touch the Kp, Ki, or Kd values! -
Integrated PWM Engine
Also starting from solid open-source foundations, I integrated and adapted a PWM cycle management system to translate the PID percentage demands into perfect On/Off cycles for the boiler. -
Hierarchical Zones (Primary, Secondary, and Bypass)
Thanks to some valuable user feedback, I evolved the concept of zone exclusion. You can now define:
- Primary Zones (e.g., the living room), which have the authority to trigger the boiler.
- Secondary Zones (e.g., a small bathroom), which passively open their valves to “steal” heat only when the boiler has already been activated by a primary zone, allowing for massive gas savings.
- Bypassed Zones, which are completely excluded.
-
Robust Hardware Locks (Hard Locks)
I added strict hardware locks (min_cycle_onandmin_cycle_off) to protect the boiler relays from sudden spikes or manual tinkering, completely eliminating the risk of wear from short-cycling. It also includes a Summer Anti-seize feature that periodically opens the valves during the summer to prevent calcification. -
Global Presets and Geofencing (Zero-code)
The system dynamically memorizes the temperature and window status of every single room inside specific Presets (Comfort, Eco, Sleep, Away) without needing a single line of YAML. You can also enable a built-in system that automatically sets the night schedule or switches to “Away” mode when presence sensors detect an empty house. -
Lovelace Custom Cards and Auto-generated Dashboard
The integration automatically registers 4 extremely easy-to-use custom Lovelace cards. What’s more, it leverages these cards to completely auto-generate a clean, intuitive climate dashboard.
The installation is fully compatible with HACS (just add it as a custom repository).
GitHub Repository and full documentation: Multizone Thermostat on GitHub
(A special thanks to the creators of SmartThermostat and vindaalex/multizone-thermostat, whose fantastic open-source work inspired the core math of the PID and autotuning for this project).
I would be really glad to receive your feedback, suggestions, or bug reports if you decide to try it out. Enjoy!


