Hi everyone,
After a lot of iteration and research I finally have a stable and reasonably accurate way to estimate power consumption on my Thermia Calibra Cool 7 (inverter ground source heat pump) without installing a CT clamp or power meter.
What it does
- Uses the built-in binary sensors (status_no_demand, status_heat, status_hotwater, etc.) + supply/return line temperatures (Delta-T)
- Applies lowpass filtering on Delta-T for stability
- Outputs a realistic kW value + clean operating_mode attribute
- Feeds directly into the Energy Dashboard via an integration sensor + utility meter
Current calibrated values (based on community reports + live measurements)
- No Demand: 0.13 kW ← This is the most important one and matches real measurements very well
- Standby: 0.06 kW
- Passive Cool: 0.20 kW
- Active heating/cooling uses Delta-T brackets (2.9 – 6.2 kW)
Results
- Energy Dashboard now shows realistic daily usage from the heat pump (~3 kWh/day while mostly idle)
- Power flow card correctly shows ~130 W when in No Demand
Research note
I cross-checked against Thermia documentation, Keymark/ErP data, and multiple user reports from Nibe/Thermia owners. The 0.13 kW for No Demand sits right in the middle of real-world measurements (most people see 100–140 W because the brine pump usually stays running).
```yaml
# ---------- THERmia SENSORS (Updated Safety Net) ----------
- name: "Thermia Heat Pump Delta T Raw"
unique_id: thermia_delta_t_raw
unit_of_measurement: "°C"
device_class: temperature
state_class: measurement
icon: mdi:thermometer-differential
state: >
{% set s = states('sensor.thermia_calibra_cool_7_supply_line_temperature') | float(0) %}
{% set r = states('sensor.thermia_calibra_cool_7_return_line_temperature') | float(0) %}
{{ (s - r) | abs | round(2) }}
- name: "Thermia Heat Pump Power Estimate"
unique_id: thermia_estimated_power
unit_of_measurement: "kW"
device_class: power
state_class: measurement
icon: mdi:heat-pump
state: >
{% set supply = states('sensor.thermia_calibra_cool_7_supply_line_temperature') | float(0) %}
{% set raw_delta = ((supply - states('sensor.thermia_calibra_cool_7_return_line_temperature') | float(0)) | abs) %}
{% set delta_t = states('sensor.thermia_heat_pump_delta_t_smoothed') | float(raw_delta) %}
{% set no_demand = is_state('binary_sensor.thermia_calibra_cool_7_status_no_demand_operational_status', 'on') %}
{% set standby = is_state('binary_sensor.thermia_calibra_cool_7_status_standby_operational_status', 'on') %}
{% set passive_on = is_state('binary_sensor.thermia_calibra_cool_7_status_passive_cool_operational_status', 'on') %}
{% set defrost_on = is_state('binary_sensor.thermia_calibra_cool_7_status_defrost_operational_status', 'on') %}
{% set legionella_on = is_state('binary_sensor.thermia_calibra_cool_7_status_legionella_operational_status', 'on') %}
{% set hotwater_on = is_state('binary_sensor.thermia_calibra_cool_7_status_hotwater_operational_status', 'on') %}
{% set heat_on = is_state('binary_sensor.thermia_calibra_cool_7_status_heat_operational_status', 'on') %}
{% set cool_on = is_state('binary_sensor.thermia_calibra_cool_7_status_cool_operational_status', 'on') %}
{% set aux_on = (heat_on or hotwater_on) and supply > 45 %}
{% if legionella_on %}
{% set power = 6.8 %}
{% set mode = 'legionella' %}
{% elif aux_on %}
{% set power = 6.8 %}
{% set mode = 'aux' %}
{% elif defrost_on %}
{% set power = 4.5 %}
{% set mode = 'defrost' %}
{% elif hotwater_on %}
{% set power = 5.5 %}
{% set mode = 'hotwater' %}
{% elif heat_on or cool_on %}
{% set mode = 'heat' if heat_on else 'cool' %}
{% if delta_t > 8 %} {% set power = 6.2 %}
{% elif delta_t > 6 %} {% set power = 5.3 %}
{% elif delta_t > 4 %} {% set power = 4.4 %}
{% elif delta_t > 2 %} {% set power = 3.6 %}
{% else %} {% set power = 2.9 %} {% endif %}
{# Delta-T safety net - lowered to match real consumption #}
{% elif delta_t > 7 %}
{% set power = 0.50 %}
{% set mode = 'high_delta_t' %}
{% elif delta_t > 4 %}
{% set power = 0.30 %}
{% set mode = 'medium_delta_t' %}
{# True idle states #}
{% elif passive_on %}
{% set power = 0.20 %}
{% set mode = 'passive' %}
{% elif standby %}
{% set power = 0.06 %}
{% set mode = 'standby' %}
{% elif no_demand %}
{% set power = 0.13 %}
{% set mode = 'no_demand' %}
{% else %}
{% set power = 0.10 %}
{% set mode = 'unknown' %}
{% endif %}
{{ power | round(2) }}
attributes:
delta_t_used: >
{% set supply = states('sensor.thermia_calibra_cool_7_supply_line_temperature') | float(0) %}
{% set raw_delta = ((supply - states('sensor.thermia_calibra_cool_7_return_line_temperature') | float(0)) | abs) %}
{% set delta_t = states('sensor.thermia_heat_pump_delta_t_smoothed') | float(raw_delta) %}
{{ delta_t | round(2) }}
delta_t_source: >
{{ 'smoothed' if states('sensor.thermia_heat_pump_delta_t_smoothed') not in ['unknown','unavailable',''] else 'raw' }}
operating_mode: >
{% set supply = states('sensor.thermia_calibra_cool_7_supply_line_temperature') | float(0) %}
{% set raw_delta = ((supply - states('sensor.thermia_calibra_cool_7_return_line_temperature') | float(0)) | abs) %}
{% set delta_t = states('sensor.thermia_heat_pump_delta_t_smoothed') | float(raw_delta) %}
{% set heat_on = is_state('binary_sensor.thermia_calibra_cool_7_status_heat_operational_status', 'on') %}
{% set cool_on = is_state('binary_sensor.thermia_calibra_cool_7_status_cool_operational_status', 'on') %}
{% set hotwater_on = is_state('binary_sensor.thermia_calibra_cool_7_status_hotwater_operational_status', 'on') %}
{% set passive_on = is_state('binary_sensor.thermia_calibra_cool_7_status_passive_cool_operational_status', 'on') %}
{% set defrost_on = is_state('binary_sensor.thermia_calibra_cool_7_status_defrost_operational_status', 'on') %}
{% set legionella_on = is_state('binary_sensor.thermia_calibra_cool_7_status_legionella_operational_status', 'on') %}
{% set aux_on = (heat_on or hotwater_on) and supply > 45 %}
{% set no_demand = is_state('binary_sensor.thermia_calibra_cool_7_status_no_demand_operational_status', 'on') %}
{% set standby = is_state('binary_sensor.thermia_calibra_cool_7_status_standby_operational_status', 'on') %}
{% if legionella_on %}legionella
{% elif aux_on %}aux
{% elif defrost_on %}defrost
{% elif hotwater_on %}hotwater
{% elif heat_on %}heat
{% elif cool_on %}cool
{% elif delta_t > 7 %}high_delta_t
{% elif delta_t > 4 %}medium_delta_t
{% elif passive_on %}passive
{% elif standby %}standby
{% elif no_demand %}no_demand
{% else %}unknown{% endif %}
power_kw_raw: "{{ states('sensor.thermia_estimated_power') | float(0) | round(2) }}"