StatusNotification

Core CS->CSMS OCPP 2.0.1

Sent by the Charging Station to report the current status of a connector on a specific EVSE. Uses the new EVSE/connector model and a simplified connector status enum.

Quick Reference

Required Fields

timestamp string (date-time)

Time at which the status change occurred

connectorStatus ConnectorStatusEnumType

Current status: Available, Occupied, Reserved, Unavailable, or Faulted

evseId integer

ID of the EVSE to which this connector belongs (0 = Charging Station itself)

connectorId integer

ID of the connector on the EVSE

Example Payload

{
  "timestamp": "2024-01-15T10:00:00Z",
  "connectorStatus": "Available",
  "evseId": 1,
  "connectorId": 1
}

Example Full Frame

[
  2,
  "msg-001",
  "StatusNotification",
  {
    "timestamp": "2024-01-15T10:00:00Z",
    "connectorStatus": "Available",
    "evseId": 1,
    "connectorId": 1
  }
]

Format: [MessageType, MessageId, Action, Payload]

Overview

StatusNotification reports the operational status of a specific connector on a specific EVSE to the CSMS. In OCPP 2.0.1, the status enum is simplified from 1.6J’s 9 states to just 5 states, and the EVSE model replaces the flat connector model.

When to Send

  • When the status of a connector changes
  • After a BootNotification is accepted (report initial status for all connectors)
  • After a ChangeAvailability command is processed

Expected Response

Empty response — the CSMS acknowledges with an empty {} object.

Key Differences from OCPP 1.6J

OCPP 1.6J StatusOCPP 2.0.1 Equivalent
AvailableAvailable
PreparingOccupied
ChargingOccupied
SuspendedEVOccupied
SuspendedEVSEOccupied
FinishingOccupied
ReservedReserved
UnavailableUnavailable
FaultedFaulted

The charging state details (Charging, SuspendedEV, etc.) are now reported via TransactionEvent.transactionInfo.chargingState.

Also, connectorId in 1.6J now becomes evseId + connectorId in 2.0.1.

Usage Notes

  • Use evseId: 0 to report the overall Charging Station status
  • A Charging Station with 2 EVSEs would send StatusNotification for evseId 1 and 2
  • The detailed charging state is no longer part of StatusNotification — use TransactionEvent for that
  • errorCode from 1.6J is removed — security events use SecurityEventNotification instead

Best Practices

  1. Report all connectors on boot — After BootNotification is accepted, send StatusNotification for each connector
  2. Keep it simple — Only 5 states to track, detailed session state lives in TransactionEvent
  3. Use evseId=0 for station-level faults — If the entire station is unavailable, report with evseId=0

Testing Tips

  • Verify all 5 statuses: Available, Occupied, Reserved, Unavailable, Faulted
  • Test that sending Preparing or Charging (from 1.6J) results in a validation error
  • Test the initial status report after BootNotification

Common Errors

TypeConstraintViolation

Cause: connectorStatus uses a 1.6J status value like Preparing or Charging

Solution: OCPP 2.0.1 has a different status enum: Available, Occupied, Reserved, Unavailable, Faulted

TypeConstraintViolation

Cause: evseId is missing

Solution: evseId is required in OCPP 2.0.1. Use 0 to report Charging Station level status