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