Skip to main content
EVerest Core is built on a modular architecture where each module provides specific functionality for EV charging operations. Modules communicate through well-defined interfaces and can be composed to create complete charging solutions.

Module Architecture

EVerest modules are the building blocks of the charging system. Each module:
  • Provides interfaces that expose functionality to other modules
  • Requires interfaces from other modules to perform its tasks
  • Declares configuration through manifest.yaml files
  • Implements specific functionality for charging operations
All modules are located in the modules/ directory of the EVerest Core repository and are defined by their manifest.yaml configuration files.

Module Categories

EVSE Manager

Core charging logic and state management

OCPP

Communication with Central Systems (OCPP 1.6 & 2.0.1)

ISO 15118

High-level communication and Plug & Charge

Energy Management

Smart charging and load balancing

Hardware Drivers

Board support packages and device drivers

Authentication

Authorization and access control

Core Module Types

EVSE Side Modules

Modules located in modules/EVSE/ handle charging station operations:
  • EvseManager - Main charging state machine and coordination
  • OCPP / OCPP201 - Backend communication protocols
  • Auth - Authentication and reservation management
  • EvseV2G - ISO 15118-2 and DIN 70121 implementation
  • EvseSlac - SLAC protocol for PLC communication
  • EvseSecurity - Certificate and security management

Energy Management Modules

Modules in modules/EnergyManagement/ handle power distribution:
  • EnergyManager - Global energy management coordinator
  • EnergyNode - Tree node for hierarchical energy distribution

Hardware Driver Modules

Modules in modules/HardwareDrivers/ interface with physical hardware:
  • EVSE drivers - Board support packages (BSP) for charging hardware
  • PowerMeters - Energy measurement devices
  • PowerSupplies - DC power supply control
  • IsolationMonitors - Insulation monitoring devices
  • NfcReaders - RFID/NFC authentication readers

API Modules

Modules in modules/API/ provide interfaces for external integration:
  • API abstraction layers
  • Consumer interfaces
  • External communication endpoints

Module Manifest Structure

Each module is defined by a manifest.yaml file with the following structure:
description: Module description
config:
  parameter_name:
    description: Parameter description
    type: string|integer|boolean|number
    default: value
provides:
  interface_name:
    interface: interface_type
    description: What this interface provides
requires:
  dependency_name:
    interface: interface_type
    min_connections: 0
    max_connections: 1
metadata:
  license: License URL
  authors:
    - Author name

Module Communication

Modules communicate through interfaces defined in the interfaces/ directory:
1

Interface Definition

Interfaces define commands, variables, and error types
2

Module Provides

Modules implement interfaces they provide
3

Module Requires

Modules connect to required interfaces from other modules
4

Configuration

Config files wire modules together at runtime

Configuration Example

Modules are wired together in configuration files. Here’s a simplified example:
active_modules:
  evse:
    module: EvseManager
    config:
      connector_id: 1
      charge_mode: AC
    connections:
      bsp: board_support
      energy_grid: energy_mgmt
      
  board_support:
    module: YetiDriver
    config:
      serial_port: /dev/ttyUSB0
      
  energy_mgmt:
    module: EnergyManager

Module Discovery

To explore available modules in the EVerest Core repository:
# List all modules
find modules/ -name "manifest.yaml"

# View module description
cat modules/EvseManager/manifest.yaml

# Check module interfaces
ls interfaces/

Next Steps

EvseManager Deep Dive

Learn about the core charging module

OCPP Integration

Connect to backend systems

Configuration Guide

Wire modules together

Interface Reference

Understand module interfaces

Build docs developers (and LLMs) love