By RIOD Engineering · June 16, 2026
A production OCPP client has to survive networks that drop, CMS platforms that lag, and its own local storage running out. The spec covers about 60% of what matters; the rest is engineering judgment learned from shipping.
Here's what goes into a firmware OCPP stack that doesn't fail in the field.

Reconnect with exponential backoff and jitter. A cellular tower dropping causes every charger on it to try to reconnect simultaneously otherwise; you DDoS your own CMS.
Message queueing for offline periods. Transactions, MeterValues and StatusNotifications continue happening while the network is down. The client persists them, orders them, and replays on reconnect.
Clock drift handling. A charger with a battery-backed RTC that's off by hours produces confused timestamps. The client should reconcile against CMS-supplied time on BootNotification and Heartbeat responses.
When the CMS pushes a ChargingProfile via SetChargingProfile, the firmware has to enforce it at the connector level. This means the state machine has to drive the CP PWM duty cycle in real-time to reflect the current limit the profile allows.
Correct behaviour: profiles compose (transaction-level, connector-level, station-level), and the most restrictive wins. Multiple ChargingProfiles can be active simultaneously; the firmware evaluates every second and applies the tightest constraint.
OCPP Compliance Testing Tool (OCTT) is the vendor-neutral test suite. Passing OCTT is necessary but not sufficient; real chargers meet real CMS platforms with implementation quirks the spec doesn't cover.
RIOD's approach: OCTT plus interoperability testing against multiple commercial CMS platforms and RIOD-built platforms during firmware release cycles. It's how bugs that only appear at certain CMS software versions tend to get caught before customers do.
Talk to our team about your project. We design, supply, and manage EV charging infrastructure across India.