Thummar Technologies
Company
Industries
Technologies
Resource
Pulsen A.I — Azure IoT Cloud Platform for Solar & Battery Microgrids

HOME - our portfolio - pulsen ai ems azure iot cloud platform

Pulsen A.I — Azure IoT Cloud Platform for Solar & Battery Microgrids
Pulsen A.I — Azure IoT Cloud Platform for Solar & Battery Microgrids
Industry
Industry

Energy & Renewables

Client
Client

Solpulsen (Sweden)

Built for
Built for

Cloud / Web / Mobile API

Project Type
Project Type

Industrial IoT Cloud Platform

Region
Region

Northern Europe

Timeline
Timeline

2026

Project Description

Pulsen A.I is the cloud platform behind Solpulsen's smart microgrid business — a Swedish energy company deploying solar PV, battery energy storage (BESS) and grid-connected microgrids across customer sites. TTPL designed and built the entire Azure cloud layer that sits between Solpulsen's field hardware and the people who operate it.

Every site runs an EMS (Energy Management System) controller that reads inverters, battery racks, meters and generators over Modbus and publishes telemetry over MQTT every three seconds. TTPL built the platform that receives that stream at scale, stores it losslessly, serves it to web and mobile clients, tracks whether each controller is still alive, and — in the most demanding phase — sends commands back down to the hardware with a full, auditable result lifecycle.

The platform runs 24/7 on Azure IoT Hub, Event Hubs, Container Apps and PostgreSQL, and was delivered in three verified phases: V1 telemetry ingestion, V2A heartbeat and cloud-link monitoring, and V2B downlink commands — the last of which was proven end-to-end against a live controller in the field with a measured 1.77-second issue-to-completed round trip.

Goal

Solpulsen needed a cloud platform that could take in high-frequency telemetry from EMS controllers in the field, keep it safe and queryable, and eventually control that hardware remotely — without the platform becoming the weakest link in an energy system.

  • Ingest MQTT telemetry from every site controller at a three-second cadence with zero data loss, including during deployments and database outages
  • Store both the exact raw frame (audit and replay) and typed, indexed columns (dashboards and reporting) from a single ingestion pass
  • Give each physical device behind a controller — inverter, battery rack, meter, generator — its own queryable time series
  • Serve web and mobile clients from a clean read API that cannot be destabilised by device traffic spikes
  • Detect within a configurable window when a controller stops talking, and record offline and recovery events
  • Send commands from the cloud to the controller with acknowledgement, final execution result, timeout handling and a complete audit trail
  • Keep physical actuation safely gated until the hardware command contract is formally agreed
Challenges

A vendor protocol that could not be changed: the EMS controller manufacturer publishes a fixed JSON envelope and uses its own positionNo identifier for each device behind a controller. Azure IoT Hub, in turn, enforces its own topic scheme. The platform had to map one onto the other without asking either side to bend.

Volume that scales with devices, not users: a single controller at a three-second cycle generates roughly 40,000 messages a day. Ingestion load therefore tracks device count, while API load tracks how many people have a dashboard open — two completely different scaling curves that could not share a process.

At-least-once delivery is the only honest guarantee: Event Hubs, like Kafka, redelivers events when a consumer crashes before checkpointing. Any design that assumed exactly-once would eventually corrupt the data.

Commands are far harder than telemetry: telemetry that arrives late is an inconvenience; a command that silently fails on energy hardware is a safety problem. The cloud had to distinguish "received", "accepted", "executed" and "expired" as separate, provable states — over an asynchronous message channel with no synchronous response.

Field reality intrudes: the live controller ran on a clock eight hours ahead of UTC, which caused perfectly valid commands to be rejected as expired. Device timestamps could not be trusted for any ordering or liveness decision.

Solutions
Buffered Ingestion Pipeline — IoT Hub to Event Hubs to PostgreSQL

Controllers publish MQTT over TLS to Azure IoT Hub, which authenticates each device with its own revocable identity and routes messages onto Event Hubs by message type. Event Hubs holds every accepted message for 72 hours regardless of whether anything downstream is reading — so a worker restart, a redeploy or a brief database outage costs nothing. The ingestion worker consumes at its own pace from its last checkpoint and catches up.

Dual-Write Storage: Raw Audit Frame plus Typed Time Series

Every frame is written twice in one pass: once verbatim as JSONB (the contract with the hardware vendor, and the replay source if a mapping bug is ever found) and once parsed into typed, indexed tables for run data, base data and per-device EMS telemetry. Dashboards get indexed numeric columns instead of JSON scans; the business keeps a byte-exact audit record.

Idempotent Writes Instead of False Delivery Guarantees

Rather than fighting for exactly-once semantics, every insert deduplicates on the vendor's message identifier with a unique constraint and an on-conflict-do-nothing write. Replays after a crash become no-ops by construction. Unparseable frames are diverted to a dead-letter table with the error text, so a single poison message can never block the stream.

Separated Ingestion and Read API

Ingestion runs as a headless .NET Worker Service container with no HTTP surface; the REST API runs as a separate container serving web and mobile clients. They deploy, scale and fail independently, sharing one PostgreSQL database through two schemas — one owned by the worker, one managed by Entity Framework for the tenant, site, controller and device hierarchy.

Heartbeat and Cloud-Link Monitoring

The platform tracks last-seen time and cloud-link status per controller, detects missed heartbeats against a configurable interval, and raises offline and recovery events. Because device clocks proved unreliable in the field, liveness is judged on broker-side sequence and enqueue time rather than on any timestamp the device reports.

Auditable Cloud-to-Device Command Lifecycle

Commands move through issue, validate, dispatch, acknowledge and complete as distinct states. A configuration-driven registry whitelists every command code and validates each parameter by type, range and enum before anything leaves the cloud. Acknowledgement and result messages return on a dedicated stream; a timeout monitor forces a deterministic terminal state when they do not. Every transition is written to an append-only event log, with idempotency by request ID and one in-flight command per device.

Safety Gate on Physical Actuation

Physical actuation ships disabled. Only mock commands run until the hardware manufacturer delivers a signed-off contract covering command codes, parameter ranges, safety limits and readback rules. Real commands are then enabled individually — never as a blanket switch — so the message path could be fully proven in production without any risk to live energy equipment.

Device Simulator as a First-Class Test Harness

A dedicated simulator impersonates the controller using raw MQTT rather than the Azure SDK, exercising the exact contract the real hardware implements — including a mock command responder. Scheduled jobs publish realistic run, base and per-device frames, while a parallel reader confirms arrival, so publish and ingest can be watched side by side without any field hardware.

Tech Stack
Tags
Industry
Visuals
THUMMAR TECHNOLOGIES
icon
TRUSTED BY CLIENTS IN 8+ COUNTRIES
icon
ENGINEERING EXCELLENCE
icon
DIGITAL TRANSFORMATION PARTNER
icon
FUTURE-READY SOLUTIONS
icon
GLOBAL SOFTWARE DEVELOPMENT COMPANY
icon
YOUR SUCCESS IS OUR MISSION
icon
80+ PROJECTS DELIVERED GLOBALLY
icon
ON-TIME. ON-BUDGET. ON-POINT.
icon
WHERE VISION MEETS EXECUTION
icon
BUILDING TECHNOLOGY THAT EMPOWERS BUSINESS
icon
THUMMAR TECHNOLOGIES
icon
TRUSTED BY CLIENTS IN 8+ COUNTRIES
icon
ENGINEERING EXCELLENCE
icon
DIGITAL TRANSFORMATION PARTNER
icon
FUTURE-READY SOLUTIONS
icon
GLOBAL SOFTWARE DEVELOPMENT COMPANY
icon
YOUR SUCCESS IS OUR MISSION
icon
80+ PROJECTS DELIVERED GLOBALLY
icon
ON-TIME. ON-BUDGET. ON-POINT.
icon
WHERE VISION MEETS EXECUTION
icon
BUILDING TECHNOLOGY THAT EMPOWERS BUSINESS
icon
flag

Ahmedabad, India

call
inquiry@thummartechnologies.com
Message
+91 9725497682
location
208, Aeon Complex, Nr Angira Society, Vijay Cross Road, Navrangpura, Ahmedabad - 380009

© 2026 Thummar Technologies. All rights reserved.

LinkedInX (Twitter)FacebookInstagram