Introduction
The EVerest Core API reference provides comprehensive documentation for all interfaces, modules, types, and error definitions in the EVerest charging infrastructure framework.What’s Included
This API reference covers:- Interfaces: 50+ interface definitions that define communication contracts between modules
- Modules: 50+ implementations organized by functional category
- Types: Shared data type definitions used across the framework
- Errors: Error code definitions and error handling framework
Interface-Based Design
EVerest uses an interface-based architecture where:- Interfaces define communication contracts with commands (cmds), variables (vars), and errors
- Modules implement one or more interfaces to provide functionality
- Requirements allow modules to depend on interfaces provided by other modules
- Connections link module implementations together at runtime
- Modularity: Swap implementations without changing dependent modules
- Testability: Mock interfaces for unit testing
- Flexibility: Mix and match modules to build custom charging solutions
- Type Safety: Strong typing through YAML schema definitions
Key Interface Categories
EVSE Management
Core interfaces for managing Electric Vehicle Supply Equipment:evse_manager- Main EVSE charging kernel interfaceevse_board_support- Hardware abstraction for EVSE controlevse_security- Certificate and security managementconnector_lock- Physical connector locking control
ISO 15118 & Communication
High-level communication protocols:ISO15118_charger- ISO 15118 charger-side implementationISO15118_ev- ISO 15118 vehicle-side implementationslac- Signal Level Attenuation Characterizationpower- Power line communication
Authentication & Authorization
User authentication and access control:auth- Main authentication framework interfaceauth_token_provider- Token provisioning interfaceauth_token_validator- Token validation interfacereservation- Reservation management
Energy Management
Energy flow control and optimization:energy- Internal energy management interfaceenergy_manager- Energy manager control interfaceexternal_energy_limits- External limit constraintsenergy_price_information- Energy pricing data
Metering & Monitoring
Power measurement and monitoring:powermeter- Generic power meter interfaceisolation_monitor- DC isolation monitoringac_rcd- AC residual current detection
OCPP Integration
Open Charge Point Protocol support:ocpp- OCPP 2.0.1 interfaceocpp_1_6_charge_point- OCPP 1.6 interfaceocpp_data_transfer- OCPP data transfer
Module Categories
Modules are organized into functional categories:API Modules (23 modules)
API wrapper modules that expose interfaces for external integration. These modules typically consume interfaces from other modules and provide simplified APIs.EVSE Modules (11 modules)
Core EVSE functionality including:- Authentication (Auth)
- EVSE management (EvseManager)
- ISO 15118 support (EvseV2G, Evse15118D20)
- Security (EvseSecurity)
- SLAC (EvseSlac)
- OCPP (OCPP, OCPP201)
Energy Management (2 modules)
Energy flow optimization and management:- EnergyManager - Central energy optimization
- EnergyNode - Energy tree node implementation
Hardware Drivers (50+ modules)
Hardware-specific implementations:- EVSE Drivers: YetiDriver, MicroMegaWattBSP, PhyVersoBSP, TIDA010939
- EV Drivers: YetiEvDriver
- Power Meters: AST_DC650, Powermeter simulators
- Isolation Monitors: Bender_isoCHA425HV, DoldRN5893
- NFC Readers: PN532, PN7160, NxpNfcFrontend
- Payment Terminals: RsPaymentTerminal
Additional Categories
- BringUp: System initialization and configuration
- Simulation: Simulators for testing
- Testing: Test utilities
- Examples: Example implementations
- Misc: Utility modules
How to Navigate
Finding Interfaces
Use the Interfaces page to:- Browse all available interfaces alphabetically
- View interface descriptions and purposes
- See commands, variables, and error definitions
- Understand interface relationships
Finding Modules
Use the Module Reference page to:- Browse modules by category
- Find implementations of specific interfaces
- Understand module dependencies
- Locate hardware drivers for specific devices
Understanding Types
Use the Types page to:- Look up data type definitions
- Understand type schemas and validation rules
- See type relationships and references
- Find enumeration values
Handling Errors
Use the Errors page to:- Look up error codes and meanings
- Understand error severity levels
- Implement proper error handling
- Debug error conditions
YAML Schema Format
All interfaces and types are defined in YAML format with:Type References
Type references use the format:/type_file#/TypeName
For example:
/authorization#/ProvidedIdToken- ProvidedIdToken type from authorization.yaml/energy#/EnforcedLimits- EnforcedLimits type from energy.yaml/powermeter#/Powermeter- Powermeter type from powermeter.yaml
Getting Started
- Understand the architecture: Review the interface-based design concepts
- Explore key interfaces: Start with
evse_manager,auth, andenergy - Find relevant modules: Locate implementations for your use case
- Check type definitions: Understand data structures used in interfaces
- Handle errors: Implement proper error handling for your modules
Additional Resources
- Module Development Guide - Learn to create custom modules
- Configuration Guide - Configure module connections
- Interface Tutorial - Interface usage examples
API Stability
Interface definitions follow semantic versioning:- Major version changes: Breaking changes to interface contracts
- Minor version changes: Backward-compatible additions
- Patch version changes: Bug fixes and clarifications