Code Monkey home page Code Monkey logo

everest-demo's Introduction

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:

  • reference implementations for standards driving interoperability between network actors including EVs, EVSEs, and CSMSs
  • interoperability testing tools and test suites
  • simulated EVs, EVSEs, etc. following interoperability best practices.

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

  • EN 61851
  • ISO 15118 (AC wired charging)
    • SLAC / ISO 15118-3 in C++
    • ISO 15118-2 AC
  • DC DIN SPEC 70121
  • OCPP 1.6J including profiles and security extensions
  • Partial OCPP 2.0.1 implementation

Roadmap Items in Development

  • Full OCPP 2.0.1 / 2.1
  • ISO 15118-20
  • Robust error handling/reporting

SETUP: access docker

  • If you are a developer, you might already have docker installed on your laptop. If not, Get Docker
    • Check that the terminal has access to docker and docker compose

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

  • Copy and paste the command for the demo you want to see:
    • 🚨 AC Charging ⚡: curl https://raw.githubusercontent.com/everest/everest-demo/main/demo-ac.sh | bash
    • 🚨 ISO 15118 DC Charging ⚡: curl https://raw.githubusercontent.com/everest/everest-demo/main/demo-iso15118-2-dc.sh | bash
    • 🚨 Two EVSE Charging ⚡: curl https://raw.githubusercontent.com/everest/everest-demo/main/demo-two-evse.sh | bash
    • 🚨 E2E Automated Tests ⚡: curl https://raw.githubusercontent.com/everest/everest-demo/main/demo-automated-testing.sh | bash
    • 🚨 Basic and ISO 15118-2 AC Charging with OCPP 1.6J CSMS (StEVe) ⚡: curl https://raw.githubusercontent.com/everest/everest-demo/main/demo-iso15118-2-ac-plus-ocpp.sh | bash -s -- -j
    • 🚨 Basic and ISO 15118-2 AC Charging with OCPP 2.0.1 CSMS (MaEVe Security Profile 1) ⚡: curl https://raw.githubusercontent.com/everest/everest-demo/main/demo-iso15118-2-ac-plus-ocpp.sh | bash -s -- -1
    • 🚨 Basic and ISO 15118-2 AC Charging with OCPP 2.0.1 CSMS (MaEVe Security Profile 2) ⚡: curl https://raw.githubusercontent.com/everest/everest-demo/main/demo-iso15118-2-ac-plus-ocpp.sh | bash -s -- -2
    • 🚨 Basic and ISO 15118-2 AC Charging with OCPP 2.0.1 CSMS (MaEVe Security Profile 3) ⚡: curl https://raw.githubusercontent.com/everest/everest-demo/main/demo-iso15118-2-ac-plus-ocpp.sh | bash -s -- -3

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

  • Open the nodered flows to understand the module flows at http://127.0.0.1:1880
  • Open the demo UI at http://127.0.0.1:1880/ui
  • When running the Basic and ISO 15118-2 AC Charging with OCPP 1.6J CSMS demo, you can open the SteVe wep portal at http://localhost:8180/steve/manager/home. Login with username: admin, password: 1234
  • When running the Basic and ISO 15118-2 AC Charging with OCPP 201 CSMS demo, the script currently checks out the maeve repository and builds it, so it is fairly slow.
    • It starts the Maeve containers in detached mode, so you would need to use docker desktop or docker logs to see the logs
    • Note that the OCPP logs are available at /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
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

  • This demo can be run independently, and exports the admin panel as explained in this video.It provides a visual representation of the configuration and the resulting configurations.
  • Run the demo: 💄 exploring configs 🔧: 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
  • Access the visual representation at http://localhost:8849

TEARDOWN: Clean up after the demo

  • Kill the demo process
  • Delete files and containers: docker compose -p [prefix] down && rm docker-compose.yml where [prefix] is everest, everest-dc, everest-two-evse...

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.

everest-demo's People

Contributors

shankari avatar drmrd avatar sahabulh avatar couryrr-afs avatar activeshadow avatar jhoshiko avatar siarheivolkau avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.