Selora Homes Selora Homes

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

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

  1. Frequent switching: Increase hysteresis bands
  2. Comfort fluctuations: Fine-tune temperature thresholds
  3. High energy costs: Review rate schedules and optimize timing
  4. 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 %}