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.
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.
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.
docker
and docker compose
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 |
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.
curl https://raw.githubusercontent.com/everest/everest-demo/main/demo-ac.sh | bash
curl https://raw.githubusercontent.com/everest/everest-demo/main/demo-iso15118-2-dc.sh | bash
curl https://raw.githubusercontent.com/everest/everest-demo/main/demo-two-evse.sh | bash
curl https://raw.githubusercontent.com/everest/everest-demo/main/demo-automated-testing.sh | bash
curl https://raw.githubusercontent.com/everest/everest-demo/main/demo-iso15118-2-ac-plus-ocpp.sh | bash -s -- -j
curl https://raw.githubusercontent.com/everest/everest-demo/main/demo-iso15118-2-ac-plus-ocpp.sh | bash -s -- -1
curl https://raw.githubusercontent.com/everest/everest-demo/main/demo-iso15118-2-ac-plus-ocpp.sh | bash -s -- -2
curl https://raw.githubusercontent.com/everest/everest-demo/main/demo-iso15118-2-ac-plus-ocpp.sh | bash -s -- -3
curl https://raw.githubusercontent.com/everest/everest-demo/main/demo-iso15118-2-ac-plus-ocpp.sh | bash -s -- -c -1
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.
nodered
flows to understand the module flows at http://127.0.0.1:1880docker logs
to see the logs/tmp/everest_ocpp_logs/
on the EVerest manager and can be downloaded using the docker desktop or docker cp
Nodered flows | Demo UI | Including simulated error |
---|---|---|
SteVe web portal |
---|
OCPP 201 with successful connection |
---|
curl -o docker-compose.yml https://raw.githubusercontent.com/everest/everest-demo/main/docker-compose.admin-panel.yml && docker compose -p everest-admin-panel up
docker compose -p [prefix] down && rm docker-compose.yml
where [prefix]
is everest, everest-dc, everest-two-evse...
From https://everest.github.io/nightly/general/01_framework.html
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
.