How BootNotification works (OCPP 2.0.1)
In OCPP 2.0.1, BootNotification is still “I just woke up — here is who I am.” The difference is the envelope: the station introduces a chargingStation object and must say why it booted.
OCPP 2.0.1 was released by the Open Charge Alliance in 2020 and is not compatible with 1.6. Use subprotocol ocpp2.0.1. Download the official specification.
More 2.0.1 frames: sample list. Launch simulator and set protocol to 2.0.1.
When it is triggered
- The charging station opens a new WebSocket to the CSMS.
- Power-up, Reset, firmware install, or an unexpected reboot.
- The CSMS sends TriggerMessage asking for BootNotification.
OCPP 2.0.1 BootNotification sample
JSON[
2,
"cf-boot-201",
"BootNotification",
{
"reason": "PowerUp",
"chargingStation": {
"model": "CF-AC7 Type 2",
"vendorName": "Chargeflux",
"firmwareVersion": "1.6.0-cf",
"serialNumber": "CF-DEMO-A7K2"
}
}
]JSON[
3,
"cf-boot-201",
{
"status": "Accepted",
"currentTime": "2026-08-14T10:15:03.000Z",
"interval": 300
}
]Common reason values include PowerUp, RemoteReset, FirmwareUpdate, and Triggered. Accepted / Pending / Rejected mean the same operational thing as in OCPP 1.6J BootNotification — Pending still means “do not start a session yet.”
Heartbeat that follows
JSON[
2,
"cf-hb-201",
"Heartbeat",
{}
]JSON[
3,
"cf-hb-201",
{
"currentTime": "2026-08-14T10:20:03.000Z"
}
]Related guides
- OCPP 2.0.1 sample messages — TransactionEvent, BootNotification, status, and RequestStart — with when each fires.
- OCPP 2.0.1 status notification — EVSE + connector statuses: Available, Occupied, Reserved, Unavailable, Faulted.
- TransactionEvent — Started, Updated, and Ended — the 2.0.1 replacement for Start/Stop/MeterValues.
- RequestStartTransaction — How the CSMS remotely starts or stops a 2.0.1 session.
FAQ
When is BootNotification sent in OCPP 2.0.1?
Right after the ocpp2.0.1 WebSocket opens, and again after a reboot or a TriggerMessage request. The payload includes a reason such as PowerUp.
How is 2.0.1 BootNotification different from 1.6J?
Identity is nested under chargingStation (vendorName, model, serialNumber, firmwareVersion) instead of chargePointVendor / chargePointModel. A reason field is required.
Last reviewed August 2026 · Chargeflux.io