ChangeAvailability
Sent by the CSMS to change the operational status of an EVSE or connector. Supports setting it Operative or Inoperative.
Quick Reference
Required Fields
operationalStatus OperationalStatusEnumType Operative or Inoperative
evse EVSEType Target EVSE - object with id. If id is 0, applies to the entire Charging Station
evse.id integer EVSE ID. Use 0 to target the entire Charging Station
Optional Fields
evse.connectorId integer If provided, targets a specific connector on the EVSE
Example Payload
{
"operationalStatus": "Inoperative",
"evse": {
"id": 1
}
} Example Full Frame
[
2,
"msg-001",
"ChangeAvailability",
{
"operationalStatus": "Inoperative",
"evse": {
"id": 1
}
}
]
Format: [MessageType, MessageId, Action, Payload]
Overview
ChangeAvailability lets the CSMS put an EVSE (or the entire Charging Station) in or out of service. The status change is reflected in subsequent StatusNotification messages.
When to Send
- To take an EVSE out of service for maintenance
- To re-enable an EVSE after maintenance
- To disable the entire station during off-hours
Expected Response
status:Accepted,Rejected, orScheduled
Scheduled means the station will apply the change after the current transaction on the affected EVSE completes.
Key Differences from OCPP 1.6J
| OCPP 1.6J | OCPP 2.0.1 |
|---|---|
type: "Available" | operationalStatus: "Operative" |
type: "Inoperative" | operationalStatus: "Inoperative" |
connectorId flat field | evse: { id, connectorId } object |
Usage Notes
evse.id = 0affects the entire Charging Station- If a transaction is active when
Inoperativeis requested, expect aScheduledresponse - After processing, the Charging Station sends
StatusNotificationreflecting the new status
Testing Tips
- Test setting Inoperative while a session is active (expect Scheduled)
- Test re-enabling with Operative and verify StatusNotification shows Available
- Test with
evse.id = 0to affect all EVSEs
Common Errors
TypeConstraintViolation
Cause: operationalStatus uses Available or Unavailable (from 1.6J)
Solution: OCPP 2.0.1 uses Operative and Inoperative instead of Available/Unavailable
TypeConstraintViolation
Cause: connectorId sent as flat field instead of inside evse object
Solution: In OCPP 2.0.1 the target is evse: { id: 1 } or evse: { id: 1, connectorId: 1 }