Skip to content


Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?


Failed to load latest commit information.
Latest commit message
Commit time
January 20, 2023 12:12
November 21, 2022 22:22
January 20, 2022 12:18
December 18, 2022 20:19
December 30, 2022 18:38
March 28, 2022 14:17

Icon   ArduinoOcpp

Build Status

OCPP-J 1.6 client for embedded microcontrollers. Portable C/C++. Compatible with Espressif, NXP, Texas Instruments and STM.

Reference usage: OpenEVSE

PlatformIO package: ArduinoOcpp


Fully integrated into the Arduino platform and the ESP32 / ESP8266. Runs on ESP-IDF, FreeRTOS and generic embedded C/C++ platforms.

Make your EVSE ready for OCPP 🚗🔌🔋

This library allows your EVSE to communicate with an OCPP Backend and to participate in commercial charging networks. You can integrate it into an existing firmware development, or start a new EVSE project from scratch with it.

✔️ Works with SteVe, The Mobility House OCPP package and further commercial Central Systems

✔️ Tested in many charging stations

✔️ Eligible for public chargers (Eichrecht-compliant)


  • handles the OCPP communication with the charging network
  • implements the standard OCPP charging process
  • provides an API for the integration of the hardware modules of your EVSE
  • works with any TLS implementation and WebSocket library. E.g.

For simple chargers, the necessary hardware and internet integration is usually far below 1000 LOCs.

Developers guide

Please take examples/ESP/main.cpp as the starting point for your first project. It is a minimal example which shows how to establish an OCPP connection and how to start and stop charging sessions. The API documentation can be found in ArduinoOcpp.h.



If compiled with the Arduino integration:

In case you use PlatformIO, you can copy all dependencies from platformio.ini into your own configuration file. Alternatively, you can install the full library with dependencies by adding matth-x/ArduinoOcpp in the PIO library manager.

Next development steps

  • reach full compliance to OCPP 1.6 Smart Charging Profile
  • integrate Authorization Cache
  • get ready for OCPP 2.0.1 and ISO 15118

Supported Feature Profiles

Feature profile supported in progress
Core ✔️
Smart charging ✔️
Remote trigger ✔️
Firmware management ✔️

Further help

I hope this guide can help you to successfully integrate an OCPP controller into your EVSE. If something needs clarification or if you have a question, please send me a message.

✉️ : matthias A⊤ arduino-ocpp DО⊤ com

If you want professional assistance for your EVSE project, you can contact me as well. I'm looking forward to hearing about your ideas!