OCPP - An Open Charge Point Protocol implementation for Erlang



OCPP is a communication protocol for managing electric vehicle charging stations. It supports equipment provisioning, monitoring, transaction management, and more.

The implementation in ocpp aims to simplify building an OCPP based charging station management system by transparently handling some messages such as heartbeats and by enforcing OCPP requirements such as message ordering constraints. Additionally, the application maintains an implementation of the OCPP device model for each charging station to track and store variables associated with the station and its status.

While the implementation is not complete, enough has been implemented to support a basic charging station management system implementation.

I would love feedback, contributions, or discussions.


I also developed a small application called Jerk to support this project. Jerk enforces JSON schema constraints on Erlang maps. It isn’t a complete implementation of the JSON schema spec, just enough to cover the OCPP message schemas.

Future Plans

  • build an example charging station management system (I would love help with this)
  • add support for monitoring, availability, and diagnostics messages
  • improved api for sending requests to charging stations
  • improved error messages from jerk. The error messages are currently useless; descriptive messages are needed to provide feedback when users attempt to construct invalid OCPP messages.