Calculating Heat Pump Efficiency from M-Bus Meter Data

James Nishida6 min read
Data AcquisitionOther ManufacturerTutorial / How-to
Licensed PE Working through this on a live machine? A Maine-licensed engineer can take it from here — included with IMD hardware, by the hour for everything else. Book an engineer

The dashboard shows gas, heat, and ambient-temperature points, but a single M-Bus snapshot cannot produce defensible hourly or daily efficiency. Build the calculation from timestamped counter changes, confirm the physical boundary, and preserve each point's unit and scale.

Equipment and calculation boundary

Before anything else, confirm whether the monitored asset is a boiler, a heat pump, a gas-fired heat pump, or a plant containing multiple heat sources. The label determines what belongs in the denominator:

Equipment interpretation Useful output Required input Reported metric
Gas boiler Delivered thermal energy Gas energy Thermal efficiency
Electrically driven heat pump Delivered thermal energy Electrical energy Coefficient of performance
Gas-fired heat pump or mixed plant Delivered thermal energy All energy inputs inside the selected boundary Boundary-specific performance ratio

Mark every meter and sensor on a simple process schematic. Show the gas meter, heat meter, flow and return connections, ambient sensor, auxiliary loads, and any bypass or storage vessel. A heat meter outside the selected boundary can include unrelated loads; a gas meter upstream of other appliances can include unrelated fuel.

  1. Read the equipment nameplate and operating description.
  2. Trace each physical meter to the equipment or branch it measures.
  3. Choose one boundary and give every displayed result a boundary-specific name.
  4. Confirm that input and output meters cover the same equipment and operating period.

Do not move on until the schematic accounts for every input included in the ratio and identifies any unmeasured input.

M-Bus point identification and normalization

An M-Bus value has no calculation meaning without its engineering unit, scale, timestamp, and physical description. Preserve those attributes when mapping the points into the BMS. Distinguish accumulated energy from instantaneous power: W is power, while Wh and its scaled forms are energy. A rate such as volume per hour is different from an accumulated volume counter.

Point role Acceptable source form Required treatment
Gas input Cumulative gas energy Subtract consecutive readings
Gas input Cumulative gas volume Subtract readings, then apply the approved gas-energy conversion
Heat output Cumulative thermal energy Subtract consecutive readings
Heat output Instantaneous thermal power Integrate over elapsed time
Ambient condition Temperature samples Calculate a time-weighted interval mean

For volume-based gas data, obtain the applicable calorific value and any required volume-correction basis from the billing meter, utility record, or approved project data. Do not treat cubic metres as energy or insert a generic conversion factor. Record whether the meter already reports corrected volume.

Capture raw counter values rather than rounded display values. Log a common timestamp, quality state, unit, and scale for every sample. Detect communication gaps, counter resets, rollovers, duplicate timestamps, and backward changes before calculating deltas.

Prove this stage by matching each BMS value and unit to the local meter display or its documented M-Bus data record at the same timestamp.

Hourly energy and efficiency calculation

Create hourly results from the change between readings that bracket the reporting interval. For cumulative energy counters:

GasEnergy_hour = GasEnergy_end - GasEnergy_start
HeatEnergy_hour = HeatEnergy_end - HeatEnergy_start
Efficiency_hour = HeatEnergy_hour / GasEnergy_hour

If gas is reported as accumulated volume:

GasVolume_hour = GasVolume_end - GasVolume_start
GasEnergy_hour = GasVolume_hour × ApprovedGasEnergyPerVolume
Efficiency_hour = HeatEnergy_hour / GasEnergy_hour

The ratio is dimensionless only after input and output use compatible energy units. If the display requires percent, apply Efficiency_percent = Efficiency_ratio × 100. For a confirmed electrically driven heat pump, use electrical input energy and label the result as performance rather than gas efficiency.

“Heat per hour” can mean interval energy or average power. Keep both fields distinct:

AverageInputPower = GasEnergy_interval / ElapsedTime
AverageHeatPower = HeatEnergy_interval / ElapsedTime

Use elapsed time in units compatible with the energy and desired power unit. Do not silently call an irregular 47-minute delta an hourly total. Either interpolate cumulative counters to the hour boundary or retain the actual interval and timestamp it accurately.

Reject or flag an interval when its input delta is zero, negative, missing, or affected by a reset. A zero denominator has no valid efficiency result. Prove the hourly calculation by manually recomputing one interval from stored raw start and end counters.

Daily totals and ambient means

Calculate daily performance from daily energy totals, not from the arithmetic mean of hourly ratios. Hours with different loads must contribute in proportion to their input energy:

GasEnergy_day = Sum(valid GasEnergy_hour)
HeatEnergy_day = Sum(valid HeatEnergy_hour)
Efficiency_day = HeatEnergy_day / GasEnergy_day

Define the reporting-day boundary, timezone, and treatment of clock changes in the historian configuration. Use the same boundary for gas, heat, and temperature data. Mark the day incomplete when material intervals are missing; do not present a partial total as a full-day result.

For regularly spaced ambient samples, the arithmetic mean is suitable. For irregular sampling, use a time-weighted mean:

MeanAmbient = Sum(Temperature_i × Duration_i) / Sum(Duration_i)

Apply a documented rule for bad-quality values and long gaps. Do not fill a long gap by holding the last temperature indefinitely; exclude or estimate it only under the project's approved data-quality policy.

Prove the daily rollup by confirming that its energy totals equal the sum of all accepted interval deltas and that accepted temperature durations cover the declared reporting period.

Efficiency and ambient-temperature correlation

Correlation requires a time series, not one snapshot. Pair efficiency and ambient temperature over identical intervals. Use hourly pairs for hourly analysis or daily pairs for daily analysis; mixing resolutions obscures the relationship.

  1. Exclude intervals with missing, reset, zero-input, or bad-quality meter data.
  2. Pair each valid efficiency result with the ambient mean from the same start and end timestamps.
  3. Plot efficiency against ambient temperature and retain timestamps so outliers can be traced.
  4. Calculate a correlation coefficient only after inspecting the scatter plot and sample coverage.
  5. Separate operating modes or load states when the controller changes the plant's behavior.

Ambient temperature is not the only driver. Load, flow temperature, return temperature, cycling, defrost operation, storage charging, auxiliary energy, and control mode can change performance. A correlation describes association within the logged operating range; it does not prove that ambient temperature caused every efficiency change.

Prove the dataset by tracing several plotted points back to their raw gas, heat, temperature, timestamp, and quality records.

End-to-end commissioning verification

  1. Freeze one complete test interval and record the local meter readings at its start and end.
  2. Compare those readings with the raw M-Bus values, including unit and scale.
  3. Calculate gas input, heat output, elapsed time, average power, and the performance ratio by hand.
  4. Compare the hand result with the BMS hourly result before accepting daily aggregation.
  5. At the day boundary, confirm that daily input and output equal the accepted hourly sums.
  6. Force or simulate a missing value, zero input delta, and counter reset in a test environment; verify that the calculation flags each case rather than displaying a misleading ratio.
  7. Check that every efficiency-versus-temperature pair uses matching timestamps and quality criteria.

Do not move on to production trending until the local meters, raw M-Bus records, interval calculations, and daily totals reconcile within the resolution of the source meters.

FAQ

Can I calculate hourly heat-pump efficiency from one M-Bus snapshot?

No. Store at least two timestamped readings for each cumulative input and output counter, then divide the output-energy delta by the compatible input-energy delta over the same interval.

Does a gas-volume reading equal gas input energy?

No. Calculate the volume delta and apply the approved energy-per-volume value and correction basis from the billing or project data. Keep the original volume and converted energy as separate points.

Can I average hourly efficiencies to obtain daily efficiency?

Use Sum(HeatEnergy_hour) / Sum(GasEnergy_hour). A simple average gives low-load and high-load hours equal weight and can misstate daily performance.

Can I verify the calculation without changing the plant?

Yes. Capture local and M-Bus start/end readings for one complete interval, recompute every delta and ratio manually, and reconcile the result with the BMS. Release the display only after the daily totals equal the accepted interval sums and all timestamps, units, scales, and quality flags match.

Back to blog