Skip to main content

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 under modules/ by category:
modules/
├── API/                 # API wrapper modules (23)
├── EVSE/                # Core EVSE modules (11)
├── EnergyManagement/    # Energy optimization (2)
├── HardwareDrivers/     # Hardware-specific drivers (50+)
├── BringUp/             # System initialization
├── Simulation/          # Test simulators
├── Testing/             # Test utilities
├── Examples/            # Example implementations
└── Misc/                # Utility modules

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)

ModuleDescriptionKey Interface
APIMain REST API moduleVarious
EvAPIEVSE management APIevse_manager
RpcApiJSON-RPC API interfaceVarious
auth_consumer_APIAuthentication consumer APIauth
auth_token_provider_APIToken provider APIauth_token_provider
auth_token_validator_APIToken validator APIauth_token_validator
dc_external_derate_consumer_APIDC derating consumer APIdc_external_derate
display_message_APIDisplay message APIdisplay_message
error_history_consumer_APIError history APIerror_history
ev_board_support_APIEV board support APIev_board_support
evse_board_support_APIEVSE board support APIevse_board_support
evse_manager_consumer_APIEVSE manager consumer APIevse_manager
external_energy_limits_consumer_APIEnergy limits consumer APIexternal_energy_limits
generic_error_raiser_APIGeneric error raisergeneric_error
isolation_monitor_APIIsolation monitor APIisolation_monitor
ocpp_consumer_APIOCPP consumer APIocpp
over_voltage_monitor_APIOver-voltage monitor APIover_voltage_monitor
power_supply_DC_APIDC power supply APIpower_supply_DC
powermeter_APIPowermeter APIpowermeter
session_cost_APISession cost APIsession_cost
session_cost_consumer_APISession cost consumer APIsession_cost
slac_APISLAC APIslac
system_APISystem APIsystem

EVSE Modules

Core EVSE functionality modules located in modules/EVSE/. These implement the primary charging station logic.
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
Location: modules/EVSE/EvseManagerProvides: evse_manager interfaceRequires:
  • evse_board_support - Hardware control
  • powermeter - Energy metering
  • Various optional interfaces
Description: Core EVSE state machine and charging kernel. Manages the complete charging session lifecycle for one physical connector.Key Features:
  • 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
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)
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
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
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
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
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
Location: modules/EVSE/IsoMuxDescription: Multiplexes ISO 15118 implementations for different protocol versions.Key Features:
  • Protocol version selection
  • Multiple ISO 15118 implementation support
Location: modules/EVSE/Iso15118InternetVasProvides: ISO15118_vas interfaceDescription: Value Added Services internet connectivity for ISO 15118.
Location: modules/EVSE/StaticISO15118VASProviderProvides: ISO15118_vas interfaceDescription: Static VAS configuration provider.

Energy Management Modules

Energy optimization modules located in modules/EnergyManagement/.
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
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_support

MicroMegaWattBSP

MicroMegaWatt EVSE hardware driverInterface: evse_board_support

PhyVersoBSP

PhyVerso EVSE board supportInterface: evse_board_support

TIDA010939

Texas Instruments TIDA-010939 reference designInterface: evse_board_support

AdAcEvse22KwzKitBSP

AD EVSE 22kW board supportInterface: evse_board_support

EV Hardware Drivers

Location: modules/HardwareDrivers/EV/

YetiEvDriver

Yeti EV simulator driverInterface: ev_board_support

Power Meter Drivers

Location: modules/HardwareDrivers/PowerMeters/

AST_DC650

AST DC650 power meter driverInterface: powermeter

PowermeterSimulator

Simulated power meter for testingInterface: powermeter

Isolation Monitor Drivers

Location: modules/HardwareDrivers/IsolationMonitors/

Bender_isoCHA425HV

Bender isoCHA425HV isolation monitorInterface: isolation_monitor

DoldRN5893

Dold RN5893 isolation monitorInterface: isolation_monitor

NFC Reader Drivers

Location: modules/HardwareDrivers/NfcReaders/

PN532TokenProvider

PN532 NFC reader driverInterface: auth_token_provider

PN7160TokenProvider

PN7160 NFC reader driverInterface: auth_token_provider

NxpNfcFrontendTokenProvider

NXP NFC frontend driverInterface: auth_token_provider

Payment Terminal Drivers

Location: modules/HardwareDrivers/Payment/

RsPaymentTerminal

RS payment terminal driverInterface: payment_terminal

BringUp 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 a manifest.yaml file:
description: Human-readable module description

provides:                      # Interfaces this module implements
  implementation_name:
    interface: interface_name
    description: Implementation description

requires:                      # Required interfaces
  requirement_name:
    interface: interface_name

metadata:                      # Module metadata
  license: Apache-2.0
  authors:
    - Author Name

enable_external_mqtt: false    # External MQTT support

Finding Modules

By Interface

To find modules that implement a specific interface:
  1. Search for interface: <interface_name> in manifest.yaml files
  2. Look in the category directories most likely to contain that implementation
  3. 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:
  1. Check modules/HardwareDrivers/ subdirectories
  2. Look for vendor/model-specific drivers
  3. Consider generic simulators for initial development

Module Dependencies

Modules declare dependencies via the requires section. The EVerest runtime:
  1. Validates all requirements are satisfied
  2. Connects module implementations to requirements
  3. Ensures proper initialization order
  4. Provides type-safe communication

Next Steps

Build docs developers (and LLMs) love