EVerest / everest-demo

EVerest demo: Dockerized demo with software in the loop simulation
Apache License 2.0
11 stars 13 forks source link

Quick EVerest Demos

This repository is a repackaging of several simple demos of the EVerest tech stack. Our intent is to showcase the foundational layers of a charging solution that could address interoperability and reliability issues in the industry. EVerest is currently in the early adoption stage of the LF Energy Technical Project Lifecycle.

What is EVerest?

EVerest is a Linux Foundation Energy project aiming to provide a modular, open-source framework and tech stack for all manner of electric vehicle chargers. This mission and architecture mean EVerest is well positioned to serve as the base for a reference implementation of a variety of standards that can drive interoperability in the eMobility space.

Vision

The US Joint Office of Energy and Transportation (US-JOET) plans to use EVerest as a baseline from which to collaboratively build reliable interoperability solutions for EV charging, including:

The US-JOET has contributed this repository to the base everest project and continue modifying it to explore additional configurations.

EVerest currently supports the following standards

Roadmap Items in Development

SETUP: access docker

EV ↔ EVSE demos

The demos in this repo showcase connectivity between one or two EVs and an EVSE. The protocol used by the EV can be selected using a UI dropdown. The dropdown can also be used to simulate errors on the EVCC. The use cases supported by the three demos are summarized in conceptual block diagrams below.

Demo Content
One EV ↔ EVSE (AC Simulations)
One EV ↔ EVSE (ISO 15118-2 DC)
Two EV ↔ EVSE

Demo Notes

EVerest is designed with embedded applications in mind. To illustrate this, we've imposed maximum CPU usage and RAM constraints of 100% (1 core) and 1024MB, respectively, in each of the demos. The sole exception is the automated testing demo, where resource constraints are less relevant to the demo's purpose. Even on modest desktop hardware, these constraints should only result in slightly longer boot times.

You can experiment with different constraints for a demo by exporting EVEREST_MANAGER_CPUS and EVEREST_MANAGER_MEMORY environment variables prior to running one of the demos. The values of these variables can take on any valid Docker CPU value and memory limit, respectively. For example, to run a demo with two CPUs and 1536 MB of RAM, you could execute

export EVEREST_MANAGER_CPUS='2.0' EVEREST_MANAGER_MEMORY='1536mb'

in your terminal before one of the one-liners presented in the next section.

STEP 1: Run the demo

NOTE: the Basic and ISO 15118-2 AC Charging with OCPP 1.6J CSMS (StEVe) demo is known to fail intermittently, and will not be fixed.

STEP 2: Interact with the demo

Nodered flows Demo UI Including simulated error
nodered flows demo UI including simulated error
SteVe web portal
SteVe web portal
OCPP 201 with successful connection
OCPP 201 connection

STEP 3: See the list of modules loaded and the high level message exchange

Simple AC charging station log screenshot

OPTIONAL: Explore the configs visually

TEARDOWN: Clean up after the demo

High level block diagram overview of EVerest capabilities

From https://everest.github.io/nightly/general/01_framework.html image

Notes for Demo Contributors

Docker images defined in this repository are built during pull requests, on merges to main, and on pushes of semantic version tags. The labels for newly-built images are determined by the TAG environment variable specified in the root level .env file in this repository. The value of TAG is also used throughout the demo docker-compose.*.yml.