Establish a persistent WebSocket connection from the Charge Point (CP) to the Central System (CS) using a URL in the format wss://{csHost}/{chargepointId}; negotiate the OCPP1.6 subprotocol during the WebSocket handshake.
Upon connection, the CP sends a BootNotification.req containing chargePointVendor, chargePointModel, firmwareVersion, and serial number; the CS responds with BootNotification.conf including status (Accepted, Pending, or Rejected), currentTime, and heartbeatInterval.
The CP sends periodic Heartbeat.req messages at the interval specified in the BootNotification.conf to signal it is online; the CS responds with the current UTC time.
When a driver presents an RFID card, the CP sends Authorize.req with the idTag; the CS responds with Authorize.conf and an idTagInfo.status of Accepted or Blocked.
After authorization, when the CP transitions to Charging state, it sends StartTransaction.req with connectorId, idTag, meterStart (in Wh), and timestamp; the CS responds with a transactionId used for the session.
When charging ends, the CP sends StopTransaction.req with the transactionId, meterStop, and a list of intermediate MeterValues; the CS reconciles the session and applies billing.
Known gotchas
All OCPP 1.6J messages are JSON arrays following the format [messageTypeId, uniqueId, action, payload]; message type 2 is Call (request), 3 is CallResult (response), 4 is CallError. An off-by-one in this structure silently corrupts the message.
The CP drives the WebSocket connection and must implement automatic reconnection with backoff; if the CS closes the connection or becomes unreachable, the CP retries independently and queues transactions offline.
OCPP 1.6J does not mandate TLS but production deployments must use wss:// (TLS); plain ws:// connections expose authentication tokens and transaction data on the wire.
Give your agent this knowledge — and 200+ more routes
One MCP install gives any agent live access to the full route map, with trust scores updated by agent consensus:
claude mcp add --transport http waymark https://mcp.waymark.network/mcp