OCPP 1.6 Remote Operations - Controlling Chargers from the Cloud
How to remotely start/stop sessions, unlock connectors, and change configurations on OCPP 1.6 chargers. with flow diagrams and practical tips.
OCPP 1.6 Remote Operations. Controlling Chargers from the Cloud
Everything so far has been messages the charger sends to the backend. But OCPP is bidirectional. the Central System can push commands down to the charger too. This is where fleet management actually becomes useful.
RemoteStartTransaction
This is how a mobile app starts a charge. The user taps "Start" in the app, the app hits your API, and your backend tells the charger to go:
Rendering diagram...
You must include an idTag. every session needs an identity for billing. The connectorId is optional but you should always set it; otherwise the charger picks whichever connector it feels like, which confuses users.
One gotcha that catches every new integrator at least once: some chargers require the cable to be plugged in before they'll accept a RemoteStart. Others accept it and wait for the cable. This is vendor-specific and there's nothing in the spec that resolves it. Always test with real hardware.
RemoteStopTransaction
The backend tells the charger to end a session:
Rendering diagram...
Handle rejection gracefully. The charger might have already stopped on its own, or the transaction ID might not match anything active. Your app needs a fallback that doesn't leave the user staring at a spinner.
UnlockConnector
Cables get stuck. It happens more often than you'd think. cold weather, worn locking mechanisms, users who yank at the wrong angle. Operators need a way to release it remotely:
Rendering diagram...
If there's an active session on that connector, the charger typically stops the transaction first, then unlocks. Not all chargers support remote unlock. some have permanently locked cables by design.
ChangeConfiguration
The Swiss Army knife of remote management. You can change almost any charger setting over the air:
{"key": "HeartbeatInterval", "value": "60"}
Common keys:
| Key | What it does |
|---|---|
HeartbeatInterval | Heartbeat frequency in seconds |
MeterValueSampleInterval | How often MeterValues are sent during a charge |
ConnectionTimeOut | Wait time for auth after plug-in |
LocalPreAuthorize | Enable offline auth with local list |
StopTransactionOnEVSideDisconnect | Auto-stop when cable pulled |
UnlockConnectorOnEVSideDisconnect | Auto-unlock when cable pulled |
Responses: Accepted, RebootRequired, NotSupported, Rejected.
Rendering diagram...
The thing to know about ChangeConfiguration: the supported keys are vendor-specific. The spec defines a list of standard keys, but every charger manufacturer adds their own. If you're building a multi-vendor CSMS, expect to maintain a per-vendor configuration map. There's no getting around it.
Other useful commands
A few more worth knowing:
- GetConfiguration: ask the charger for its current settings. Returns all keys and values. Invaluable for debugging.
- Reset: force a soft or hard restart. Use with extreme caution on production chargers.
- ClearCache: clear the local authorization cache.
- TriggerMessage: poke the charger to send a specific message immediately (e.g., "send me your current status right now").
Remote operations are what turn OCPP from a logging protocol into an actual fleet management tool. Without them you can observe chargers; with them you can control them.