Of all the ways building energy reporting goes wrong, unit errors are the most common and the least visible. A sensor that fails announces itself eventually. A meter read in the wrong units produces a complete, continuous, entirely credible dataset that is wrong by a constant factor, and it will survive review after review because nothing about it looks odd. The only defence is to validate the semantics before building anything on top of them.
The message up front: four questions must be answered per meter point before it appears in any report. Is this a rate or a quantity. Is the quantity cumulative or per interval. What is the unit and prefix, as the device reports it rather than as the name implies. And is a multiplier applied, where, and by whom. Record the answers against the point, derive consumption only from points whose answers are known, and reconcile the result against something independent. This is about unit semantics; the separate problem of counters resetting or rolling over is covered in energy meter reset and rollover.
1. Rate or quantity: the error that costs most
The single most consequential distinction, and the one most often collapsed.
A rate is an instantaneous or short-average measure of how fast something is flowing: power, flow rate, thermal load. It is meaningful at a moment and it cannot be added up across time without being multiplied by that time.
A quantity is an accumulated amount: energy, volume, mass. It is meaningless at a moment and it is the thing you actually want for a consumption report.
Summing a rate as though it were a quantity is the classic failure. Average the rate and multiply by the period and you get a quantity; add the samples and you get a number whose magnitude depends entirely on how often you happened to sample, which means the same building reports different consumption purely because somebody changed a polling interval. That connection to the collection regime is in BACnet polling schedules.
The reason this persists is that both readings often live on the same meter with similar names, and a points list rarely says which is which.
Classify every meter point as rate or quantity, explicitly, before it is used
Add a single field to the point register recording which it is, and refuse to include any meter point in a consumption report until that field is populated. It is a few minutes per meter and it eliminates the most expensive error in this area outright. It also forces the conversation with whoever configured the meter, which is usually where the ambiguity actually lives. A report built only from points whose semantics are declared is a report you can defend; one built from whatever looked like an energy value is not.
2. Cumulative or interval
Within quantities, a second split. Some meters report a running total since some origin; others report the amount consumed in the last interval. Both are quantities and they are processed in opposite ways.
- A cumulative register needs differencing: consumption is the later reading minus the earlier one. Summing the readings themselves produces an enormous and meaningless number.
- An interval value needs summing: consumption over a period is the sum of the intervals in it. Differencing it produces noise around zero.
- Some meters report both, which is the best case because each validates the other: the sum of the intervals across a period should reconcile to the difference in the register.
Getting this wrong is self-announcing in the cumulative case, because the totals are absurd. In the interval case it is quieter: differencing interval data produces small, plausible-looking values and a report that is simply wrong.
3. Read the unit, do not infer it
| What to establish | Why assumption fails |
|---|---|
| The unit the object reports | BACnet objects carry a units property. Reading it costs nothing and removes the guess. The mechanism is in BACnet objects and addressing |
| The prefix | A factor of a thousand between adjacent prefixes, and a point name that mentions one while the object reports another is common. This is where the plausible-but-wrong report comes from |
| Energy versus volume for fuels | Gas and water meters often measure volume, and converting volume to energy needs a factor that is not a property of the meter and may vary over time |
| Thermal versus electrical | Both are energy and they are not interchangeable in a report that sums them. Thermal metering derives its value from flow and temperature difference, covered in district cooling and BTU metering |
| Whether a conversion is already applied | Applying a conversion twice is as easy as not applying it at all, and produces an equally plausible number |
The rule that covers all of these: the unit is a property of the data, not of the name. Capture it as received, store it alongside every reading, and never let a report infer it from a label.
4. Multipliers, and the question of where they are applied
A meter's raw pulse or register value frequently needs scaling by a factor, and that factor can be applied in several places: inside the meter, in the controller, in the gateway, in the historian, or in the report.
Two failure modes follow, and they are mirror images:
- Applied twice, because two layers each assumed responsibility. Produces a number out by the factor, upward.
- Applied nowhere, because each layer assumed another had done it. Produces a number out by the factor, downward.
Neither is detectable from the data alone, because both are internally consistent. The only reliable approach is to decide and record exactly one place where scaling happens, and to verify that every other layer passes the value through untouched. Document the factor against the point with effective dates, because changing it creates a step in the history, which is the discontinuity problem described in sensor replacement and BMS history.
5. Validating before you report
Checks that catch unit errors specifically, rather than general data quality:
- Magnitude against installed capacity. Consumption in a period cannot exceed what the connected load could physically draw in that period. A result ordered a thousand times above or below that ceiling is a prefix error, and this single check catches most of them.
- Submeter sum against the parent. Submeters should total to something sensible relative to the incoming supply. A submeter out by a factor shows up immediately as a total exceeding the parent, which is impossible.
- Interval sum against register difference, where both are available. The strongest check there is, and it needs no thresholds.
- Dimensional sanity on derived figures. Intensity per unit area, or consumption per degree day, falling far outside any plausible band usually indicates units rather than an unusual building.
- Independent comparison. A supplier invoice, a manual meter read, or a handheld instrument. Any external reference is worth more than any internal consistency check, because internal checks cannot detect an error applied uniformly.
That last point is the important one. Unit errors are uniform by nature, so no amount of internal validation finds them. Something outside the system has to disagree.
6. What the register needs to hold
- Measure type: rate or quantity.
- Accumulation: cumulative or interval, and the interval length where applicable.
- Unit and prefix as reported, captured rather than entered by hand.
- Multiplier, with the layer that applies it, and effective dates.
- Any conversion factor for volume-to-energy, with its source and effective dates.
- Plausible maximum rate, from the electrical or mechanical design, for the magnitude check.
- Parent meter, so the submeter reconciliation can run automatically.
These belong with the other operational fields in the BMS point dictionary rather than in a separate spreadsheet, because they have the same lifecycle and the same need for change control.
7. Auditing meters you already report on
- Start with the magnitude check across every meter. One query, no configuration, and it surfaces the prefix errors immediately.
- Then the submeter reconciliation. Any branch totalling more than its parent has a unit problem somewhere in it.
- Then read the units properties and compare them against what the reports assume. Disagreements are findings whether or not the numbers look wrong.
- Then reconcile against invoices for the main supplies, period by period rather than annually, so a discrepancy localises to a month.
- Correct forward and annotate backward. Fixing the configuration from today leaves the historical series wrong; mark the affected period rather than silently restating it, and record what the error was.
Limits and where this stops
No conversion factors, plausibility bands or tolerances are given here, and no figures for any fuel, because they depend on your installation and in several cases on values that change over time and are published by others. Take them from the meter documentation, the electrical or mechanical design, and the relevant supplier or scheme. Where metering supports billing, tenant recharge or a regulated reporting obligation, the treatment of units, conversions and corrections is likely to be prescribed by that scheme and those rules govern rather than anything here. My own domain is the data model and the validation workflow; metering engineering and regulated measurement are not, and the accuracy of an installation is a question for a metering specialist.
The idea to walk away with
A number without declared semantics is not data, it is a digit sequence that happens to be numeric. For meters the semantics are four things: rate or quantity, cumulative or interval, unit and prefix, and where the multiplier is applied. Declare all four per point, build reports only from points where they are declared, and the entire class of plausible-but-wrong energy figures disappears.
Then validate against something outside the system, because a uniform error is invisible to every check that lives inside it.
Final thoughts
The fastest diagnostic available is the magnitude check: for each meter, compare reported consumption in a period against what the connected load could physically have drawn. It needs one figure per meter from the design and it finds prefix errors in minutes.
In estates that have never done it, the usual result is that most meters are fine and one or two are out by a factor of a thousand, have been for years, and are included in a report somebody has been presenting. Finding that is uncomfortable and considerably better than continuing not to know.
Disclosure
Alongside advisory work I also build a CMMS and CAFM platform, so I have a commercial interest in this category. Nothing above is a recommendation for it, and no vendor named here has paid for inclusion or had any editorial input. Weigh the analysis accordingly.
Energy figures that look plausible and are not?
Independent review of meter point semantics, where multipliers are applied, the validation checks that catch unit errors, and reconciliation against independent references. 22+ years across CMMS, CAFM, EAM and ERP implementations.
Book a conversationRelated reading: Energy meter reset and rollover, Sensor units and scaling, District cooling and BTU metering, BMS point dictionary, Energy management systems for buildings, BACnet data quality flags.
Muhammad Abbas
CMMS / CAFM Manager & Independent Advisor · 22+ years across enterprise CMMS, EAM, CAFM and ERP implementations in utilities, oil and gas, manufacturing, government and facility operations.
Work with me