Complex Heating Automation with Multiple Heat Sources
Learn how to automate complex heating systems with multiple heat sources
Heating
Automation
Multiple-Heat-Sources
Energy-Management
Home-Assistant
How‑to Guides
Heating, Automation, Multiple-Heat-Sources, Energy-Management, Home-AssistantLearn how to automate complex heating systems with multiple heat sourcesSearch results
Complex Heating Automation with Multiple Heat Sources
Managing multiple heat sources (heat pump, gas furnace, boiler, electric resistance) requires careful coordination to maximize efficiency while maintaining comfort. This guide covers automation strategies for hybrid heating systems in Home Assistant.
Understanding Multi-Source Heating
Common Configurations
- Heat Pump + Gas Furnace: Heat pump handles moderate temps, furnace kicks in below freezing
- Boiler + Heat Pump: Boiler for high-demand periods, heat pump for baseline
- Solar Thermal + Backup: Solar provides free heating when available, backup system handles gaps
- Electric + Gas: Electric for off-peak rates, gas for peak periods
Prerequisites
Hardware Requirements
- Individual control interfaces for each heat source
- Temperature sensors in key zones
- Energy monitoring (optional but recommended)
- Weather integration for outdoor temperature
Home Assistant Setup
# Example sensor configuration
sensor:
- platform: template
sensors:
outdoor_temp:
value_template: "{{ state_attr('weather.home', 'temperature') }}"
unit_of_measurement: "°C"
heating_demand:
value_template: >
{% set target = 21 %}
{% set current = states('sensor.living_room_temp') | float %}
{{ (target - current) | round(1) }}
unit_of_measurement: "°C"
Automation Strategies
Temperature-Based Switching
automation:
- alias: "Heat Source Selection Based on Temperature"
trigger:
- platform: numeric_state
entity_id: sensor.outdoor_temp
above: 5
action:
- service: climate.set_hvac_mode
target:
entity_id: climate.heat_pump
data:
hvac_mode: "heat"
- service: climate.turn_off
target:
entity_id: climate.gas_furnace
Energy Cost Optimization
automation:
- alias: "Use Electric Heating During Off-Peak"
trigger:
- platform: time
at: "22:00:00"
condition:
- condition: template
value_template: >
{{ states('sensor.energy_rate') | float < 0.10 }}
action:
- service: switch.turn_on
target:
entity_id: switch.electric_heating
- service: climate.turn_off
target:
entity_id: climate.gas_furnace
Demand-Based Control
automation:
- alias: "High Demand - Activate Secondary Heat"
trigger:
- platform: numeric_state
entity_id: sensor.heating_demand
above: 3
action:
- service: climate.turn_on
target:
entity_id: climate.gas_furnace
- service: climate.set_temperature
target:
entity_id: climate.gas_furnace
data:
temperature: 22
Advanced Techniques
Hysteresis Control
Prevent rapid switching with hysteresis bands:
input_number:
heat_pump_cutoff:
name: "Heat Pump Cutoff Temp"
min: -5
max: 10
step: 0.5
initial: 2
heat_pump_resume:
name: "Heat Pump Resume Temp"
min: 0
max: 15
step: 0.5
initial: 5
Learning Algorithms
Use historical data to optimize switching points:
script:
optimize_heat_source:
alias: "Optimize Heat Source Based on History"
sequence:
- service: recorder.query
data:
db_url: sqlite:///config/home-assistant_v2.db
query: >
SELECT outdoor_temp, energy_usage, comfort_level
FROM heating_history
WHERE date >= date('now', '-7 days')
# Analyze results and adjust thresholds
Safety and Reliability
Backup Systems
automation:
- alias: "Primary Heat Source Failure"
trigger:
- platform: state
entity_id: climate.heat_pump
to: "unavailable"
for: "00:05:00"
action:
- service: climate.turn_on
target:
entity_id: climate.gas_furnace
- service: notify.mobile_app
data:
title: "Heating System Alert"
message: "Heat pump failed - switched to gas furnace"
Maintenance Reminders
automation:
- alias: "Schedule Heating System Maintenance"
trigger:
- platform: time
at: "09:00:00"
condition:
- condition: template
value_template: >
{{ now().month in [9, 4] }} # Spring and fall
action:
- service: notify.mobile_app
data:
title: "Maintenance Reminder"
message: "Schedule heating system inspection"
Monitoring and Analytics
Energy Tracking
utility_meter:
heat_pump_energy:
source: sensor.heat_pump_power
cycle: daily
gas_furnace_energy:
source: sensor.gas_furnace_usage
cycle: daily
Performance Metrics
template:
- sensor:
- name: "Heating Efficiency Score"
unit_of_measurement: "%"
state: >
{% set efficiency = 85 %}
{% set outdoor = states('sensor.outdoor_temp') | float %}
{% if outdoor > 5 and is_state('climate.heat_pump', 'heat') %}
{{ efficiency + 10 }}
{% elif outdoor < -5 and is_state('climate.gas_furnace', 'heat') %}
{{ efficiency - 5 }}
{% else %}
{{ efficiency }}
{% endif %}
Troubleshooting
Common Issues
- Frequent switching: Increase hysteresis bands
- Comfort fluctuations: Fine-tune temperature thresholds
- High energy costs: Review rate schedules and optimize timing
- System conflicts: Ensure proper interlocks between sources
Debugging Tools
template:
- sensor:
- name: "Heat Source Status"
state: >
{% if is_state('climate.heat_pump', 'heat') %}
Heat Pump Active
{% elif is_state('climate.gas_furnace', 'heat') %}
Gas Furnace Active
{% else %}
Standby
{% endif %}
Last modified October 21, 2025: tool link checker (ae7f9e1)