Skip to main content

Overview

EVerest Core provides 50+ interfaces that define communication contracts between modules. Each interface specifies:
  • Commands (cmds): RPC-style function calls with arguments and return values
  • Variables (vars): Publish-subscribe data streams
  • Errors: Error types that can be raised

Interface Categories

Core interfaces for EVSE control and management.

evse_manager

Description: Main EVSE charging kernel interface representing one physical connector.Source: interfaces/evse_manager.yamlKey Commands:
  • get_evse - Get EVSE and connector information
  • enable_disable - Enable/disable the EVSE
  • authorize_response - Report authorization result
  • reserve - Reserve the EVSE
  • pause_charging / resume_charging - Control charging state
  • stop_transaction - Stop active transaction
  • force_unlock - Force connector unlock
Key Variables:
  • session_event - Session-related events
  • limits - Current EVSE limits
  • ev_info - EV details
  • powermeter - Power measurements
  • ready - EVSE ready state
Error Reference: /errors/evse_manager

evse_board_support

Description: Hardware abstraction interface for EVSE board support packages.Source: interfaces/evse_board_support.yamlProvides low-level hardware control for EVSE implementations.

evse_security

Description: Certificate and security management for EVSE.Source: interfaces/evse_security.yamlHandles certificate installation, validation, and security operations.

connector_lock

Description: Physical connector locking mechanism control.Source: interfaces/connector_lock.yamlControls physical locking/unlocking of charging connectors.
High-level communication protocol interfaces.

ISO15118_charger

Description: ISO 15118 charger-side communication interface.Source: interfaces/ISO15118_charger.yamlKey Commands:
  • setup - Initialize with EVSE ID and configuration
  • set_charging_parameters - Set AC/DC charging parameters
  • session_setup - Configure payment options and services
  • bpt_setup - Configure bidirectional power transfer
  • authorization_response - Respond to authorization requests
  • update_energy_transfer_modes - Update supported transfer modes
  • update_dc_maximum_limits / update_dc_minimum_limits - Set DC limits
  • update_ac_max_current - Set AC current limits
  • cable_check_finished - Signal cable check completion
  • dlink_ready - Signal data link ready (SLAC)
Key Variables:
  • require_auth_eim - EIM authorization required
  • require_auth_pnc - Plug & Charge authorization required
  • selected_payment_option - Payment method selected by EV
  • requested_energy_transfer_mode - Transfer mode requested by EVCC
  • dc_ev_target_voltage_current - Target charging values
  • ac_ev_max_current / ac_ev_max_voltage - AC EV limits
  • current_demand_started / current_demand_finished - Charging state
  • v2g_messages - Debug V2G message stream

ISO15118_ev

Description: ISO 15118 electric vehicle-side communication interface.Source: interfaces/ISO15118_ev.yamlEV-side implementation for ISO 15118 communication.

slac

Description: Signal Level Attenuation Characterization interface.Source: interfaces/slac.yamlHandles SLAC matching for PLC communication establishment.

power

Description: Power line communication interface.Source: interfaces/power.yamlLow-level PLC control and monitoring.
User authentication and access control interfaces.

auth

Description: Main authentication framework interface.Source: interfaces/auth.yamlKey Commands:
  • set_connection_timeout - Configure connection timeout (10-300s)
  • set_master_pass_group_id - Configure master pass group
  • withdraw_authorization - Withdraw granted authorization
Key Variables:
  • token_validation_status - Current token validation events
Error Reference: /errors/generic

auth_token_provider

Description: Token provisioning interface for authentication sources.Source: interfaces/auth_token_provider.yamlProvides tokens from various sources (RFID, autocharge, PnC, etc.).

auth_token_validator

Description: Token validation interface.Source: interfaces/auth_token_validator.yamlValidates provided tokens against authorization databases.

reservation

Description: Reservation management interface.Source: interfaces/reservation.yamlHandles EVSE reservation and reservation cancellation.
Energy flow control and optimization interfaces.

energy

Description: Internal energy management interface between nodes.Source: interfaces/energy.yamlKey Commands:
  • enforce_limits - Enforce energy limits from EnergyManager
Key Variables:
  • energy_flow_request - Request energy import/export flow
Key Types:
  • EnergyFlowRequest - Complete energy request structure
  • EnforcedLimits - Enforced limit response
  • LimitsReq / LimitsRes - Request/response limits
  • ScheduleReqEntry - Time series schedule entry

energy_manager

Description: Energy manager control interface.Source: interfaces/energy_manager.yamlHigh-level energy optimization and management.

external_energy_limits

Description: External energy limit constraints interface.Source: interfaces/external_energy_limits.yamlAllows external systems to impose energy limits.

energy_price_information

Description: Energy pricing information interface.Source: interfaces/energy_price_information.yamlProvides dynamic pricing data for energy optimization.
Power measurement and monitoring interfaces.

powermeter

Description: Generic power meter interface for 5-wire TN networks.Source: interfaces/powermeter.yamlKey Commands:
  • start_transaction - Start signed metering transaction (Eichrecht)
  • stop_transaction - Stop transaction and get signed data
Key Variables:
  • powermeter - Measured dataset (voltage, current, power, energy)
  • public_key_ocmf - Public key for OCMF validation
Error Reference: /errors/powermeter

isolation_monitor

Description: DC isolation monitoring interface.Source: interfaces/isolation_monitor.yamlMonitors DC isolation for safety.

ac_rcd

Description: AC residual current detection interface.Source: interfaces/ac_rcd.yamlDetects AC fault currents for safety.

over_voltage_monitor

Description: Over-voltage monitoring and protection.Source: interfaces/over_voltage_monitor.yamlMonitors for over-voltage conditions.
Open Charge Point Protocol interfaces.

ocpp

Description: OCPP 2.0.1 charge point interface.Source: interfaces/ocpp.yamlComplete OCPP 2.0.1 implementation interface.

ocpp_1_6_charge_point

Description: OCPP 1.6 charge point interface.Source: interfaces/ocpp_1_6_charge_point.yamlLegacy OCPP 1.6 support.

ocpp_data_transfer

Description: OCPP data transfer interface.Source: interfaces/ocpp_data_transfer.yamlVendor-specific data transfer via OCPP.
User interface and display interfaces.

display_message

Description: Display message interface for user notifications.Source: interfaces/display_message.yamlShows messages and status to users.

charger_information

Description: Charger information and capabilities interface.Source: interfaces/charger_information.yamlProvides static charger information.
Low-level hardware control interfaces.

power_supply_DC

Description: DC power supply control interface.Source: interfaces/power_supply_DC.yamlControls DC power supplies for DC charging.

dc_external_derate

Description: External DC derating interface.Source: interfaces/dc_external_derate.yamlAllows external derating of DC power.

ev_board_support

Description: EV board support interface.Source: interfaces/ev_board_support.yamlHardware abstraction for EV simulators.
Payment and session management interfaces.

payment_terminal

Description: Payment terminal interface.Source: interfaces/payment_terminal.yamlIntegrates payment terminal hardware.

bank_session_token_provider

Description: Bank card session token provider.Source: interfaces/bank_session_token_provider.yamlProvides tokens from bank card transactions.

session_cost

Description: Session cost calculation interface.Source: interfaces/session_cost.yamlCalculates and tracks charging session costs.
System-level and utility interfaces.

system

Description: System-level operations interface.Source: interfaces/system.yamlSystem firmware updates, logs, and configuration.

error_history

Description: Error history tracking interface.Source: interfaces/error_history.yamlMaintains error history and logs.

kvs

Description: Key-value storage interface.Source: interfaces/kvs.yamlPersistent configuration storage.

debug_json

Description: JSON debug interface.Source: interfaces/debug_json.yamlDebug data in JSON format.
Testing and example interfaces.

example

Description: Example interface for tutorials.Source: interfaces/example.yamlSimple example interface demonstrating concepts.

test_control

Description: Test control interface.Source: interfaces/test_control.yamlControls test scenarios and simulations.

car_simulator

Description: EV simulator control interface.Source: interfaces/car_simulator.yamlControls electric vehicle simulators.

Complete Interface List

All 50 interfaces available in EVerest Core:
InterfaceDescriptionSource File
ISO15118_chargerISO 15118 charger-side interfaceinterfaces/ISO15118_charger.yaml
ISO15118_evISO 15118 EV-side interfaceinterfaces/ISO15118_ev.yaml
ISO15118_vasISO 15118 VAS (Value Added Services)interfaces/ISO15118_vas.yaml
ac_rcdAC residual current detectioninterfaces/ac_rcd.yaml
authAuthentication frameworkinterfaces/auth.yaml
auth_token_providerAuthentication token providerinterfaces/auth_token_provider.yaml
auth_token_validatorAuthentication token validatorinterfaces/auth_token_validator.yaml
bank_session_token_providerBank card token providerinterfaces/bank_session_token_provider.yaml
car_simulatorElectric vehicle simulatorinterfaces/car_simulator.yaml
charger_informationCharger static informationinterfaces/charger_information.yaml
connector_lockConnector locking mechanisminterfaces/connector_lock.yaml
dc_external_derateDC external deratinginterfaces/dc_external_derate.yaml
debug_jsonJSON debug interfaceinterfaces/debug_json.yaml
display_messageDisplay and user messagesinterfaces/display_message.yaml
emptyEmpty interface templateinterfaces/empty.yaml
energyInternal energy managementinterfaces/energy.yaml
energy_managerEnergy manager controlinterfaces/energy_manager.yaml
energy_price_informationEnergy pricing datainterfaces/energy_price_information.yaml
error_historyError history trackinginterfaces/error_history.yaml
ev_board_supportEV board support packageinterfaces/ev_board_support.yaml
ev_managerEV manager interfaceinterfaces/ev_manager.yaml
ev_slacEV-side SLACinterfaces/ev_slac.yaml
evse_board_supportEVSE board support packageinterfaces/evse_board_support.yaml
evse_managerEVSE charging kernelinterfaces/evse_manager.yaml
evse_securityEVSE security and certificatesinterfaces/evse_security.yaml
exampleExample interfaceinterfaces/example.yaml
example_error_frameworkExample error frameworkinterfaces/example_error_framework.yaml
example_userExample user interfaceinterfaces/example_user.yaml
external_energy_limitsExternal energy limitsinterfaces/external_energy_limits.yaml
generic_errorGeneric error interfaceinterfaces/generic_error.yaml
iso15118_extensionsISO 15118 extensionsinterfaces/iso15118_extensions.yaml
isolation_monitorDC isolation monitoringinterfaces/isolation_monitor.yaml
kvsKey-value storageinterfaces/kvs.yaml
ocppOCPP 2.0.1 interfaceinterfaces/ocpp.yaml
ocpp_1_6_charge_pointOCPP 1.6 interfaceinterfaces/ocpp_1_6_charge_point.yaml
ocpp_data_transferOCPP data transferinterfaces/ocpp_data_transfer.yaml
over_voltage_monitorOver-voltage monitoringinterfaces/over_voltage_monitor.yaml
payment_terminalPayment terminal hardwareinterfaces/payment_terminal.yaml
powerPower line communicationinterfaces/power.yaml
power_supply_DCDC power supply controlinterfaces/power_supply_DC.yaml
powermeterGeneric power meterinterfaces/powermeter.yaml
reservationEVSE reservationinterfaces/reservation.yaml
serial_communication_hubSerial communication hubinterfaces/serial_communication_hub.yaml
session_costSession cost calculationinterfaces/session_cost.yaml
slacSLAC (charger-side)interfaces/slac.yaml
solar_forecastSolar generation forecastinterfaces/solar_forecast.yaml
systemSystem operationsinterfaces/system.yaml
test_controlTest scenario controlinterfaces/test_control.yaml
tibber_price_forecastTibber price forecastinterfaces/tibber_price_forecast.yaml
uk_random_delayUK smart charging delayinterfaces/uk_random_delay.yaml

Interface Definition Format

Each interface YAML file contains:
description: Human-readable interface description

cmds:                           # Commands (RPC calls)
  command_name:
    description: Command description
    arguments:                  # Input parameters
      arg_name:
        description: Argument description
        type: string           # or object, array, number, integer, boolean
        $ref: /type#/TypeName  # Reference to type definition
    result:                     # Return value (optional)
      description: Result description
      type: object
      $ref: /type#/TypeName

vars:                           # Variables (pub-sub)
  variable_name:
    description: Variable description
    type: object
    $ref: /type#/TypeName

errors:                         # Error references
  - reference: /errors/error_file

Using Interfaces

In Module Manifests

Modules declare which interfaces they provide and require:
# manifest.yaml
provides:                     # Interfaces this module implements
  main:                       # Implementation name
    interface: evse_manager   # Interface name
    description: Main EVSE manager implementation

requires:                     # Interfaces this module depends on
  bsp:                        # Requirement name
    interface: evse_board_support
  powermeter:                 
    interface: powermeter

Type Safety

All commands and variables use strongly-typed data structures defined in the types/ directory. This ensures:
  • Compile-time type checking in C++ implementations
  • Runtime validation of data structures
  • Clear API contracts between modules

Next Steps

Build docs developers (and LLMs) love