
Case study
eSIM-Connected Smart Metering and Consumption Prediction Platform for a Energy Services Provider
Plexteq partnered with a Norwegian energy services company to build an IoT connectivity and analytics platform that collects power consumption telemetry from 12,000 remotely provisioned eSIM-connected meters at remote sites across multiple regions of Norway — ingesting readings over MQTT into InfluxDB, running weather-driven consumption predictions, and delivering daily forecasts and hourly price-aware recommendations that help households stay within their grid capacity tariff bracket.
Project Highlights
Industry
Energy & Utilities, Telecom
Expertise
Industrial IoT Connectivity, eSIM/IoT SIM Provisioning, Connectivity Management, Telemetry Ingestion, Fleet Management, ML-Based Consumption Forecasting
Market
Norway / Nordics
Technologies
Java, Python, EMQX, MQTT 5.0, InfluxDB, Flux, PostgreSQL, LightGBM, scikit-learn, Kubernetes, GSMA SGP.32 (eUICC / eIM / SM-DP+), Terraform
Cooperation
2022 – 2025
Business Challenge
Norway is one of the most electrified societies in the world. The overwhelming majority of households heat with electricity, consumption is strongly coupled to outdoor temperature, and since 2022 grid companies have billed households under a capacity-based tariff model: the monthly grid fee is determined by the average of the household's three highest hourly consumption peaks, which places the customer into a capacity bracket (kapasitetstrinn). Crossing from one bracket into the next - for example, from the 5 kW to the 10 kW tier can nearly double the fixed component of a household's grid bill, even if total monthly consumption barely changes. Combined with hourly Nord Pool spot pricing, this means the timing of consumption now matters to Norwegian households as much as the volume.
​
Our client, a Norwegian energy services provider, set out to build a platform on top of this reality: collect high-resolution consumption data from power meters at remote sites across its service regions - from urban apartment blocks to cabins above the Arctic Circle, and convert it into actionable, household-level guidance on when to increase or decrease consumption to stay within a tariff bracket and benefit from cheap spot hours.
​
The connectivity problem alone was formidable. Meters are installed across geographically dispersed and often hard-to-reach sites, frequently in basements, utility cabinets, and rural locations where no single mobile operator provides uniformly reliable coverage. Meters shipped from the manufacturer could not know in advance which operator would serve them best at their final installation site, and dispatching technicians to swap SIM cards across a fleet of this size and geography was economically impossible. The client needed connectivity that could be assigned, monitored, switched, and decommissioned entirely over the air, for the full 10–15 year service life of a meter - a lifespan that will almost certainly outlive at least one operator agreement and one network-technology sunset.
​
On the data side, the client's pilot system - a simple collector writing raw readings into a relational database had already collapsed under load at a few hundred meters. It could not handle the burst patterns of thousands of meters reporting on synchronized schedules, and offered no analytical layer at all: no aggregation, no forecasting, no way to relate consumption to the weather conditions that overwhelmingly drive it.
​
Having reviewed Plexteq's engineering track record in energy-sector data platforms and real-time telemetry systems, the client engaged Plexteq to design and deliver the platform end-to-end: connectivity management, device fleet operations, telemetry ingestion, the prediction engine, and the household recommendation service.
Key Challenges
#1. Connectivity for a Dispersed, Unattended Fleet
Meters are sealed, headless devices installed in coverage-hostile locations across all of Norway. Operator selection had to be made and remade remotely, per device, over the entire meter lifecycle, without a single truck roll. Traditional single-operator UICC SIMs, fixed at manufacture, were a non-starter.
#2. Personal Data at Every Layer
Hourly consumption readings reveal household occupancy and behavior patterns, making them personal data under GDPR and Norwegian energy regulation. Device identity, transport security, access control, and data residency had to be engineered in from the broker level down to the database row - not bolted on afterwards.
#3. Bursty, High-Cardinality Telemetry
12,000 meters reporting consumption readings at 5-minute resolution plus voltage, signal-quality, and event data produce highly synchronized ingestion bursts and a time-series cardinality that neither relational storage nor naive ingestion pipelines could absorb. Late, duplicated, and out-of-order readings from devices in marginal coverage had to be handled without corrupting billing-grade aggregates.
#4. Predictions Households Can Act On
A forecast is only useful if it arrives before the peak it warns about. The system had to predict each household's next-day hourly consumption from weather forecasts, detect emerging risk of breaching the capacity bracket in near real time, and translate this into simple recommendations - hours to shift load into or out of - aligned with day-ahead spot prices.
Solution Delivered
↳ eSIM Fleet with Remote SIM Provisioning (GSMA SGP.32)
The connectivity foundation of the platform is a fleet of eUICC-capable eSIMs (MFF2, soldered to the meter communication board for durability in unheated cabinets and coastal humidity), managed under the GSMA SGP.32 eSIM IoT standard. Because the eUICC can hold multiple operator profiles and switch between them over the air, operator selection became a software decision instead of a manufacturing one: meters are produced as a single SKU with a bootstrap profile, and receive their production operator profile after installation, chosen per site based on measured signal quality.​
​
Plexteq integrated the client's platform with the connectivity provider's eIM (eSIM IoT Remote Manager) and SM-DP+ infrastructure through their management APIs, and built the orchestration layer around them: automated profile download and activation on first power-up, scheduled profile switching for meters whose serving network degrades, and bulk re-provisioning campaigns - used in production when one regional operator announced changed commercial terms, and 2,400 affected meters were migrated to an alternative profile overnight with zero site visits. The SGP.32 flow was specifically suited to the fleet's constraints: meters are low-power devices with no user interface and intermittent connectivity, so provisioning is fully autonomous and tolerant of devices that only attach to the network briefly.
↳ Connectivity Management Layer
On top of raw provisioning, Plexteq delivered a connectivity management module that treats the SIM estate as a first-class managed asset. It continuously reconciles the SIM lifecycle state (bootstrap, active, suspended, retired) against meter lifecycle state, ingests usage and session records from the connectivity provider, and monitors per-device signal metrics (RSRP/RSRQ, RAT, cell ID) reported in meter telemetry.
Policy rules act on this data automatically: a meter that misses reporting windows and shows degraded signal is queued for a profile switch; a decommissioned meter's SIM is suspended within minutes to stop data charges; anomalous data usage (a common symptom of firmware faults or SIM misuse) raises an alert before it becomes a cost or security incident. Connectivity cost, previously invisible until the monthly operator invoice, became an observable, per-device metric.
↳ Cloud Platform Architecture and Data Protection
The platform is built as a set of Spring Boot services on Kubernetes (keeping all consumption data within EU/EEA data residency requirements). Services are decomposed along the pipeline's natural seams - device gateway, ingestion, aggregation, prediction, and serving, so each scales independently: the ingestion tier scales with reporting bursts while the prediction tier scales with the nightly forecast run.
Because hourly consumption data is personal data under GDPR, protection is engineered end-to-end: device identity established at X.509 authentication is propagated through the pipeline as a signed claim, access to household-level data is role-scoped and audited, and household identifiers are pseudonymized in the analytical stores, with the mapping held in a separately secured PostgreSQL schema.
The entire environment - MQTT ACLs, Kafka topics, InfluxDB buckets, database schemas, dashboards, and API credentials - is provisioned through Terraform, so standing up a complete new environment (staging, load-test, or regional) takes under an hour instead of the weeks of manual setup the pilot system required.
↳ MQTT-Based Device Communication
Device communication runs over MQTT 5.0 through an EMQX cluster, chosen for its throughput under massive concurrent connection counts and its fine-grained ACL model. Each meter authenticates with an individual X.509 certificate over TLS and is authorized only for its own topic subtree (m/{meterId}/…), making cross-device access impossible at the broker.
Meters publish interval consumption readings, instantaneous power, voltage/phase data, signal quality, and device events with QoS 1; the platform uses MQTT 5.0 features deliberately - session expiry tuned to meter reporting cadence, topic aliases to cut payload overhead on constrained links, and message expiry to prevent stale command delivery.
The same channel carries downlink traffic: configuration changes, reporting-schedule adjustments, and firmware update campaigns, coordinated by the fleet management module with staged rollouts and automatic rollback on failure-rate thresholds. Reporting schedules are deliberately jittered per device to flatten the ingestion bursts that had crippled the pilot system.
↳ Telemetry Ingestion into InfluxDB
A bridge service consumes from EMQX into Apache Kafka, which acts as the durable buffer decoupling device-facing ingestion from processing.
Stream processors validate payloads, deduplicate on meter ID and interval timestamp, quarantine physically implausible readings (register rollbacks, impossible power values), and reorder late arrivals from meters in marginal coverage before writing to InfluxDB.
Raw 5-minute readings land in a short-retention bucket; InfluxDB tasks written in Flux then continuously downsample and enrich the data - hourly consumption per meter, daily profiles, rolling peak statistics, and temperature-joined series using weather observations ingested from MET Norway (the Norwegian Meteorological Institute) matched to each meter's location. The pipeline sustains the full fleet's synchronized reporting at a p99 ingestion latency under four seconds from broker to queryable storage.
↳ Golden Aggregates in PostgreSQL
Once hourly aggregates are validated - complete interval coverage, gap-filled where regulation permits, cross-checked against meter register totals, they are promoted as golden aggregates into PostgreSQL, the platform's serving and system-of-record layer.
PostgreSQL holds the certified hourly consumption per metering point, the running monthly top-three peak statistics that determine each household's capacity bracket, the capacity tariff structures of the grid companies serving each metering point, Nord Pool day-ahead hourly prices, and the outputs of the prediction engine.
This split gives each database what it is best at: InfluxDB absorbs high-cardinality raw time series and performs continuous aggregation; PostgreSQL provides transactional integrity, relational tariff logic, and fast API serving for the household-facing applications.
↳ Weather-Driven Consumption Prediction Engine
The prediction mechanism is layered, and deliberately specific to how Norwegian households consume electricity - where space heating dominates and consumption is strongly, non-linearly coupled to outdoor temperature.
​
-
Physical baseline: piecewise temperature regression. Per metering point, a piecewise-linear regression between hourly consumption and outdoor temperature estimates the household's heating balance point (typically 12–15 °C) and heating slope (kWh per degree-hour). It serves as an interpretable fallback for meters with short history and supplies two of the strongest features to the ML layer.
-
Day-ahead hourly forecasting: gradient-boosted trees. A LightGBM model predicts hourly consumption 48 hours ahead per metering point, using lagged consumption (1 h, 24 h, 168 h), rolling statistics, calendar features (hour, weekday, Norwegian holidays), the baseline heating slope, and MET Norway forecasts - temperature, wind speed, humidity, solar irradiance. Models are trained per consumption-profile cluster (meters clustered on load shape and temperature sensitivity) and conditioned on household-specific features, generalizing across the fleet while staying sensitive to individual behavior.
-
Quantile forecasts for peak risk. Quantile models (P10/P50/P90) quantify hourly uncertainty. Bracket risk is computed against the tariff mechanics in PostgreSQL: given the household's current top-three daily peaks and the P90 forecast, the engine estimates the probability that tomorrow's peak lifts the three-peak average across the next bracket threshold - flagging the household the previous afternoon, while there is still time to act.
-
Recommendation layer: tariff bracket plus spot price. Bracket-risk output is combined with Nord Pool day-ahead prices for the household's bidding zone (NO1–NO5); a constrained scheduling heuristic shifts flexible load (chiefly EV charging) out of predicted-peak, high-price hours into cheap hours where the P90 forecast leaves headroom below the bracket threshold. On low-price nights with ample headroom, the system instead recommends increasing consumption - pre-heating, water heating, charging.
-
Continuous evaluation and retraining. Forecasts are scored daily against golden aggregates - MAPE, pinball loss, and bracket-warning precision/recall tracked in Grafana — with weekly retraining plus a seasonal retrain at the autumn heating-season transition.
↳ Fleet Management Operations Console
Plexteq delivered an operations console unifying the device and connectivity views of the fleet: real-time reachability and last-report status per meter, signal-quality maps by region and operator, firmware version distribution and staged OTA campaign management, SIM lifecycle and data-usage views, and automated health scoring that ranks meters by probability of silent failure - so field maintenance visits, when unavoidable, are batched by geography and driven by evidence rather than complaints.
Key Features
Zero-Touch eSIM Provisioning
Single-SKU meters receive and switch operator profiles entirely over the air under GSMA SGP.32 - operator selection per site, bulk migration campaigns, and lifecycle-long flexibility without a single technician dispatch.
GDPR-Grade Data Protection
Per-device X.509 identity propagated end-to-end as a signed claim, pseudonymized household identifiers in analytical stores, role-scoped audited access, and EU/EEA data residency by design.
Weather-Conditioned Quantile Forecasting
Piecewise temperature-regression baselines plus clustered LightGBM models on MET Norway forecasts produce hourly P10/P50/P90 consumption predictions per metering point, 48 hours ahead.
Connectivity as a Managed Asset
SIM lifecycle, session data, per-device signal metrics, and connectivity cost are continuously reconciled and policy-driven - degraded meters are re-provisioned automatically, retired ones suspended within minutes.
Two-Tier Time-Series Storage
Raw high-cardinality telemetry and continuous Flux-based aggregation in InfluxDB; validated, billing-grade golden aggregates, tariff logic, and prediction outputs served from PostgreSQL.
Capacity-Bracket Guardian
Live tracking of each household's top-three monthly peaks combined with P90 forecasts yields day-ahead bracket-breach warnings and hour-by-hour, spot-price-aware recommendations to shift, cut, or increase consumption.
Key Results
12,000+
eSIM-connected meters under management across remote sites in Norway
99.6%
daily meter reachability fleet-wide, including remote and coastal sites
7.8%
day-ahead hourly forecast MAPE at metering-point level (P50)
67%
of bracket-breach warnings confirmed actionable - households that followed recommendations stayed within their capacity tier
Business Outcome
The platform went live region by region over eleven months, running in shadow mode against the legacy collection system before cutover, and now operates as the client's production metering and analytics backbone across all of its service regions.
​
Remote SIM provisioning changed the economics of the fleet outright. Operator selection moved from an irreversible manufacturing decision to a routine software operation: meters ship as one SKU, attach on a bootstrap profile, and receive the best-performing operator profile for their actual installation site. When commercial terms changed with one regional operator, 2,400 meters were migrated over the air overnight - an operation that would previously have required a months-long field campaign.
​
For households, the prediction engine turned an opaque tariff mechanism into daily, concrete guidance. Warnings arrive the afternoon before a predicted peak, while the flexible load that causes most breaches - EV charging above all can still be rescheduled into cheap night hours. In the first full heating season, participating households that acted on recommendations avoided bracket escalation in 67% of flagged cases and captured measurably more of their consumption in below-average spot-price hours.
​
Measurable gains from the engagement:
​
-
Meter connectivity provisioning time reduced from a per-site manual process to fully automated over-the-air activation on first power-up
-
2,400-meter operator migration executed remotely overnight with zero field visits
-
99.6% daily fleet reachability, with automated profile switching recovering meters in degraded-coverage locations
-
Telemetry ingestion sustained at full-fleet synchronized reporting with p99 broker-to-storage latency under 4 seconds
-
Day-ahead hourly forecasts at 7.8% MAPE per metering point, improving to 5.9% at the neighborhood aggregation level used for local grid planning
-
67% of capacity-bracket warnings actionable and confirmed effective; participating households avoided tier escalation and its near-doubling of fixed grid fees
-
Full environment provisioning (broker ACLs, topics, buckets, schemas, dashboards, credentials) automated with Terraform — under one hour instead of weeks of manual setup
-
Per-device connectivity cost made observable in real time, with automated suspension of retired SIMs eliminating residual data charges