Quick Start Tutorial
This tutorial will guide you through running your first EVerest charging simulation. You’ll build the framework, start a Software-in-the-Loop (SIL) configuration, and understand what’s happening under the hood.This guide assumes you’ve completed the Installation Guide. If you haven’t installed EVerest yet, please do that first.
What You’ll Build
By the end of this tutorial, you’ll have:- Built EVerest Core from source
- Started a simulated AC charging station
- Understood the module architecture
- Performed a complete charging session simulation
Step 1: Clone and Setup
- Container-Based
- Bare Metal
If you’re using the container-based development environment:
Step 2: Build the Framework
Now let’s build EVerest Core with all its modules:Configure with CMake
- Creates a
builddirectory - Configures the project with Ninja as the build system
- Downloads and configures all dependencies automatically via EDM
The first build may take 10-20 minutes as it downloads and builds all dependencies. Subsequent builds will be much faster.
Step 3: Understanding Configuration Files
EVerest uses YAML configuration files to define which modules to run and how they connect. Let’s examine the basic SIL (Software-in-the-Loop) configuration:Key Modules in config-sil.yaml
| Module | Purpose |
|---|---|
connector_1 (EvseManager) | Manages the charging session lifecycle |
auth (Auth) | Handles authorization and access control |
energy_manager (EnergyManager) | Controls power distribution |
iso15118_charger (EvseV2G) | ISO 15118 high-level communication |
iso15118_car (PyEvJosev) | Simulates the EV side of ISO 15118 |
slac (SlacSimulator) | Simulates SLAC communication |
connector_1_powerpath (YetiSimulator) | Simulates the hardware (BSP) |
token_provider (DummyTokenProvider) | Provides RFID tokens for testing |
api (API) | External API interface |
View Full config-sil.yaml Structure
View Full config-sil.yaml Structure
Step 4: Run Your First Configuration
Now let’s start the simulation:If you get a “config file not found” error, make sure you’re in the
everest-core directory or provide the full path to the config file.Step 5: Understanding the Output
When you run the manager, you’ll see output similar to:What’s Happening?
Module Initialization
EVerest loads all modules defined in the configuration file. Each module:
- Initializes its internal state
- Connects to MQTT topics
- Establishes connections with other modules
- Publishes its ready state
MQTT Communication
All modules communicate via MQTT. You’ll see messages like:These represent the communication channels between modules.
Step 6: Simulate a Charging Session
To interact with the running simulation, you have several options:Option A: Use the EV Manager (Simulated Car)
Theconfig-sil.yaml includes an EV manager module. In a separate terminal:
Option B: Use Node-RED UI (Container Only)
If you’re using the container-based setup:Open Node-RED UI
Open your browser to: http://localhost:1880/uiYou’ll see a graphical interface with:
- Car simulator controls (plug in, authorize, start charging)
- Real-time status display
- Power meter readings
- Session information
Start a Charging Session
- Click “Plug In” to connect the virtual vehicle
- The system will detect the car and request authorization
- Click “Authorize” to approve charging
- Click “Start Charging” to begin power delivery
- Monitor the power flow and session data in real-time
- Click “Stop Charging” when done
- Click “Unplug” to complete the session
Option C: Monitor MQTT Messages
To see what’s happening at the protocol level:Step 7: Explore Other Configurations
EVerest comes with many pre-built configurations for different scenarios:Available Configurations
| Configuration | Description |
|---|---|
config-sil.yaml | Basic AC charging simulation |
config-sil-dc.yaml | DC fast charging simulation |
config-sil-ocpp.yaml | AC charging with OCPP 1.6 |
config-sil-ocpp201.yaml | AC charging with OCPP 2.0.1 |
config-sil-two-evse.yaml | Two charging connectors |
config-sil-energy-management.yaml | Smart energy management |
Try DC Charging
- DC power supply simulation
- Isolation monitoring
- DC-specific protocols (CCS)
Try OCPP Integration
- OCPP 1.6 module for backend communication
- Transaction management
- Remote start/stop capabilities
For OCPP configurations, you’ll need an OCPP backend like SteVe running. The container setup includes SteVe at http://localhost:8180.
Understanding Module Connections
EVerest modules communicate through interfaces. Each module:- Provides implementations of interfaces (services it offers)
- Requires implementations from other modules (services it needs)
Debugging and Logging
To get more detailed output, you can adjust the log level:critical: Only critical errorserror: Errors and criticalwarning: Warnings, errors, and criticalinfo: Informational messages (default)debug: Detailed debugging informationtrace: Very verbose tracing
Next Steps
Congratulations! You’ve successfully run your first EVerest charging simulation. Here’s what to explore next:Module Development
Learn how to create custom modules for your specific hardware
Configuration Guide
Deep dive into YAML configurations and module connections
OCPP Integration
Connect your charger to a central management system
Hardware Integration
Replace simulators with real hardware drivers
Troubleshooting
Manager fails to start
Manager fails to start
Check that:
- The config file path is correct
- All required modules are built and installed
- MQTT broker is running (internal broker starts automatically)
Modules fail to initialize
Modules fail to initialize
Look for error messages in the output:This usually means:
- Missing dependencies for that module
- Configuration error in connections
- Module not built/installed properly
Python modules not working
Python modules not working
Ensure Python support is enabled and dependencies are installed:
Cannot connect to MQTT
Cannot connect to MQTT
EVerest uses an internal MQTT broker by default. If you see connection errors:
Additional Resources
- EVerest Documentation: https://everest.github.io
- Module Reference: Browse
/workspace/everest-core/modules/for all available modules - Interface Definitions: Check
/workspace/everest-core/interfaces/for interface specifications - Community Forum: Join the discussion on GitHub Discussions
- Source Code: Explore the code at github.com/EVerest/everest-core