Expand description
German energy metering domain library.
A standalone, pure library for meter data calculations required by BDEW MaKo, MessZV, GasGVV, and EnWG. Zero I/O, no async, no float money.
This crate supersedes the meter-quality crate, which has been folded in.
§Modules
| Module | Contents |
|---|---|
interval | MeterInterval, Sparte, QualityFlag, demand_kw() |
conversion | Gas m³ → kWh_Hs (§24 GasGVV / DVGW G 685) |
aggregation | Billing period: arbeitsmenge_kwh, spitzenleistung_kw, HT/NT |
classification | SLP/RLM/iMSys detection, interval length |
imbalance | Mehr-/Mindermengensaldo (§27 MessZV, compute_imbalance) |
quality | Hampel-filter quality scoring (M7), score_intervals_raw for f64 |
§Quick start — billing period
use metering::{MeterInterval, QualityFlag, aggregate, AggregationConfig};
use rust_decimal::Decimal;
use time::macros::datetime;
let iv = MeterInterval {
from: datetime!(2026-06-01 0:00 UTC),
to: datetime!(2026-06-01 0:15 UTC),
value_kwh: Decimal::from_str_exact("2.345").unwrap(),
quality: QualityFlag::Measured,
obis_code: None,
};
let period = aggregate(&[iv], AggregationConfig::rlm_strom());
assert!(period.arbeitsmenge_kwh > Decimal::ZERO);§Quick start — Gas m³ → kWh_Hs
use metering::gas_m3_to_kwh_hs;
use rust_decimal::Decimal;
let kwh = gas_m3_to_kwh_hs(
Decimal::from(100u32),
Decimal::from_str_exact("10.55").unwrap(),
Decimal::from_str_exact("0.9764").unwrap(),
);
assert!(kwh > Decimal::from(1000u32));§Quick start — quality scoring (f64 API, e.g. from DB)
use metering::{score_intervals_raw, QualityGrade};
let values = vec![2.3_f64, 2.4, 2.3, 2.5, 2.2, 2.4, 2.3];
let grade = score_intervals_raw(&values, 3, 3.0);
assert_eq!(grade, QualityGrade::A);Re-exports§
pub use aggregation::AggregationConfig;pub use aggregation::BillingPeriod;pub use aggregation::HtNtSplit;pub use aggregation::aggregate;pub use classification::IntervalLengthClass;pub use classification::Messtyp;pub use classification::classify_messtyp;pub use classification::detect_interval_length;pub use conversion::GasConversionParams;pub use conversion::gas_m3_to_kwh_hs;pub use conversion::normalize_interval_to_kwh;pub use imbalance::ImbalanceSaldo;pub use imbalance::compute_imbalance;pub use interval::MeterInterval;pub use interval::QualityFlag;pub use interval::Sparte;pub use quality::QualityConfig;pub use quality::QualityGrade;pub use quality::QualityReport;pub use quality::hampel_filter;pub use quality::score_intervals;pub use quality::score_intervals_raw;
Modules§
- aggregation
- Billing period aggregation:
arbeitsmenge_kwh,spitzenleistung_kw, HT/NT split. - classification
- SLP/RLM/iMSys classification and interval length detection.
- conversion
- Gas unit conversion: m³ → kWh_Hs.
- imbalance
- Mehr-/Mindermengensaldo (imbalance) calculation.
- interval
- Core metering types:
MeterInterval,Sparte,QualityFlag. - quality
- Hampel-filter quality scoring (M7).