I’ve been working on a custom integration called Home Performance that analyzes your home’s thermal performance using your existing sensors.
What it does
Calculates your room’s K coefficient (thermal loss)
Gives you an insulation rating (A to G)
Tracks daily energy consumption
Detects open windows in real-time
Includes a built-in Lovelace card
Why I built it
After buying a 1930s house, I wanted to know if my insulation work was actually paying off. I had all this data from my smart plugs and temperature sensors, but no way to measure real thermal performance.
Looks very interesting, but before I dive in and try to figure out if it works for me, I have a question:
In your documentation section ‘Required Parameters (per zone)’ on GitHub you list ‘Heater Power’ (in Watts).
I have a 2-zone AC/Furnace forced air setup that runs on electricity for the cooling and gas for heating.
Is that a setup that would work here, and - if so - how do I set it up for the heating part of it?
Your setup can work, but with some limitations since Home Performance was primarily designed for electric heating with smart plugs.
What will work
K coefficient calculation per zone (thermal loss measurement)
Insulation rating per zone (A to G scale)
Open window detection (based on rapid temperature drop)
Heating time tracking (via your thermostat’s climate entity)
Limitations
Energy measurement: Since you have a gas furnace, we can only estimate energy based on declared power × heating time. We can’t measure actual gas consumption unless you have a smart gas meter.
Accuracy: Less precise than electric heating with a power sensor, but still useful for thermal insights.
Setup for your 2-zone system
Since you have one furnace heating two zones, you have two options:
Option A: Single “House” zone (simpler)
Create 1 zone called “House”
Use your furnace’s full power rating
Get accurate total energy estimation
Option B: Separate zones (more detailed)
Create 2 zones (one per area)
Divide the furnace power between zones (e.g., 50% each)
Get per-room K coefficient and insulation rating
Energy per zone will be approximated
Heater Power setting
Convert your furnace BTU/h rating to Watts:
Formula: BTU/h × 0.293 = Watts
Example: 60,000 BTU/h ≈ 17,600W (or ~8,800W per zone if using Option B)
What you need
Temperature sensors in each zone (or one for Option A)
Outdoor temperature sensor
Climate entity from your thermostat (Nest, Ecobee, Honeywell, etc.)
No power sensor needed - we’ll estimate energy from heating time
Honest take
You’ll get valuable insulation insights (K coefficient, rating) which is the main goal of this integration. The energy estimation will be less accurate than with electric heating, but still useful for comparing zones and tracking trends.
If you try it, I’d love to hear your feedback! I’m open to improving gas/furnace support if there’s interest from the community.
Thanks for the detailed answer - highly appreciated!
I actually have 2 AC units and 2 furnaces/gas burners, i.e. one each for each zone, but - unfortunately - I don’t have a smart gas meter (I tried to make my gas meter smart in different ways, but so far, I failed miserably).
I have a smart plug for each of the blower fans so I can track runtime in detail, and I know that one furnace is a 60,000 BTU/h unit and the other one is an 80,000 BTU/h unit.
So, I think I can probably make some progress there, although the actual zones overlap a bit, i.e. I have two small registers of one zone inside the otherwise enclosed area of the other zone
@chairstacker Oh, that’s actually much better than I thought!
With separate furnaces for each zone AND smart plugs on the blowers, you’re in great shape. The blower only runs when the furnace is active, so that’s basically perfect for tracking heating time.
For your setup, I’d configure it like this:
Zone 1: Set heater power to ~17,600W (that’s your 60k BTU/h converted) and use your blower’s smart plug switch as the heating entity.
Zone 2: Same idea but ~23,400W for the 80k BTU/h furnace.
Quick note: use the furnace’s thermal output (the BTU rating converted to Watts), not what the blower fan actually draws electrically. The fan itself probably only uses 300-500W, but your furnace is producing 17,600W worth of heat - that’s what matters for the K coefficient calculation.
As for the overlapping registers - honestly, I wouldn’t worry too much about it. A bit of heat bleeding between zones won’t break the analysis. The K coefficient captures the overall thermal behavior of each area, and you’ll still get meaningful insights into your insulation quality.
I’m actually pretty curious to see how it works with your setup! Let me know if you run into any issues or have questions during configuration.
I started working on it and ran into a few issues:
I cannot set the Heater Power to more than 10,000W - seems to be a system limit
My Heating entity is actually a binary sensor - which is not on the list of entities (domains?) I can use for this entry; the furnace constantly pulls about 4-6W for all it’s internal electronics, so I have a threshold sensor the turns a binary_sensor on when the plug dras more than 15W and the blower fan is actually running.
Thanks for the detailed feedback! You’ve actually found two limitations I hadn’t considered:
1. The 10,000W limit - Yeah, that’s definitely too low for US furnaces. I designed this with European electric radiators in mind (typically 500-3000W), didn’t think about 60-80k BTU/h furnaces!
2. Binary sensor support - Currently only climate, switch, and input_boolean are accepted. Your threshold approach is actually really smart for detecting when the blower is actually running vs idle.
Workaround for now
You could bridge your binary_sensor to an input_boolean with a simple automation:
input_boolean:
furnace_zone1_heating:
name: "Furnace Zone 1 Heating"
This is a really neat idea, thanks you for contributing. Using it in The Netherlands will be a challenge for most people: the most common setup is a gas heated boiler with an OpenTherm variable burner, and either a cental thermostat and TRV’s (where tvr’s open but do not heat if the main thermostat is off) or a full blown zone system where any TRV can request heat from the boiler.
I’m thinking about wether I can do some estimate on gas consumption, boiler activity level, radiator size and TRV activity. Is there some way I can supply a power entity to climate entities to use a real time power estimate information for the calculations?
@Edwin_D
You’re touching on something that’s genuinely more complex than electric heating!
With hot water radiators, the actual power output depends on water flow rate, inlet/outlet temperature difference, and TRV position - it’s not a fixed value like a 1500W electric heater. So any power estimation will be approximate.
Realistic approach for power
Honestly, I’d suggest keeping it simple:
Look up your radiator’s nominal power (usually on a label, or calculate from dimensions)
Use maybe 60-70% of that as your average power, since radiators rarely run at full capacity
Accept that energy estimates will be approximate
Heating detection
You’ll need to combine both signals to detect real heating:
This way you only count heating time when the boiler is running AND your zone’s TRV is actually open.
Then you’d use this binary_sensor as your heating entity… except Home Performance currently only accepts climate, switch, or input_boolean. So you’d need one more step - bridge it to an input_boolean:
automation:
- alias: "Sync heating detection"
trigger:
- platform: state
entity_id: binary_sensor.living_room_actually_heating
action:
- service: "input_boolean.turn_{{ trigger.to_state.state }}"
target:
entity_id: input_boolean.living_room_heating### What still works well
Even with approximate power values:
K coefficient will reflect your room’s thermal behavior
Insulation comparison between rooms remains valid
Trends over time will be meaningful
Open window detection works regardless
Honest take
Home Performance was designed with electric heating in mind. Gas/hot water setups can work, but require more setup and the energy side will be less precise. The insulation analysis should still be valuable though!
If you try it, I’d love your feedback - it would help me understand if better OpenTherm support is worth adding.
I think I can use the climate entities, for my case they actually show correct heating status when the boiler is active. My problem is only that the amount of energy going to it is complex. So from what I can tell, I only need to tell the integration how much energy is used for heating.
I can probably do that by estimating the amount of energy used by the boiler and apply a divisor based on TRVs that are active and their respective radiator capacity. The question is, can I tell the integration what I calculated in terms of energy delivered to a TRV.
Yes, absolutely! Home Performance accepts an external energy sensor in the configuration.
So if you create a template sensor that calculates energy delivered to each zone (using your boiler energy × proportional radiator capacity logic), you can use it directly as the “External energy counter” when configuring each zone.
Just make sure your template sensor has:
device_class: energy
state_class: total_increasing
Output in kWh (cumulative)
Tip: You might want to wrap it in a Utility Meter for automatic daily reset:
I’m using an heat pump. My climate entity is always ON. Does it matter?
In “Heater power” what should i set ?
I’m having a sensor for my heat pump consumtion, i set up as the “Power sensor”, is it ok ?
My heat pump is always consuming ~50w but it’s not for heating (just the operation of the pumps)
Climate always ON → No problem! When you configure a Power sensor, the integration ignores the climate state and uses only power consumption to detect heating.
Heater Power → Enter your heat pump’s nominal heating capacity (not electrical). Example: if rated “5kW heating”, enter 5000.
Power sensor → Yes, that’s exactly what you need!
The 50W idle issue
The current threshold is power > 50W = heating active. Since your pump idles at ~50W, this could cause false positives.
What’s your power consumption when actually heating?
If heating uses 200W+ → Should work fine (clear difference from 50W idle)
If close to 50W → You may need a template sensor to filter out idle consumption
Let me know your typical heating power, and I can help you configure it!
I created a power sensor yesterday that converts the BTU/h to W and adds the power value of the blower fan to it - I could use this to avoid the limitations (with the max 10,000W for the heater power and the not-yet supported binary_sensor) I’ve encountered, correct?
Also:
What’s your suggestion re. zones with different heating settings that are heated within the same forced air zone?
Background:
I have multiple rooms where I ‘regulate the temperature’ by adjusting how far open the registers are, e.g. offices have the registers opened more than the bedrooms, bathrooms are somewhere in between.
I have temperature sensors in multiple rooms (but only one option in the zone setup per zone) and could add a rough estimate of how much air goes to each sub-zone (offices 50%, bedrooms 30%, bathrooms 20%).
I could then set up these areas as their own zones with power sensors reflecting 20%, 30%, 50% and their own temperature sensors.
Yes, this is a smart workaround! If your power sensor outputs the actual heating power in Watts:
The 10,000W limit for heater_power becomes less critical - you can enter an approximate value (e.g., 10000) since the actual energy calculation will use your power sensor
The binary_sensor limitation is bypassed - the integration detects heating when power > 50W
One note: Make sure your power sensor returns 0W (or < 50W) when heating is OFF, otherwise it will count as continuous heating.
Air distribution % are estimates (real airflow varies)
K values will be relative, not absolute
Comparing to other Home Performance users won’t be meaningful
3. My Recommendation
Go for it! It’s not “too complicated” - it’s actually a clever adaptation for forced-air systems.
The K coefficients you get will be relative comparisons between your rooms, which is still very valuable:
“The office loses 30% more heat than the bedroom” = actionable insight
“The bathroom K improved after adding weatherstripping” = measurable result
Just remember that your K values won’t be directly comparable to someone with electric radiators, but internal comparisons within your home will be valid and useful.
Let me know how it goes!
I’ll be working on both the 10,000W limit and binary_sensor support this weekend - stay tuned!