Overview
EVerest Core provides 50+ modules organized into functional categories. Each module:- Implements one or more interfaces
- Requires other interfaces as dependencies
- Configures via module-specific configuration options
- Connects to other modules at runtime
Module Organization
Modules are organized in the source tree undermodules/ by category:
API Modules
API modules are located in
modules/API/ and provide simplified interfaces for external integration. These modules typically consume other module interfaces and expose them via standardized APIs.Available API Modules (23 total)
| Module | Description | Key Interface |
|---|---|---|
| API | Main REST API module | Various |
| EvAPI | EVSE management API | evse_manager |
| RpcApi | JSON-RPC API interface | Various |
| auth_consumer_API | Authentication consumer API | auth |
| auth_token_provider_API | Token provider API | auth_token_provider |
| auth_token_validator_API | Token validator API | auth_token_validator |
| dc_external_derate_consumer_API | DC derating consumer API | dc_external_derate |
| display_message_API | Display message API | display_message |
| error_history_consumer_API | Error history API | error_history |
| ev_board_support_API | EV board support API | ev_board_support |
| evse_board_support_API | EVSE board support API | evse_board_support |
| evse_manager_consumer_API | EVSE manager consumer API | evse_manager |
| external_energy_limits_consumer_API | Energy limits consumer API | external_energy_limits |
| generic_error_raiser_API | Generic error raiser | generic_error |
| isolation_monitor_API | Isolation monitor API | isolation_monitor |
| ocpp_consumer_API | OCPP consumer API | ocpp |
| over_voltage_monitor_API | Over-voltage monitor API | over_voltage_monitor |
| power_supply_DC_API | DC power supply API | power_supply_DC |
| powermeter_API | Powermeter API | powermeter |
| session_cost_API | Session cost API | session_cost |
| session_cost_consumer_API | Session cost consumer API | session_cost |
| slac_API | SLAC API | slac |
| system_API | System API | system |
EVSE Modules
Core EVSE functionality modules located in
modules/EVSE/. These implement the primary charging station logic.Auth - Authentication Module
Auth - Authentication Module
Location:
modules/EVSE/AuthProvides: auth interfaceDescription: Central authentication and authorization framework. Manages token validation, authorization workflows, and connector selection.Key Features:- Token validation orchestration
- Multiple token provider support
- Connector selection algorithms (UserInput, PlugEvents, FindFirst)
- Connection timeout management
- Master pass group support
- Reservation integration
EvseManager - EVSE Charging Kernel
EvseManager - EVSE Charging Kernel
Location:
modules/EVSE/EvseManagerProvides: evse_manager interfaceRequires:evse_board_support- Hardware controlpowermeter- Energy metering- Various optional interfaces
- IEC 61851-1 state machine (A-F states)
- Session management (plug-in to plug-out)
- Authorization integration
- Energy management integration
- Transaction handling
- Pause/resume charging
- Connector locking
- Telemetry and monitoring
EvseV2G - ISO 15118 Implementation
EvseV2G - ISO 15118 Implementation
Location:
modules/EVSE/EvseV2GProvides: ISO15118_charger interfaceDescription: Complete ISO 15118-2 and ISO 15118-20 implementation for charger side.Key Features:- ISO 15118-2 (DIN SPEC 70121, ISO 15118-2:2014)
- ISO 15118-20 (AC and DC)
- Plug & Charge support
- EIM (External Identification Means)
- Certificate handling
- AC and DC charging
- Bidirectional power transfer (BPT)
Evse15118D20 - ISO 15118-20 Module
Evse15118D20 - ISO 15118-20 Module
Location:
modules/EVSE/Evse15118D20Provides: ISO15118_charger interfaceDescription: ISO 15118-20 specific implementation with modern features.Key Features:- ISO 15118-20 AC dynamic mode
- ISO 15118-20 DC dynamic mode
- Enhanced scheduling
- Advanced BPT support
EvseSecurity - Certificate Management
EvseSecurity - Certificate Management
Location:
modules/EVSE/EvseSecurityProvides: evse_security interfaceDescription: Certificate lifecycle management for ISO 15118 and OCPP.Key Features:- V2G certificate management
- OCPP CSMS certificate management
- Certificate installation and updates
- Certificate validation (chain, expiry)
- OCSP support
- Private key management
EvseSlac - SLAC Implementation
EvseSlac - SLAC Implementation
Location:
modules/EVSE/EvseSlacProvides: slac interfaceDescription: Signal Level Attenuation Characterization for PLC matching.Key Features:- SLAC matching (ISO 15118-3)
- Network association
- Link quality measurement
- Connection retry logic
OCPP - OCPP 1.6 Implementation
OCPP - OCPP 1.6 Implementation
Location:
modules/EVSE/OCPPProvides: ocpp_1_6_charge_point interfaceDescription: Open Charge Point Protocol 1.6J implementation.Key Features:- OCPP 1.6 JSON
- Core profile
- Smart Charging profile
- Reservation profile
- Remote trigger profile
- Firmware management
OCPP201 - OCPP 2.0.1 Implementation
OCPP201 - OCPP 2.0.1 Implementation
Location:
modules/EVSE/OCPP201Provides: ocpp interfaceDescription: Open Charge Point Protocol 2.0.1 implementation.Key Features:- OCPP 2.0.1
- Device model
- ISO 15118 integration
- Advanced security profile
- Display messages
- Tariff and cost messages
IsoMux - ISO 15118 Multiplexer
IsoMux - ISO 15118 Multiplexer
Location:
modules/EVSE/IsoMuxDescription: Multiplexes ISO 15118 implementations for different protocol versions.Key Features:- Protocol version selection
- Multiple ISO 15118 implementation support
Iso15118InternetVas - VAS Internet Integration
Iso15118InternetVas - VAS Internet Integration
Location:
modules/EVSE/Iso15118InternetVasProvides: ISO15118_vas interfaceDescription: Value Added Services internet connectivity for ISO 15118.StaticISO15118VASProvider - Static VAS
StaticISO15118VASProvider - Static VAS
Location:
modules/EVSE/StaticISO15118VASProviderProvides: ISO15118_vas interfaceDescription: Static VAS configuration provider.Energy Management Modules
Energy optimization modules located in
modules/EnergyManagement/.EnergyManager - Energy Optimization
EnergyManager - Energy Optimization
Location:
modules/EnergyManagement/EnergyManagerProvides: energy_manager interfaceDescription: Central energy optimization and load balancing.Key Features:- Multi-EVSE load balancing
- Grid connection limit enforcement
- Energy tree management
- Schedule optimization
- Price-based optimization
- Solar integration
- Peak shaving
EnergyNode - Energy Tree Node
EnergyNode - Energy Tree Node
Location:
modules/EnergyManagement/EnergyNodeProvides: energy interfaceDescription: Energy tree node implementation for hierarchical energy management.Key Features:- Energy flow aggregation
- Limit propagation
- Conversion efficiency modeling
- Multi-level energy trees
Hardware Driver Modules
Hardware-specific implementations in
modules/HardwareDrivers/. These modules interface with actual hardware devices.EVSE Hardware Drivers
Location:modules/HardwareDrivers/EVSE/
YetiDriver
Yeti EVSE board support packageInterface:
evse_board_supportMicroMegaWattBSP
MicroMegaWatt EVSE hardware driverInterface:
evse_board_supportPhyVersoBSP
PhyVerso EVSE board supportInterface:
evse_board_supportTIDA010939
Texas Instruments TIDA-010939 reference designInterface:
evse_board_supportAdAcEvse22KwzKitBSP
AD EVSE 22kW board supportInterface:
evse_board_supportEV Hardware Drivers
Location:modules/HardwareDrivers/EV/
YetiEvDriver
Yeti EV simulator driverInterface:
ev_board_supportPower Meter Drivers
Location:modules/HardwareDrivers/PowerMeters/
AST_DC650
AST DC650 power meter driverInterface:
powermeterPowermeterSimulator
Simulated power meter for testingInterface:
powermeterIsolation Monitor Drivers
Location:modules/HardwareDrivers/IsolationMonitors/
Bender_isoCHA425HV
Bender isoCHA425HV isolation monitorInterface:
isolation_monitorDoldRN5893
Dold RN5893 isolation monitorInterface:
isolation_monitorNFC Reader Drivers
Location:modules/HardwareDrivers/NfcReaders/
PN532TokenProvider
PN532 NFC reader driverInterface:
auth_token_providerPN7160TokenProvider
PN7160 NFC reader driverInterface:
auth_token_providerNxpNfcFrontendTokenProvider
NXP NFC frontend driverInterface:
auth_token_providerPayment Terminal Drivers
Location:modules/HardwareDrivers/Payment/
RsPaymentTerminal
RS payment terminal driverInterface:
payment_terminalBringUp Modules
Location:modules/BringUp/
System initialization and configuration modules for hardware bring-up and testing.
Simulation Modules
Location:modules/Simulation/
Simulators for testing and development:
- JsCarSimulator - JavaScript-based EV simulator
- JsDCSupplySimulator - DC power supply simulator
- JsPowerMeter - Power meter simulator
- JsSlacSimulator - SLAC simulator
- PersistentStore - Persistent storage simulator
Testing Modules
Location:modules/Testing/
Test utilities and frameworks for module testing.
Example Modules
Location:modules/Examples/
Example module implementations for learning and reference.
Misc Modules
Location:modules/Misc/
Utility modules for various purposes:
- PowerSupplyDC - DC power supply utilities
- PointOfSale - Point of sale integration
- Others - Various utility modules
Module Manifest Format
Each module has amanifest.yaml file:
Finding Modules
By Interface
To find modules that implement a specific interface:- Search for
interface: <interface_name>inmanifest.yamlfiles - Look in the category directories most likely to contain that implementation
- Check the Interface Reference for interface documentation
By Functionality
Browse modules by category:- API Integration: Start with
modules/API/ - Core EVSE: Look in
modules/EVSE/ - Energy Management: Check
modules/EnergyManagement/ - Hardware-specific: Browse
modules/HardwareDrivers/
By Hardware
If you have specific hardware:- Check
modules/HardwareDrivers/subdirectories - Look for vendor/model-specific drivers
- Consider generic simulators for initial development
Module Dependencies
Modules declare dependencies via therequires section. The EVerest runtime:
- Validates all requirements are satisfied
- Connects module implementations to requirements
- Ensures proper initialization order
- Provides type-safe communication
Next Steps
- Learn to Create Custom Modules
- Understand Module Configuration
- Review Interface Definitions
- Explore Type Definitions