Documentation Index Fetch the complete documentation index at: https://mintlify.com/EVerest/everest-core/llms.txt
Use this file to discover all available pages before exploring further.
EVerest provides comprehensive OCPP support through two dedicated modules for communication with Central System Management Systems (CSMS). These modules enable charging stations to integrate with backend platforms for remote management, billing, and monitoring.
OCPP modules are located at modules/EVSE/OCPP/ (OCPP 1.6) and modules/EVSE/OCPP201/ (OCPP 2.0.1). OCPP 2.1 library support is in development at lib/everest/ocpp/lib/ocpp/v21/.
Available OCPP Modules
OCPP 1.6 Mature OCPP-J 1.6 implementation with full feature support
OCPP 2.0.1 Latest OCPP 2.0.1 standard with enhanced features
OCPP 1.6 Module
The OCPP module implements OCPP-J 1.6 (JSON over WebSocket) charge point functionality.
Key Features
WebSocket-based communication with CSMS
Remote monitoring and control
Smart charging with composite schedules
Remote firmware updates
Authorization management
Transaction handling and MeterValues
Configuration management
Reservation support
ISO 15118 Plug & Charge extensions
OCPP 1.6 Configuration
ChargePointConfigPath
string
default: "ocpp-config.json"
Path to the OCPP configuration file. Libocpp defines a JSON schema for this file. Refer to the libocpp documentation for detailed configuration options.
UserConfigPath
string
default: "user_config.json"
Path to the OCPP user config. Used as an overlay for the original config. Changes from CSMS are written here.
DatabasePath
string
default: "/tmp/ocpp_1_6_charge_point"
Path to the persistent SQLite database directory Use a persistent location (not /tmp) in production to retain transaction data across reboots.
MessageLogPath
string
default: "/tmp/everest_ocpp_logs"
Directory where logs of all OCPP messages are written
EnableExternalWebsocketControl
Allow external WebSocket connect/disconnect control For debug and testing only. Do not enable in production.
PublishChargingScheduleIntervalS
Interval in seconds for publishing charging schedules. Set to 0 to publish only on changes.
PublishChargingScheduleDurationS
Duration in seconds for requested charging schedules (from now)
RequestCompositeScheduleUnit
Unit for composite schedules: A (Amps) or W (Watts) Use Amps for AC charging stations and Watts for DC charging stations.
Delay in seconds before resuming message queue after reconnect. Required for some OCTT test cases.
OCPP 1.6 Provided Interfaces
main (ocpp_1_6_charge_point)
Main OCPP 1.6 charge point interface providing:
Connection management
Transaction handling
Remote operations
Status notifications
auth_validator (auth_token_validator)
Validates auth tokens with the CSMS via RemoteStartTransaction and authorization cache
auth_provider (auth_token_provider)
Provides auth tokens received from CSMS remote start requests
data_transfer (ocpp_data_transfer)
Custom data transfer towards the CSMS
Generic OCPP interface for common operations
session_cost (session_cost)
Send session cost information to connected modules
OCPP 1.6 Required Interfaces
evse_manager (evse_manager)
Required : 1 to 128 EVSE managersConnects to EvseManager instances representing physical connectors.
Required : Authentication moduleHandles authorization requests and token validation.
Required : System operationsProvides system-level operations like reset and firmware updates.
Required : Security and certificate managementHandles TLS certificates and security profiles.
reservation (reservation)
Required : Reservation managementHandles reservation requests from CSMS.
OCPP 2.0.1 Module
The OCPP201 module implements the latest OCPP 2.0.1 specification.
OCPP 2.0.1 Features
Device model with component/variable architecture
Enhanced security profiles
Transaction events instead of simple start/stop
Improved smart charging (schedules v2)
Display message support
ISO 15118 certificate management
Get/Set variable operations
Custom data support
OCPP 2.0.1 Configuration
CoreDatabasePath
string
default: "/tmp/ocpp201"
Path to the persistent SQLite database directory Use a persistent location in production.
DeviceModelDatabasePath
string
default: "device_model_storage.db"
Path to the SQLite database for the device model
EverestDeviceModelDatabasePath
string
default: "everest_device_model_storage.db"
Database for EVerest-specific device model components (EVSE, Connector) not managed by libocpp
DeviceModelDatabaseMigrationPath
string
default: "device_model_migrations"
Path to device model database migration files
DeviceModelConfigPath
string
default: "component_config"
Path to device model component config directory Libocpp defines the schema for these configuration files.
MessageLogPath
string
default: "/tmp/everest_ocpp_logs"
Directory for OCPP message logs
CompositeScheduleIntervalS
Interval for publishing composite schedules. Set to 0 for publish on change only.
RequestCompositeScheduleDurationS
Duration in seconds for composite schedule requests
RequestCompositeScheduleUnit
Unit for composite schedules: A (Amps) or W (Watts)
OCPP 2.0.1 Provided Interfaces
auth_validator (auth_token_validator)
Validates tokens using CSMS, AuthorizationList, or AuthorizationCache
auth_provider (auth_token_provider)
Provides authorization requests initiated by CSMS
data_transfer (ocpp_data_transfer)
Custom data transfer to CSMS
Generic OCPP interface
session_cost (session_cost)
Session cost information
OCPP 2.0.1 Required Interfaces
Similar to OCPP 1.6 but with optional reservation support:
evse_manager (1-128 connections) - EVSE management
system - System operations
security - Certificate management
auth - Authentication
reservation (optional) - Reservation handling
display_message (optional) - Display message support
Configuration Examples
OCPP 1.6 Setup
active_modules :
ocpp :
module : OCPP
config :
ChargePointConfigPath : config/ocpp-config.json
UserConfigPath : user_data/user_config.json
DatabasePath : /persistent/ocpp_db
MessageLogPath : /var/log/ocpp
RequestCompositeScheduleUnit : A
PublishChargingScheduleIntervalS : 30
connections :
evse_manager :
- evse_manager_1
auth : auth_manager
system : system_module
security : evse_security
reservation : auth_manager
OCPP 2.0.1 Setup
active_modules :
ocpp201 :
module : OCPP201
config :
CoreDatabasePath : /persistent/ocpp201
DeviceModelDatabasePath : /persistent/device_model.db
DeviceModelConfigPath : config/component_config
MessageLogPath : /var/log/ocpp201
CompositeScheduleIntervalS : 30
RequestCompositeScheduleUnit : A
connections :
evse_manager :
- evse_manager_1
- evse_manager_2
auth : auth_manager
system : system_module
security : evse_security
OCPP Configuration File
Both modules require an OCPP configuration JSON file. Example structure:
{
"Internal" : {
"ChargePointId" : "CP001" ,
"CentralSystemURI" : "wss://csms.example.com/ocpp" ,
"ChargeBoxSerialNumber" : "SN123456" ,
"ChargePointModel" : "EVerest" ,
"ChargePointVendor" : "Pionix"
},
"Core" : {
"AuthorizeRemoteTxRequests" : true ,
"ClockAlignedDataInterval" : 900 ,
"MeterValueSampleInterval" : 60 ,
"NumberOfConnectors" : 1
},
"Security" : {
"SecurityProfile" : 3 ,
"AuthorizationKey" : "your-auth-key"
}
}
Smart Charging
Both OCPP modules support smart charging:
CSMS Sends Schedule
Central system sends charging profile via SetChargingProfile (1.6) or SetChargingProfileRequest (2.0.1)
Module Processes
OCPP module validates and stores the charging profile
Composite Schedule
Module calculates composite schedule from all active profiles
Energy Limits
Publishes limits to EvseManager via evse_energy_sink interface
Security Profiles
OCPP 1.6 Security
Profile 0 : Unsecured HTTP (development only)
Profile 1 : Basic Authentication over HTTP
Profile 2 : TLS with Basic Authentication
Profile 3 : TLS with Client Certificates
OCPP 2.0.1 Security
Security Profile 1 : TLS with Basic Authentication
Security Profile 2 : TLS with Client Certificates
Security Profile 3 : TLS with Client Certificates + Enhanced Security
Always use Security Profile 2 or 3 in production environments. Profile 0 and 1 are not secure.
Message Logging
Both modules support detailed message logging:
# Enable message logging
MessageLogPath: /var/log/ocpp
# Log format: one file per day
/var/log/ocpp/
├── 2026-03-04.log
├── 2026-03-05.log
└── 2026-03-06.log
Logs include:
All OCPP messages (requests and responses)
WebSocket connection events
Transaction events
Error conditions
Integration with Auth Module
OCPP modules integrate with the Auth module:
active_modules :
auth :
module : Auth
connections :
token_provider :
- ocpp # OCPP provides tokens from remote start
token_validator :
- ocpp # OCPP validates tokens with CSMS
evse_manager :
- evse_manager_1
Troubleshooting
WebSocket Connection Issues
Verify CentralSystemURI in config
Check network connectivity and firewall rules
Review TLS certificate configuration
Check message logs for connection errors
Verify CSMS authorization cache
Check AuthorizeRemoteTxRequests setting
Review auth_validator connection to Auth module
Enable message logging to see authorization responses
Smart Charging Not Working
Verify evse_energy_sink connections
Check composite schedule calculation
Review charging profile validity periods
Enable schedule publishing logs
Authentication Auth module integration
EvseManager EVSE management and control
ISO 15118 Plug & Charge integration
EvseSecurity Certificate management
Additional Resources
Source Code Reference
OCPP 1.6 :
modules/EVSE/OCPP/OCPP.cpp - Main implementation
modules/EVSE/OCPP/manifest.yaml - Module configuration
modules/EVSE/OCPP/conversions.cpp - Type conversions
OCPP 2.0.1 :
modules/EVSE/OCPP201/OCPP201.cpp - Main implementation
modules/EVSE/OCPP201/manifest.yaml - Module configuration
modules/EVSE/OCPP201/transaction_handler.cpp - Transaction management