Skip to main content
EVerest uses YAML configuration files to define the module topology and connections. This guide provides production-ready examples from actual deployment scenarios.

Configuration Structure

EVerest configurations consist of:
  • active_modules: Defines which modules to load and their settings
  • config_module: Module-level configuration parameters
  • config_implementation: Implementation-specific settings
  • connections: Defines how modules communicate
  • x-module-layout: Visual layout metadata (optional)
All examples in this guide are taken from the EVerest Core repository’s config/ directory and represent tested, working configurations.

AC Charging Configuration

Basic AC Charger with ISO 15118

This configuration represents a single-connector AC charging station with ISO 15118-20 support.
active_modules:
  iso15118_charger:
    module: Evse15118D20
    config_module:
      device: auto
    connections:
      security:
        - module_id: evse_security
          implementation_id: main

  evse_manager:
    module: EvseManager
    config_module:
      ac_enforce_hlc: false
      ac_hlc_enabled: true
      ac_hlc_use_5percent: false
      ac_nominal_voltage: 230
      supported_iso_ac_bpt: true  # Bidirectional power transfer
      charge_mode: AC
      connector_id: 1
      evse_id: DE*PNX*E12345*1
      has_ventilation: true
      payment_enable_contract: false
      payment_enable_eim: true  # External identification means
      session_logging: true
      session_logging_path: /tmp/everest-logs
      bpt_channel: Unified
      bpt_generator_mode: GridFollowing
    connections:
      bsp:
        - module_id: connector_1_powerpath
          implementation_id: board_support
      hlc:
        - module_id: iso15118_charger
          implementation_id: charger
      slac:
        - module_id: slac
          implementation_id: evse
      ac_rcd:
        - implementation_id: rcd
          module_id: connector_1_powerpath
      connector_lock:
        - implementation_id: connector_lock
          module_id: connector_1_powerpath

  connector_1_powerpath:
    config_module:
      connector_id: 1
    module: YetiSimulator
    telemetry:
      id: 1

  slac:
    module: SlacSimulator

  auth:
    module: Auth
    config_module:
      connection_timeout: 10
      selection_algorithm: FindFirst
    connections:
      token_provider:
        - module_id: token_provider
          implementation_id: main
      token_validator:
        - module_id: token_validator
          implementation_id: main
      evse_manager:
        - module_id: evse_manager
          implementation_id: evse

  token_provider:
    module: DummyTokenProvider
    config_implementation:
      main:
        timeout: 10
        token: DEADBEEF
    connections:
      evse:
        - module_id: evse_manager
          implementation_id: evse

  token_validator:
    module: DummyTokenValidator
    config_implementation:
      main:
        validation_result: Accepted
        validation_reason: Token seems valid
        sleep: 0.25

  evse_security:
    module: EvseSecurity
    config_module:
      private_key_password: "123456"

  energy_manager:
    module: EnergyManager
    config_module:
      schedule_total_duration: 1
      schedule_interval_duration: 60
      debug: false
    connections:
      energy_trunk:
        - module_id: grid_connection_point
          implementation_id: energy_grid

  grid_connection_point:
    module: EnergyNode
    config_module:
      fuse_limit_A: 40.0
      phase_count: 3
    connections:
      energy_consumer:
        - module_id: api_sink
          implementation_id: energy_grid
      powermeter:
        - module_id: connector_1_powerpath
          implementation_id: powermeter

  api_sink:
    module: EnergyNode
    mapping:
      module:
        evse: 1
    config_module:
      fuse_limit_A: 32.0
      phase_count: 3
    connections:
      energy_consumer:
        - module_id: evse_manager
          implementation_id: energy_grid

  api:
    module: API
    connections:
      evse_manager:
        - module_id: evse_manager
          implementation_id: evse
      error_history:
        - module_id: error_history
          implementation_id: error_history
      evse_energy_sink:
        - module_id: api_sink
          implementation_id: external_limits

  error_history:
    module: ErrorHistory
    config_implementation:
      error_history:
        database_path: /tmp/error_history.db
Key Configuration Points:
  • ac_hlc_enabled: true enables high-level communication (ISO 15118)
  • supported_iso_ac_bpt: true enables bidirectional AC charging (V2G/V2H)
  • fuse_limit_A defines the grid connection capacity
  • payment_enable_eim: true allows Plug & Charge without pre-authorization

Hardware-Based AC Charger

Production configuration for Pionix ChargeBridge hardware:
connector_1:
  module: EvseManager
  config_module:
    connector_id: 1
    evse_id: DE*PNX*E12345*1
    charge_mode: AC
    ac_nominal_voltage: 230
    ac_hlc_enabled: true
    ac_enforce_hlc: true
    session_logging: true
    session_logging_path: /tmp/everest-logs
  connections:
    bsp:
      - implementation_id: main
        module_id: cb_bsp
    hlc:
      - implementation_id: charger
        module_id: iso15118_charger
    slac:
      - implementation_id: main
        module_id: slac
    ac_rcd:
      - implementation_id: rcd
        module_id: cb_bsp
    connector_lock:
      - implementation_id: connector_lock
        module_id: cb_bsp

cb_bsp:
  module: evse_board_support_API  # Hardware-specific BSP
  connections: {}

iso15118_charger:
  module: EvseV2G
  config_module:
    device: cb_plc  # ChargeBridge PLC device
    tls_security: prohibit
    supported_DIN70121: false
  connections:
    security:
      - module_id: evse_security
        implementation_id: main

slac:
  module: EvseSlac
  config_implementation:
    main:
      device: cb_plc
Replace YetiSimulator with your actual hardware module (e.g., evse_board_support_API) for production deployment.

DC Charging Configuration

ISO 15118-20 DC Charger

Complete DC fast charging configuration:
iso15118_charger:
  module: Evse15118D20
  config_module:
    device: auto
  connections:
    security:
      - module_id: evse_security
        implementation_id: main

evse_manager:
  module: EvseManager
  config_module:
    connector_id: 1
    evse_id: DE*PNX*E12345*1
    evse_id_din: 49A80737A45678
    session_logging: true
    session_logging_path: /tmp/everest-logs
    charge_mode: DC
    payment_enable_contract: false
    bpt_channel: Unified
    bpt_generator_mode: GridFollowing
  connections:
    bsp:
      - module_id: yeti_driver
        implementation_id: board_support
    powermeter_car_side:
      - module_id: powersupply_dc
        implementation_id: powermeter
    slac:
      - module_id: slac
        implementation_id: evse
    hlc:
      - module_id: iso15118_charger
        implementation_id: charger
    powersupply_DC:
      - module_id: powersupply_dc
        implementation_id: main
    imd:
      - module_id: imd
        implementation_id: main

powersupply_dc:
  module: DCSupplySimulator

imd:
  module: IMDSimulator
  config_implementation:
    main:
      selftest_success: true

yeti_driver:
  module: YetiSimulator
  config_module:
    connector_id: 1

slac:
  module: SlacSimulator
DC Charging Safety: Ensure proper configuration of:
  • Isolation monitoring (imd)
  • Emergency stop circuits
  • Pre-charge and contactor sequencing
  • Maximum voltage and current limits

OCPP Integration

OCPP 2.0.1 Configuration

Full OCPP 2.0.1 setup with two connectors:
ocpp:
  module: OCPP201
  connections:
    evse_manager:
      - module_id: evse_manager_1
        implementation_id: evse
      - module_id: evse_manager_2
        implementation_id: evse
    auth:
      - module_id: auth
        implementation_id: main
    system:
      - module_id: system
        implementation_id: main
    security:
      - module_id: evse_security
        implementation_id: main
    evse_energy_sink:
      - module_id: grid_connection_point
        implementation_id: external_limits
      - module_id: evse_manager_1_ocpp_sink
        implementation_id: external_limits
      - module_id: evse_manager_2_ocpp_sink
        implementation_id: external_limits
    reservation:
      - module_id: auth
        implementation_id: reservation
  access:
    config:
      allow_global_read: true
      allow_global_write: false
      allow_set_read_only: false
      modules:
        auth:
          allow_read: true
          allow_write: true
          allow_set_read_only: true

evse_security:
  module: EvseSecurity
  config_module:
    private_key_password: "123456"

persistent_store:
  module: PersistentStore

auth:
  module: Auth
  config_module:
    connection_timeout: 60
    selection_algorithm: FindFirst
  connections:
    token_provider:
      - module_id: token_provider_1
        implementation_id: main
      - module_id: ocpp
        implementation_id: auth_provider
    token_validator:
      - module_id: ocpp
        implementation_id: auth_validator
    evse_manager:
      - module_id: evse_manager_1
        implementation_id: evse
      - module_id: evse_manager_2
        implementation_id: evse
    kvs:
      - module_id: persistent_store
        implementation_id: main

system:
  module: System

OCPP 1.6 Configuration File

OCPP 1.6 uses JSON for protocol configuration:
{
  "Internal": {
    "ChargePointId": "cp001",
    "CentralSystemURI": "ws://csms.example.com:8180/ocpp/CP001",
    "ChargeBoxSerialNumber": "cp001",
    "ChargePointModel": "Yeti",
    "ChargePointVendor": "Pionix",
    "FirmwareVersion": "2024.3.0"
  },
  "Core": {
    "AuthorizeRemoteTxRequests": false,
    "HeartbeatInterval": 86400,
    "ConnectionTimeOut": 10,
    "NumberOfConnectors": 1,
    "MeterValueSampleInterval": 60,
    "MeterValuesAlignedData": "Energy.Active.Import.Register",
    "MeterValuesSampledData": "Energy.Active.Import.Register,Power.Active.Import,Current.Import,Voltage",
    "StopTransactionOnEVSideDisconnect": true,
    "UnlockConnectorOnEVSideDisconnect": true
  },
  "Security": {
    "SecurityProfile": 2
  },
  "PnC": {
    "ISO15118CertificateManagementEnabled": true,
    "ISO15118PnCEnabled": true,
    "ContractValidationOffline": true
  },
  "SmartCharging": {
    "ChargeProfileMaxStackLevel": 10,
    "ChargingScheduleMaxPeriods": 24,
    "MaxChargingProfilesInstalled": 20
  }
}
OCPP Security Profiles:
  • Profile 0: Unsecured WebSocket
  • Profile 1: Basic authentication over TLS
  • Profile 2: Client-side certificate authentication
  • Profile 3: TLS with mutual authentication (most secure)

Multi-Connector Configurations

Dual Connector Station

Configuration for a station with two independent charging points:
evse_manager_1:
  module: EvseManager
  mapping:
    module:
      evse: 1
  config_module:
    connector_id: 1
    evse_id: "1"
    connector_type: "cType2"
  connections:
    bsp:
      - module_id: yeti_driver_1
        implementation_id: board_support
    powermeter_grid_side:
      - module_id: yeti_driver_1
        implementation_id: powermeter

evse_manager_2:
  module: EvseManager
  mapping:
    module:
      evse: 2
  config_module:
    connector_id: 2
    evse_id: "2"
    connector_type: "cType2"
  connections:
    bsp:
      - module_id: yeti_driver_2
        implementation_id: board_support
    powermeter_grid_side:
      - module_id: yeti_driver_2
        implementation_id: powermeter

# Separate energy nodes for load balancing
evse_manager_1_api_sink:
  module: EnergyNode
  config_module:
    fuse_limit_A: 32.0
    phase_count: 3

evse_manager_2_api_sink:
  module: EnergyNode
  config_module:
    fuse_limit_A: 32.0
    phase_count: 3

grid_connection_point:
  module: EnergyNode
  config_module:
    fuse_limit_A: 40.0  # Total grid capacity
    phase_count: 3
  connections:
    energy_consumer:
      - module_id: evse_manager_1_api_sink
        implementation_id: energy_grid
      - module_id: evse_manager_2_api_sink
        implementation_id: energy_grid

Energy Management

Dynamic Load Balancing

energy_manager:
  module: EnergyManager
  config_module:
    switch_3ph1ph_while_charging_mode: Both
    switch_3ph1ph_max_nr_of_switches_per_session: 5
    switch_3ph1ph_time_hysteresis_s: 20
    switch_3ph1ph_power_hysteresis_W: 1000
    schedule_interval_duration: 60
    schedule_total_duration: 10
    debug: false
  connections:
    energy_trunk:
      - implementation_id: energy_grid
        module_id: grid_connection_point

grid_connection_point:
  module: EnergyNode
  config_module:
    fuse_limit_A: 63.0  # Grid connection limit
    phase_count: 3
Energy Management Features:
  • Automatic 3-phase to 1-phase switching based on load
  • Hysteresis to prevent rapid switching
  • Session-based switching limits
  • Time-based scheduling

Testing and Development

Simulation Configuration

For development without hardware:
active_modules:
  # All simulators for complete testing
  yeti_driver:
    module: YetiSimulator
    
  powersupply_dc:
    module: DCSupplySimulator
    
  slac:
    module: SlacSimulator
    
  imd:
    module: IMDSimulator
    
  token_provider:
    module: DummyTokenProvider
    
  token_validator:
    module: DummyTokenValidator

Configuration Validation

Validate your configuration before deployment:
# Check configuration syntax
/usr/bin/manager --check /path/to/config.yaml

# Run in dry-run mode
/usr/bin/manager --config /path/to/config.yaml --dryrun

# Enable debug logging
/usr/bin/manager --config /path/to/config.yaml --log-level debug

Next Steps

Module Reference

Detailed module configuration options

Security Setup

Configure certificates and TPM

OCPP Guide

Connect to CSMS backends

Hardware Setup

Configure hardware peripherals

Build docs developers (and LLMs) love