Open Charge Point Protocol


Piotr Majcher



Open Charge Point Protocol

Some time ago, we published an article-reminder on OCPI. Given how widely read it was, we thought it’d be a good idea to continue the series on open protocols in the EV charging diligence.

Standing at the forefront of EV mass adoption, open standards and protocols are essentially responsible for the communication within the industry. They connect all involved parties (i.e. CPOs, EMPs, EVSE) altogether and allow for the data exchange, staying up-to-date and allowing for EV drivers to actually facilitate the charging sessions.

We have already covered quite a lot on the subject of open standards, for those interested, here’s the list of some entries so far:

EV roaming with open standards - OICP and eMIP

EV roaming with open standards - OCPI and OCHP

In this piece, all the focus goes into the Open Charge Point Protocol - OCPP.

What is OCPP?

OCPP has been developed by the Open Charge Alliance, a consortium of electric vehicle infrastructure providers, automakers, utilities, and other stakeholders. OCPP is a communication protocol used by charging stations and electric vehicle service providers. It enables two-way communication between the EVSE and CPOs, allowing for the monitoring and control of charging sessions.

OCPP is an open protocol, and anyone can develop applications that use it. Yet, it has not been officially deemed as standard, meaning that as much as OCA highly recommends using it, it’s not obligatory for EVSE manufacturers to produce hardware compliant with OCPP.

In terms of what it does, understanding of the OCPP placement in the entire ecosystem is crucial. As it has been stated earlier, OCPP is the syntax connecting the CSMS (Charging Station Management System used by CPOs to control their networks) with the actual hardware appliances (charging stations). Amongst operations covered by OCPP there are:

  • Authorization of the charging session: enables identifying the EV driver and starting/finishing the charging event
  • Billing information: the charging event data is transferred to the backed system to define the chargers and bill the EV user accordingly
  • Charger reservation
  • Real-time data transfer to CSMS: CPOs can monitor the stations’ statuses (i.e. which are currently occupied, which have some issues detected)
  • Remote charging station control
  • Issues recognition and alerting


Throughout the years, there have been a few versions of OCPP published. Two most recent ones are - OCPP 2.0 and 2.0.1. We’re gonna focus on these two, as they’re currently the most relevant.

In terms of the migration from the previous version (OCPP 1.6), we have covered that subject in this article. When it comes to OCPP 1.6, this version was enriched with multiple new features compared to its 1.5 predecessor (now mostly out of use). As we read in the documentation, to OCPP 1.6 there have been added:

  • Smart Charging is added
  • A binding to JSON over WebSocket as a transport protocol is added, reducing data usage and enabling OCPP communication through NAT routers, see: OCPP JSON Specification
  • Extra statuses are added to the ChargePointStatus enumeration, giving the CPO and ultimately end-users more information about the current status of a Charge Point Structure of MeterValues.req is changed to eliminate use of XML Attributes, this is needed for support of JSON (no attribute support in JSON).
  • Extra values are added to the Measurand enumeration, giving Charge Point manufacturers the possibility to send new information to a Central System, such as the State of Charge of an EV
  • The TriggerMessage message is added, giving the Central System the possibility to request information from the Charge Point
  • A new Pending member is added to the RegistrationStatus enumeration used in BootNotification.conf
  • More and clearer configuration keys are added, making it clearer to the CPO how to configure the different business cases in a Charge Point
  • The messages and configuration keys are split into profiles, making it easier to implement OCPP gradually or only in part
  • Known ambiguities are removed (e.g. when to use UnlockConnector.req, how to respond to RemoteStart/Stop, Connector numbering)

(please note, this extract comes from the OCPI 1.6 documentation and can be downloaded in full from their website)

OCPP 2.0 and OCPP 2.0.1

Now let’s focus on the two latest versions. OCPP 2.0 was first introduced in April 2018. Since then, some issues have been found. As it turned out, some of the problems couldn't have been solved by fixing textual nuances in the documentation and needed bigger changes, to the point where they weren’t backward compatible. This included i.e. messages improvements (like the length of the security message certificate which happened to be too short). This is when OCPP 2.0.1 was introduced and it's recommended by OCA to use this one only.

As the OCPP standard continues to evolve, it is important for charging station operators to stay up-to-date on the latest version of the OCPP protocol. Doing so will ensure that their charging stations are compatible with the latest CSMS software and able to take advantage of the newest OCPP features.

In terms of how OCPP 2.0 followed by 2.0.1 have changed compared to OCPP 1.6, there’s been some major changes. First and foremost an ISO 15118 support has been introduced. In return, this has opened up the possibilities such as the Plug and Charge functionality. In the newest version SOAP is no longer supported as it has been entirely replaced by JSON websockets. There have also been some major improvements in the security area. Amongst some slightly smaller changes,

device management & monitoring replaced formerly used Status Notifications. The transaction handling has been improved so that it could support bigger and more complex networks.

The official OCPP documentation consists of 7 parts:

  • Introduction
  • Architecture and topology
  • Specification and Appendices
  • Schemas
  • JSON over WebSockets implementation guide
  • Certification profiles
  • Test cases