ReserveNow
Sent by the CSMS to reserve an EVSE for a specific identifier. The EVSE will be held until the reservation expires or is cancelled.
Quick Reference
Required Fields
id integer Unique identifier for this reservation
expiryDateTime string (date-time) Date and time when the reservation expires
idToken IdTokenType Identifier that will be used to start the transaction for this reservation
Optional Fields
evseId integer EVSE to reserve. If omitted, any available EVSE can be used
connectorType ConnectorEnumType Type of connector required (cCCS1, cCCS2, cG105, cTesla, cType1, cType2, s309-1P-16A, etc.)
groupIdToken IdTokenType Group identifier for the reservation
Example Payload
{
"id": 1,
"expiryDateTime": "2024-01-15T12:00:00Z",
"idToken": {
"idToken": "AABBCCDD",
"type": "ISO14443"
},
"evseId": 1
} Example Full Frame
[
2,
"msg-001",
"ReserveNow",
{
"id": 1,
"expiryDateTime": "2024-01-15T12:00:00Z",
"idToken": {
"idToken": "AABBCCDD",
"type": "ISO14443"
},
"evseId": 1
}
]
Format: [MessageType, MessageId, Action, Payload]
Overview
ReserveNow creates a reservation on a specific EVSE (or any EVSE) for a given identifier. While reserved, the EVSE status shows Reserved and cannot be used by other drivers.
When to Send
- When a driver books a charger in advance via an app
- For scheduled fleet charging sessions
Expected Response
status:Accepted,Faulted,Occupied,Rejected, orUnavailable
Key Differences from OCPP 1.6J
| OCPP 1.6J | OCPP 2.0.1 |
|---|---|
expiryDate | expiryDateTime |
idTag (string) | idToken (object) |
connectorId | evseId + optional connectorType |
Usage Notes
- After the reservation, the Charging Station sends
StatusNotificationwithReserved - Use
ReservationStatusUpdateto track reservation status changes - The reserved EVSE will only accept the matching
idTokento start a session
Testing Tips
- Create a reservation, verify StatusNotification shows Reserved
- Test expiry: after
expiryDateTime, verify the EVSE returns to Available - Test that a different idToken is rejected when a reservation is active
Common Errors
TypeConstraintViolation
Cause: expiryDate used instead of expiryDateTime
Solution: OCPP 2.0.1 uses expiryDateTime (not expiryDate as in 1.6J)
TypeConstraintViolation
Cause: idToken is a plain string
Solution: idToken is an object with idToken and type fields in OCPP 2.0.1