Active Heating Manager Add-on - Smart TRV-Based Boiler Control

A Home Assistant add-on that automatically manages your boiler based on heating demand from your TRV (Thermostatic Radiator Valve) entities.

What is it?

The Active Heating Manager monitors your TRVs and controls your boiler to match the actual heating demand in your home. When TRVs are calling for heat, it runs the boiler. When no heating is needed, it turns off or reduces the boiler.

Designed for multi-zone heating systems where each room has its own TRV managing its own schedule.

Key Features

:white_check_mark: Automatic Demand Detection - Monitors TRV hvac_action states on a polling interval
:white_check_mark: Dual Control Modes - Works with boiler thermostats or simple on/off switches
:white_check_mark: Dynamic Temperature Control - Adjusts boiler temperature based on valve position demand
:white_check_mark: Valve State Checking - Ignores TRVs with closed valves (prevents false demand)
:white_check_mark: Home Assistant Integration - Publishes sensor entities for monitoring and automation
:white_check_mark: Energy Efficient - Proportional heating prevents overshooting
:white_check_mark: Fully Configurable - Set your own temperatures and polling intervals

How It Works

The add-on continuously monitors your TRV entities and:

  1. Detects Heating Demand: Checks which TRVs have hvac_action: heating
  2. Validates Demand: Optionally checks valve positions to filter closed valves
  3. Calculates Target: Uses average valve position to determine boiler temperature (dynamic mode)
  4. Controls Boiler:
    • Thermostat Mode: Sets manual temperature on boiler thermostat
    • Toggle Mode: Turns boiler switch on/off
  5. Publishes Sensors: Updates Home Assistant entities for monitoring

Sensor Entities

The add-on creates these sensor entities for monitoring and automation:

  • sensor.active_heating_manager_status - Overall status (heating/idle)
  • sensor.active_heating_manager_trvs_heating - Count of TRVs currently heating
  • sensor.active_heating_manager_avg_valve_position - Average valve position percentage
  • sensor.active_heating_manager_target_temp - Current boiler target temperature

Use these in your dashboards, automations, or to monitor heating efficiency!

Dynamic Temperature Control

One of the standout features is proportional heating based on valve demand:

  • 0% valve position → Off temperature (e.g., 14°C)
  • 25% valve position → Current temp + 0.5°C (gentle heating)
  • 25-100% position → Scales linearly to max temperature (e.g., 21°C)

This prevents the boiler from overshooting and wasting energy when demand is low.

Installation

Via Add-on Store

Add Repository to Home Assistant

Or manually:

  1. Go to Settings → Add-ons → Add-on Store (⋮ menu) → Repositories
  2. Add: https://github.com/BenWolstencroft/home-assistant-addons
  3. Find “Active Heating Manager” in the add-on store
  4. Click Install

Configuration Examples

Example 1: Thermostat Mode (Recommended)

Control a boiler thermostat with dynamic temperature adjustment:


debug_logging: false

trv_entities:

- climate.living_room_trv

- climate.bedroom_trv

- climate.kitchen_trv

- climate.bathroom_trv

boiler_entity: climate.boiler_thermostat

boiler_mode: thermostat

manual_on_temperature: 21

manual_off_temperature: 14

check_valve_state: true

use_dynamic_temperature: true

polling_interval: 300

Example 2: Toggle Mode

Control a simple boiler switch:


debug_logging: false

trv_entities:

- climate.living_room_trv

- climate.bedroom_trv

boiler_entity: switch.boiler_relay

boiler_mode: toggle

check_valve_state: true

polling_interval: 300

Configuration Options

OptionTypeDefaultDescription
`debug_logging`boolean`false`Enable verbose logging for troubleshooting
`trv_entities`list`[]`**Required** - List of TRV climate entities to monitor
`boiler_entity`string`""`**Required** - Boiler thermostat or switch entity
`boiler_mode``thermostat`/`toggle``thermostat`Control method for boiler
`manual_on_temperature`integer (15-35)`21`Temperature when heating (thermostat mode)
`manual_off_temperature`integer (5-20)`14`Temperature when not heating (thermostat mode)
`check_valve_state`boolean`true`Filter TRVs with closed valves
`use_dynamic_temperature`boolean`true`Adjust temp based on valve position
`polling_interval`integer`300`Seconds between checks (300 = 5 minutes)

Use Cases

Perfect for:

  • Multi-zone heating systems with individual TRV schedules per room
  • Combi boilers with thermostat or relay control
  • System boilers with zone valves
  • Energy saving through demand-based heating

Works great with:

  • My MOES TRV Schedule Card for schedule management

  • Any Zigbee/Z-Wave/Tuya TRV that reports hvac_action and valve position

  • Standard Home Assistant climate entities

Important Notes

:bulb: Design Philosophy: This add-on is designed for systems where TRVs control their own schedules. The add-on monitors heating demand and manages the boiler - it doesn’t control TRV temperatures or schedules.

:warning: Requirements:

  • TRVs must report hvac_action state (heating/idle)
  • For dynamic temperature control, TRVs should report valve position sensors
  • Boiler entity must be controllable via Home Assistant

:zap: Performance:

  • Lightweight Python script running in add-on container
  • Configurable polling interval (default 5 minutes)
  • Minimal CPU/memory usage
  • All state checking via Home Assistant API

Compatibility

  • Home Assistant OS (Add-on)
  • Home Assistant Supervised (Add-on)
  • Home Assistant Container (Can run as standalone script)
  • Home Assistant Core (Can run as standalone script)

Tested with MOES Zigbee TRVs via Zigbee2MQTT and Hive boiler thermostat integrations.

Links

:books: Documentation: Full docs with configuration examples

:bug: Issues: Report bugs or request features on GitHub

Support

Have questions? Need help? Found a bug?


Questions or feedback welcome.

1 Like

Great work. A hacs installation method would be great for other installations

1 Like