The load profile is the most valuable dataset in your smart meter. It records consumption at regular intervals — typically every 15 or 30 minutes — giving a time-series picture of how energy or water is used. Here is how to read, interpret, and use it.
What is a Load Profile?
In DLMS/COSEM, a load profile is stored in a Profile Generic object (COSEM Class 7). It is essentially a table with a timestamp column and one or more value columns (called channels). Each row is one interval period.
A typical electricity load profile channel set:
- Clock (timestamp)
- Active energy import (+A), kWh per interval
- Active energy export (-A), kWh per interval
- Status (bit-flags: power fail, clock adjusted, etc.)
Reading via DLMS GET
To retrieve a load profile from a DLMS meter, you issue a GET.request to object 1.0.99.1.0.255 (Load Profile 1) with a selective access descriptor specifying your date range:
GET /class=7/obis=1.0.99.1.0.255/attribute=2
selective_access: {
access_selector: 1 (range descriptor),
from: 2026-06-01 00:00:00,
to: 2026-06-07 23:45:00,
columns: null (all columns)
}
The response is a compact array. Each entry is one interval row. Timestamps are stored as COSEM DateTime (9 bytes: year, month, day, weekday, hour, min, sec, hundredths, deviation).
Decoding Status Bits
The status field is a bitmask. Common bits (vendor-specific — always check meter documentation):
- Bit 0: Power failure occurred during interval
- Bit 1: Power restored during interval
- Bit 2: Clock adjusted during interval (treat data with caution)
- Bit 7: Meter test mode
Any interval with status ≠ 0 should be flagged in your MDM’s VEE process.
Interval Energy vs Register Difference
A common mistake: calculating interval energy as the difference between consecutive cumulative register readings is NOT the same as reading the load profile. The register is updated continuously; the load profile records a snapshot at the interval boundary. For high-accuracy billing, always use the load profile — not differenced registers.
Practical Use Cases
Time-of-Use (TOU) Billing
Aggregate 15-minute intervals into TOU periods (peak 07:00–21:00, off-peak 21:00–07:00) to generate accurate TOU bills without relying on meter-side tariff registers.
Voltage Quality Monitoring
If your load profile includes a voltage channel (1.0.32.7.0.255 per interval), you can identify sustained under-voltage or over-voltage events at the customer meter — far more granular than substation SCADA.
Fraud Detection
Sudden drops in consumption combined with a tamper status bit, or suspiciously round interval values (0.000 kWh for every interval for 6 hours), are red flags for meter bypass.
Storage and Scale
A 15-minute load profile with 4 channels generates ~400 KB per meter per year (compressed). For 100,000 meters that is 40 GB/year — manageable in any time-series database (InfluxDB, TimescaleDB, or a purpose-built MDM). Budget at least 3× raw storage for VEE copies and audit trails.
Frequently Asked Questions
What is the COSEM object identifier for retrieving load profile data via DLMS, and what selective access parameters should I specify?
Load profiles are stored in COSEM Class 7 (Profile Generic) at object 1.0.99.1.0.255 (Load Profile 1). Use a GET request with access_selector: 1 (range descriptor) and specify your from/to timestamps and desired columns; the response returns a compact array where each entry represents one interval period.
How should I interpret the status bitmask in load profile data, and which intervals require VEE flagging?
The status field is a vendor-specific bitmask; common bits include Bit 0 (power failure), Bit 1 (power restored), Bit 2 (clock adjusted), and Bit 7 (test mode). Any interval with status ≠ 0 should be flagged in your Master Data Management VEE process, particularly those with clock adjustments which indicate data reliability issues.
Why is calculating interval energy from differenced register readings inaccurate compared to using load profile data for billing?
Registers update continuously while load profiles capture snapshots at exact interval boundaries, causing timing misalignment. For high-accuracy billing, always use the load profile values directly rather than calculating differences between consecutive cumulative register readings.
What storage capacity should I plan for a 100,000-meter network using 15-minute load profiles with 4 channels?
A single meter generates approximately 400 KB per year compressed; 100,000 meters produce 40 GB/year raw data. Budget at least 3× raw storage capacity to account for VEE copies and audit trails, making ~120 GB/year the practical requirement.
How can I detect potential meter bypass or tampering using load profile analysis?
Suspicious patterns include sudden consumption drops coinciding with tamper status bits, or anomalously round interval values (e.g., exactly 0.000 kWh repeatedly for extended periods). Cross-reference these patterns with status flags and investigate intervals where clock adjustment bits are set, as these indicate potential data integrity issues.
