Reset
[2, "19223250", "Reset", { "type": "Soft" }]
[3, "19223250", { "status": "Accepted" }]| Type | Does | Use when |
|---|---|---|
Soft | Restarts the OCPP application; ongoing transactions are stopped gracefully first | The stack is wedged but the hardware is fine — the default choice |
Hard | Full power-cycle equivalent; no graceful shutdown | Soft failed, or the unit is unresponsive |
Accepted means the charger will restart, not that it restarted. Confirmation is the BootNotification that follows when it comes back up. A charger that accepts a reset and never sends BootNotification has not rebooted — it has died, and that needs escalation rather than a second reset.
ChangeAvailability
[2, "19223251", "ChangeAvailability", {
"connectorId": 1,
"type": "Inoperative"
}]
[3, "19223251", { "status": "Scheduled" }]| Response | Means |
|---|---|
Accepted | Applied now — the connector was idle |
Scheduled | Will apply when the current transaction ends |
Rejected | Cannot comply |
Scheduled is the response that makes this command safe. Rather than cutting off a driver mid-charge, the charger honours the current session and applies the change afterwards. It is why ChangeAvailability should be your default tool for planned maintenance and Reset should not.
The trade-off is that a Scheduled change is not applied yet. Track pending availability changes and reconcile against StatusNotification, or your maintenance window opens with chargers still serving drivers.
connectorId 0
As in StatusNotification, connectorId: 0 addresses the whole charge point. Sending Inoperative to connector 0 disables every connector on the unit. This is what you want for cabinet-level maintenance and emphatically not what you want if you meant to disable one faulty socket.
Choosing between them
| Situation | Use |
|---|---|
| Planned maintenance window | ChangeAvailability → Inoperative, then back to Operative |
| One faulty connector, unit otherwise fine | ChangeAvailability on that connector only |
| OCPP stack unresponsive but hardware healthy | Reset → Soft |
| Charger completely unresponsive | Reset → Hard, accepting the data risk |
Safety fault such as GroundFailure | ChangeAvailability immediately, then a site visit — never just a reset |
| Decommissioning | ChangeAvailability, then remove from OCPI Locations |
The safety row is worth stating plainly: resetting a charger reporting an earth fault clears the error state without fixing the fault. The unit comes back reporting NoError and resumes serving drivers on faulty hardware. Take it out of service and send someone.
Propagating the state outward
A charger you have disabled must stop appearing as available to everyone downstream:
- Your own app — immediately.
- Roaming partners via OCPI Locations — push
INOPERATIVE, do not wait for their next pull. - Open networks — the catalogue you serve to Beckn search must reflect it.
A disabled charger still advertised as available is the same driver-facing failure as a broken one, and it is entirely self-inflicted.
Production lessons
- Soft before hard, always. Hard reset risks queued offline transactions.
- Confirm a reset via BootNotification.
Acceptedis not evidence of a restart. - Prefer
ChangeAvailabilityfor anything planned.Scheduledprotects the driver mid-charge. - Track pending
Scheduledchanges and reconcile before the maintenance window opens. - Never reset a charger reporting a safety fault. Disable it and dispatch an engineer.
- Be deliberate about
connectorId 0— it disables the entire unit. - Propagate unavailability to every downstream channel immediately.
- Rate-limit resets per charger. Repeated resets on one unit indicate a fault that resetting will not fix, and a boot loop makes it worse.
Frequently asked questions
A soft reset restarts the OCPP application and stops ongoing transactions gracefully first. A hard reset is equivalent to a power cycle with no graceful shutdown, which risks losing queued offline transaction data. Always try soft first.
No, it means the charger will attempt to restart. Confirmation is the BootNotification that arrives when it comes back up. A charger that accepts a reset and never sends BootNotification has died and needs escalation rather than another reset.
The change will be applied when the current transaction ends, rather than cutting off a driver mid-charge. This makes ChangeAvailability the safe default for planned maintenance, but it also means the change is not yet in effect and pending changes must be tracked.
No. Resetting clears the error state without fixing the fault, so the unit returns reporting NoError and resumes serving drivers on faulty hardware. Take it out of service with ChangeAvailability and send an engineer.