🌡️ HVAC Health Monitor Blueprint - Detect System Performance Issues

Overview

I’ve created a blueprint that monitors your HVAC system’s performance by checking if the temperature responds appropriately to heating and cooling cycles. This was inspired by a similar feature on Nest thermostats that actually helped me discover my furnace’s flame sensor was dirty - it was cutting the gas and preventing proper heating!

NEW: This blueprint now uses different failure detection strategies optimized for different HVAC system types: AC cooling problems trigger alerts after consecutive failures, while gas furnace heating problems are tracked weekly to catch intermittent issues like dirty flame sensors and pressure switch faults.

LATEST UPDATE: Enhanced with precise AC runtime tracking using dedicated timestamp storage for more accurate long runtime detection and improved timing accuracy.

This blueprint can help detect potential issues early, such as:

  • Dirty flame sensors causing heating cutoffs
  • Dirty filters reducing airflow
  • Refrigerant leaks in cooling systems
  • Blocked vents or ducts
  • Failing components
  • Inefficient operation
  • NEW: Long AC runtime indicating system efficiency problems with precise timing

How It Works

The automation triggers when your thermostat starts heating or cooling, then:

  1. Records the starting temperature and precise timestamp
  2. Waits for a configurable runtime period (default: 90 minutes for cooling, 30 minutes for heating)
  3. Checks if the temperature changed by the expected amount
  4. NEW: Uses dual tracking strategies:
  • AC Cooling: Tracks consecutive failures (reset after successful cycle)
  • Gas Furnace Heating: Tracks weekly failures (reset every Sunday at midnight)
  1. ENHANCED: Monitors for excessively long AC runtime with precise timestamp tracking (default: 12+ hours continuous)
  2. Triggers your chosen actions when a problem is detected

Features

  • Separate temperature tolerances for heating and cooling systems
  • Smart deadband detection with configuration warnings to prevent false alarms
  • Dual success criteria - validates both performance thresholds and setpoint achievement
  • NEW: Dual failure tracking strategies - consecutive for AC, weekly for gas furnace
  • ENHANCED: Precise AC runtime tracking - uses dedicated datetime helper for accurate timing
  • NEW: Weekly heating failure reset - automatically resets every Sunday at midnight
  • Comprehensive commenting throughout the code for easy understanding and modification
  • Configurable runtime periods and failure counting thresholds
  • Separate actions for heating, cooling, and long runtime problems with detailed notifications
  • Built-in education about deadband relationships and proper configuration
  • Easy to disable heating or cooling monitoring individually

Required Helper Entities

Before using this blueprint, you’ll need to create 7 helper entities:

Input Number:

  • input_number.hvac_monitor_start_temp (min: 0, max: 100, step: 0.1)
  • input_number.hvac_long_runtime_threshold (min: 0, max: 24, step: 1)

Input Datetime:

  • input_datetime.hvac_cooling_start_time (date & time) NEW - For precise runtime tracking

Counter:

  • counter.hvac_cooling_failures (initial: 0, step: 1)
  • counter.hvac_heating_failures (initial: 0, step: 1)
  • counter.hvac_deadband_cooling_warnings (initial: 0, step: 1)
  • counter.hvac_deadband_heating_warnings (initial: 0, step: 1)

You can create these through Settings → Devices & Services → Helpers → Create Helper.

Configuration Options

  • Thermostat: Select your climate entity
    • :warning: IMPORTANT: Your thermostat must have an ‘hvac_action’ attribute that reports ‘heating’ or ‘cooling’ when the system is actively running. Check in Developer Tools > States to verify your thermostat shows hvac_action: heating/cooling/idle. If your thermostat doesn’t have hvac_action or reports different values, this blueprint will not trigger properly.

  • Cooling Minimum Runtime: How long AC should run before checking (30-240 minutes, default: 90 minutes)
  • Heating Minimum Runtime: How long gas furnace should run before checking (15-90 minutes, default: 30 minutes)
  • NEW: Maximum AC Continuous Runtime: Alert threshold for long AC runtime with precise tracking (4-24 hours, default: 12 hours)
  • Cooling Temperature Tolerance: Expected minimum cooling change (0.1-2.0°C, default: 0.4°C)
    • :warning: IMPORTANT: This value should be SMALLER than your thermostat’s deadband (the temperature difference that triggers your AC). Most thermostats have a 0.5-1.5°C deadband.

    • Example: If your AC turns on when room is 0.5°C above setpoint, the system will normally cool by about 0.5°C before turning off. Set your tolerance to 0.3-0.4°C to detect real problems while allowing normal operation. If tolerance is too high, you’ll get false failures. If too low, you might miss real issues.

  • Heating Temperature Tolerance: Expected minimum heating change (0.1-2.0°C, default: 0.4°C)
    • :warning: IMPORTANT: This value should be SMALLER than your thermostat’s deadband (the temperature difference that triggers your heater). Most thermostats have a 0.5-1.5°C deadband. Example: If your heater turns on when room is 0.5°C below setpoint, the system will normally heat by about 0.5°C before turning off. Set your tolerance to 0.3-0.4°C to detect real problems while allowing normal operation. If tolerance is too high, you’ll get false failures. If too low, you might miss real issues.

  • Enable Cooling/Heating Check: Toggle monitoring for each system independently
  • NEW: Enable AC Long Runtime Detection: Monitor for extended AC operation with precise timing
  • Enable Deadband Detection: Disable for smart thermostats (Nest, Ecobee) that use predictive algorithms
  • Maximum Consecutive Cooling Failures: Failures needed before alerting (1-10, default: 1)
  • NEW: Maximum Heating Failures Per Week: Weekly failure threshold before alerting (1-15, default: 4)
  • NEW: Deadband Warning Threshold: Consecutive warnings before notification (1-10, default: 5)
  • Problem Actions: Separate customizable actions for heating, cooling, and long runtime issues

Why Different Tracking Strategies?

AC Cooling problems often manifest immediately when there’s an issue (low refrigerant, dirty coils, compressor problems), so consecutive failure tracking helps detect issues quickly.

Gas Furnace Heating problems are often intermittent - dirty flame sensors and pressure switch faults can cause the system to work sometimes but fail randomly. Weekly tracking catches declining performance better than consecutive failures, as successful cycles between failures are normal for these types of issues.

Example Notification Actions

      - action: notify.notify
        metadata: {}
        data:
          title: "HVAC Issue Detected with Furnace"
          message: >-
            Your thermostat was heating but the temperature did not change as
            expected. Check your Furnace unit.

Installation

  1. Create the required 7 helper entities (see above)
  2. Go to Settings → Automations & Scenes → Blueprints
  3. Click “Import Blueprint” and paste the blueprint URL
  4. Create a new automation using the blueprint
  5. Configure your thermostat and preferences

Blueprint Code

https://github.com/gmlupatelli/blueprints_repo/blob/master/hvac_health_monitor/hvac_health_monitor.yaml

Open your Home Assistant instance and show the blueprint import dialog with a specific blueprint pre-filled.

Tips for Use

  • Start with default settings and adjust based on your system’s performance
  • Consider seasonal adjustments - some systems may need different tolerances
  • Monitor the logbook entries to understand your system’s normal behavior
  • The persistent notifications will help you track issues over time
  • If you are facing any issues, check the comprehensive troubleshooting guide: https://github.com/gmlupatelli/blueprints_repo/blob/master/hvac_health_monitor/README.md

Recent Updates

  • v2.2:
    • IMPROVED: Parameter naming - simplified to cooling_runtime and heating_runtime (removed “minimum”)
    • OPTIMIZED: Cooling failure threshold default increased from 1 to 2 consecutive failures for better balance
    • FIXED: Failure detection now verifies thermostat is still actively cooling/heating before flagging issues to prevent false alarms
  • v2.1:
    • ENHANCED: Precise AC runtime tracking using input_datetime helper for accurate timing
    • IMPROVED: More reliable long runtime detection with timestamp storage
    • UPDATED: Now requires 7 helper entities (added input_datetime.hvac_cooling_start_time)
    • OPTIMIZED: Better trigger configuration with stabilization delays
    • ENHANCED: Comprehensive documentation updates
  • v2.0:
    • Added weekly heating failure tracking for gas furnaces
    • Added AC long runtime detection for efficiency monitoring
    • Implemented dual failure strategies optimized for different HVAC types
    • Added automatic weekly reset for heating failures (Sunday midnight)
    • Enhanced helper entity requirements for new features
    • Improved default runtime settings based on system type
  • v1.0:
    • Initial release

Feedback Welcome!

This blueprint was inspired by a Nest thermostat feature that saved me from a cold house - it detected that my furnace wasn’t heating properly, which led me to discover the flame sensor was dirty and causing the gas to cut off intermittently. I wanted to bring this same monitoring capability to Home Assistant for any thermostat!

The latest updates make this blueprint even more sophisticated by using different tracking strategies optimized for the unique failure patterns of AC vs gas furnace systems, with enhanced precision in runtime tracking for better accuracy.

This is my most complex blueprint contribution - I’d love to hear your feedback and suggestions for improvements.

Let me know if you encounter any issues or have ideas for enhancements!

6 Likes

This is great, thanks for sharing!

Good idea, but it should take in account outside temperature somehow

I see your point. Thinking about the thermodynamic problem where the system (house) and the boundary (wall, roof, windows, floors), and the heat losses T_in > T_out (in winter), the greater the in and out temperature delta, the bigger are the heat losses via conduction, convection and radiation.

Assuming that everyone’s house HVAC system is correctly sized (in most cases, it is oversized), you can account for the different heat losses by fine-tuning the minimum runtime and temperature tolerance. In other words, you set your minimum runtime and temperature tolerance to the values that would work for the coldest day of the year in your region, and you should be good for warmer days.

While writing this answer to you, I had the idea of having separated minimum runtime and temperature tolerance values for cooling and heating. I will add this to the list of future improvements.

Implemented the separated Temperature Tolerances. I did this because I had completely forgotten to account for the thermostat deadband.

Example: If your thermostat has a 0.5°C deadband for cooling, the AC turns on when the room is 0.5°C above the setpoint, the system will normally cool by about 0.5°C before turning off.

To anyone using the blueprint. I completely changed the AC failure detection to better capture the heat pump AC failure modes.

I also did some improvements to the deadband detection code, as it was triggering because of the smartness of the Google nest thermostat.

I am still testing it out at my house that has a forced air system with a heat pump AC and Gas Furnace.

I will keep improving it as I test it in real life scenarios. :slight_smile:

Forgot about this, and now thought of new issue.

I’ve set it when released with some changes to include outside temp, but since then it never triggered, so I don’t know if automation is working or AC has no performanse issue.

GPT suggested to add efficiency score in %, but it’s became too complicated so I left it for later.

Check your automation Traces. When you have the automation open, in the left right corner you can find Traces. If you click it it will show what is happening with it every time it is triggered.

You can also test the AC logic by just turning off the AC breaker :slight_smile: however, this method is not wife-approved…lol

Let me know how the use of outside temperature goes. I have been tracking the outside temperature versus the cooling minimum run time and found that the impact is not as big as one might think. In my case, a 120-minute minimum runtime before check works fine for outside temperatures of 95F (35C).

If you find the minimum runtime that works for the warmest outside temperature in your area, you will not have any issues when it is cooler outside, and you don’t need to add more complexity by including another sensor in your logic.

Can I add multiple entities or create multiple automations that use the same helper entities?

1 Like