What is a CSMS?
A Charging Station Management System (CSMS) is the backend that communicates with and controls EV chargers. In OCPP terminology, this is called the Central System.
Core Responsibilities
| Function | Description |
|---|---|
| Connection Management | Accept and maintain WebSocket connections from chargers |
| Authorization | Validate RFID tokens and decide whether charging can start |
| Transaction Tracking | Record start/stop events, meter readings, and session data |
| Remote Control | Send commands to chargers (start/stop, reset, configuration) |
| Smart Charging | Set power limits and schedules to manage load |
| Firmware & Diagnostics | Push updates and retrieve logs from chargers |
System Architecture
Communication Model
OCPP uses a request/response pattern over WebSocket:
-
Charger-initiated: The charger sends a request, CSMS responds
BootNotification- charger coming onlineStartTransaction- charging session beginningStatusNotification- state changes
-
CSMS-initiated: The CSMS sends a request, charger responds
RemoteStartTransaction- command to start chargingSetChargingProfile- apply power limitsReset- reboot the charger
Each message has a unique ID. The responder echoes this ID in the response.
Key Design Considerations
Reliability
- Chargers queue messages when offline
- CSMS must handle out-of-order delivery
- Transaction data is idempotent (same transactionId = same session)
Scalability
- Each charger maintains one persistent WebSocket
- Connection count = charger count
- Message volume scales with transaction frequency
Security
- TLS for transport encryption
- Optional: client certificates for charger authentication
- Authorization tokens validated per transaction
OCPP Versions
| Version | Transport | Notes |
|---|---|---|
| 1.6-J | WebSocket + JSON | Most widely deployed |
| 1.6-S | SOAP | Legacy, less common |
| 2.0.1 | WebSocket + JSON | Newer features, growing adoption |
GridLink implements OCPP 1.6-J. See the OCPP 1.6 Specification for protocol details.