Primer 02 · ~10 minFree
Reading OCPP StatusNotification
Faulted, Unavailable, SuspendedEVSE — extract errorCode and vendor strings without drowning in the CSMS.
CSMS dashboards drown techs in charts. The useful artifact is usually a StatusNotification (and neighbors: Heartbeat, BootNotification, Authorize, StartTransaction). This primer teaches you to extract a field branch—not to memorize the OCPP PDF.
The status words that matter
- Available / Preparing / Charging / Finishing / Reserved — healthy session path words (still verify energy with MeterValues when billing is in play).
- Unavailable — intentional offline, maintenance, LMS lockout, or soft-offline. Not automatically “broken hardware.”
- Faulted — protective or software latch. Capture errorCode and info / vendorErrorCode before you clear anything.
- SuspendedEVSE — charger paused demand (thermal, LMS, power). Session may still be alive.
- SuspendedEV — vehicle paused. Do not condemn the cabinet first.
If ops says “Faulted” and the CSMS shows Unavailable, fix the vocabulary before you open covers.
What to capture (every time)
- chargeBoxId / station identity
- connectorId (and physical stall paint—they can disagree)
- status + errorCode + vendor/info string
- timestamp vs last good session
- Whether Heartbeat is still alive
Alive Heartbeat + stuck Faulted ≠ “modem dead.” Dead Heartbeat + local HMI ready ≠ “power module.”
Common errorCode branches (field, not exhaustive)
| errorCode / pattern | First branch |
|---|---|
| GroundFailure | GF/RCD/PE — dry path, PE continuity |
| EVCommunicationError | Handshake / latch / CP — CCS guide |
| OverCurrentFailure / PowerMeterFailure | Contactor, meter, or real overload — measure |
| UnderVoltage / OverVoltage | Site power — site power |
| OtherError / InternalError + vendor string | Read the vendor string — that is the real ticket |
| Empty vendor + OtherError | Presentation first; do not spam reset |
Soft-offline vs Faulted
Soft-offline: CSMS red, local may look ready, Heartbeat gaps, Authorize failures. Fix DNS/TLS/CSMS URL/APN/identity—see free samples like NET-C01 and OCPP-F02.
Hard Faulted with GroundFailure before plug: do not start in the modem tray.
One soft-clear rule
Capture → clear external inhibits → one OEM clear. If it returns in under a minute with no plug, treat as hard latch and measure. Endless resets are how you burn a day and learn nothing.
Field action
Walk the free map: OCPP Faulted triage. Then open matching free protocol samples in the database.
MeterValues and the “it charged but…” ticket
Authorize and StartTransaction can succeed while MeterValues are missing or absurd. Billing fights look like “charger bugs.” Separate: did energy flow, did the meter talk, did the CSMS store it? Free guide: metering & payment.
BootNotification after board or modem work
After a swap, BootNotification may show a new firmware or identity. If chargeBoxIdentity or the CSMS URL drifted, you get soft-offline that looks random. Re-commission identity before you condemn the radio.
Connector ID lies
Paint says Stall 4; OCPP says connectorId 2. Dual-gun cabinets and remodeled pads do this constantly. Mis-map sends LOTO to the wrong door. Prove with a plug test while watching CSMS.
How Arcbound Field uses OCPP in entries
Free protocol samples are written around StatusNotification branches (Heartbeat, Authorize, CableCheck). Search OCPP or Faulted in the database. Pair with the long-form OCPP Faulted triage when you need the full decision tree.
Practice drill (15 minutes)
- Pull one real StatusNotification from a healthy session and one from a fault.
- Highlight status, errorCode, vendor string, connectorId.
- Write a one-sentence branch (network / ISO / GF / payment / site).
- Open the matching free sample and see if your branch matches rank-1.
Worked example: Authorize rejected
Status Available, Authorize.conf Invalid for one RFID, others OK. Branch is idTag/account—not isolation. Free sample path: OCPP-F03. If all tags fail and Heartbeat is dead, flip to network.
Worked example: Faulted with GroundFailure before plug
Do not start in CSMS URL settings. Protective branch first. GND-01 and OEM GF samples.
Export hygiene
When you export CSMS CSV/JSON for a ticket or Pro Q&A, scrub customer PII. Keep chargeBoxId, connectorId, timestamps, status, errorCode, vendor strings, and MeterValues summaries.
Connector vs charge point
OCPP can report status per connector. A dual-gun cabinet may show Connector 1 Available and Connector 2 Faulted at the same second. Ticket language that says “the charger is Faulted” without a connector ID forces you to guess. Pull connectorId every time.
MeterValues as supporting evidence
MeterValues are not StatusNotification, but they corroborate branches: zero current with “Charging” status is a mismatch; rising energy with “Available” is impossible and points to CSMS lag or wrong chargeBox mapping. Use them as secondary evidence, not as the first screen you open.
VendorErrorCode discipline
OEM vendor strings often carry the real branch. Capture them verbatim into the ticket and into The EVSE Directory search. Do not “translate” them into friendly English before you search—translation loses the string match.
Related
- EVSE levels and tickets
- Using The EVSE Directory
- Brand hubs when the vendor string names an OEM — e.g. ABB, Tritium