MCPcopy Create free account
hub / github.com/c-jimenez/open-ocpp

github.com/c-jimenez/open-ocpp @v2.0.0-alpha

Chat with this repo
repository ↗ · DeepWiki ↗ · release v2.0.0-alpha ↗ · + Follow
13,744 symbols 34,080 edges 1,719 files 4,074 documented · 30% updated 3mo agov2.0.0-alpha · 2025-06-19★ 1686 open issues

Browse by type

Functions 8,477 Types & classes 5,267
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

Open OCPP 1.6

Table of contents

Features

Key features

Open OCPP is composed of the 4 layers defined by the protocol :

  • Websockets (Client or Server)
  • OCPP-J RPC
  • JSON messages serialization/deserialization
  • OCPP role (Charge Point, Central System or Local Controller)

As of this version :

  • All the messages defined in the OCPP 1.6 edition 2 protocol have been implemented
  • All the configuration keys defined in the OCPP 1.6 edition 2 protocol have been implemented for the Charge Point role
  • All the messages defined in the OCPP 1.6 security whitepaper edition 2 have been implemented
  • All the messages defined in the Using ISO 15118 Plug & Charge with OCPP 1.6 Application Note v1.0 have been implemented

The user application will have to implement some callbacks to provide the data needed by Open OCPP or to handle OCPP events (boot notification, remote start/stop notifications, meter values...).

The persistent data handled by Open OCPP is stored into a single file which is an SQLite database. It contains :

  • For Charge Point role :

  • Internal configuration

  • Persistent data : Central System's registration status, connector state, OCPP transaction related messages when offline, StopTx meter values
  • Badge cache and local list
  • Smart charging profile
  • Logs
  • X.509 Certificates

  • For Central System or Local Controller role :

  • Internal configuration

  • Logs

The standard OCPP configuration persistency has to be handled by the user application.

Supported OCPP feature profiles

Profile Description Restrictions
Core Basic Charge Point functionality comparable with OCPP 1.5 [OCPP1.5] without support for firmware updates, local authorization list management and reservations OCPP confguration persistency has to be handled by the user application
Firmware Management Support for firmware update management and diagnostic log file download Actual file download/upload as well as firmware installation must be handled by the user application in the callbacks provided by Open OCPP
Local Auth List Management Features to manage the local authorization list in Charge Points None
Reservation Support for reservation of a Charge Point. None
Smart Charging Support for basic Smart Charging, for instance using control pilot GetCompositeSchedule is not supported for connector 0 in Charge Point role
Remote Trigger Support for remote triggering of Charge Point initiated messages None

Supported OCPP configuration keys

The OCPP configuration keys support applies to Charge Point role only.

In the "Owner" column, "S" means that the configuration key behavior is handled by the stack, "U" means that it must handled by the user application.

Key Owner Restrictions
AllowOfflineTxForUnknownId S None
AuthorizationCacheEnabled S None
AuthorizeRemoteTxRequests U None
BlinkRepeat U None
ClockAlignedDataInterval S None
ConnectionTimeOut U None
ConnectorPhaseRotation U None
ConnectorPhaseRotationMaxLength U None
GetConfigurationMaxKeys S Must be set to the sum of OCPP configuration keys count (49) + user application configuration keys count to allow to export all the configuration in 1 message
HeartbeatInterval S Heartbeat are only sent if no messages have been exchanged since HeartbeatInterval seconds
LightIntensity U None
LocalAuthorizeOffline S None
LocalPreAuthorize S None
MaxEnergyOnInvalidId U None
MeterValuesAlignedData S+U User application must validate the requested meter value list according to its metering capacities when modified by the Central System
MeterValuesAlignedDataMaxLength S None
MeterValuesSampledData S+U User application must validate the requested meter value list according to its metering capacities when modified by the Central System
MeterValuesSampledDataMaxLength S None
MeterValueSampleInterval S None
MinimumStatusDuration S None
NumberOfConnectors S None
ResetRetries U None
StopTransactionOnEVSideDisconnect U None
StopTransactionOnInvalidId U None
StopTxnAlignedData S+U User application must validate the requested meter value list according to its metering capacities when modified by the Central System
StopTxnAlignedDataMaxLength S None

Extension points exported contracts — how you extend this code

Core symbols most depended-on inside this repo

Shape

Class 4,706
Function 4,696
Method 3,781
Enum 560
Interface 1

Languages

C++51%
C47%
TypeScript1%
Java1%
Python1%

Modules by API surface

3rdparty/sqlite3/shell.c636 symbols
3rdparty/doctest/doctest/parts/doctest.cpp231 symbols
3rdparty/rapidjson/include/rapidjson/document.h229 symbols
3rdparty/doctest/doctest/doctest.h226 symbols
3rdparty/rapidjson/include/rapidjson/schema.h208 symbols
tests/deploy/main.cpp166 symbols
3rdparty/doctest/doctest/parts/doctest_fwd.h106 symbols
3rdparty/libwebsockets/lib/core-net/wsi.c102 symbols
3rdparty/libwebsockets/lib/core-net/private-lib-core-net.h96 symbols
3rdparty/rapidjson/include/rapidjson/reader.h87 symbols
3rdparty/libwebsockets/lib/tls/mbedtls/wrapper/library/ssl_lib.c77 symbols
tests/stubs/OcppConfigStub.h65 symbols

For agents

$ claude mcp add open-ocpp \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact

Ask about this repo answers extend the page