From 452777f2be8f77af80dc31d9017460c81bdb9237 Mon Sep 17 00:00:00 2001 From: "K. Shankari" Date: Thu, 2 Nov 2023 08:35:44 -0700 Subject: [PATCH 1/2] Enable a demo of the admin panel + update README (#1) - add a new demo to display the admin panel - update the README to: - change the download location to the base everest repo instead of US-JOET - clarify what the Joint Office is and that it will continue to contribute in this space - add section on launching the optional demo and displaying the admin panel - Modify the teardown to handle the case that there is no longer only one prefix Signed-off-by: Shankari --- README.md | 21 ++++++++++++++------- docker-compose.admin-panel.yml | 19 +++++++++++++++++++ 2 files changed, 33 insertions(+), 7 deletions(-) create mode 100644 docker-compose.admin-panel.yml diff --git a/README.md b/README.md index aa4d7c30..005b6c6c 100644 --- a/README.md +++ b/README.md @@ -1,16 +1,18 @@ # Quick EVerest Demos -This repository is a repackaging of several simple demos of the [EVerest](https://lfenergy.org/projects/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](https://wiki.lfenergy.org/display/HOME/Technical+Project+Lifecycle). +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](https://wiki.lfenergy.org/display/HOME/Technical+Project+Lifecycle). ## What is EVerest? [EVerest](https://lfenergy.org/projects/everest/) is a [Linux Foundation Energy](https://lfenergy.org/) 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 Joint Office plans to use EVerest as a baseline from which to collaboratively build reliable interoperability solutions for EV charging, including: +The [US Joint Office of Energy and Transportation (US-JOET)](https://driveelectric.gov/) 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) @@ -25,7 +27,6 @@ The Joint Office plans to use EVerest as a baseline from which to collaborativel - 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](https://docs.docker.com/get-docker/) @@ -45,9 +46,9 @@ The use cases supported by the three demos are summarized in conceptual block di ### STEP 1: Run the demo - Copy and paste the command for the demo you want to see: - - 🚨simple AC charging station ⚡: `curl -o docker-compose.yml https://raw.githubusercontent.com/US-JOET/everest-demo/main/docker-compose.yml && docker compose -p everest up` - - 🚨ISO 15118 DC charging ⚡: `curl -o docker-compose.yml https://raw.githubusercontent.com/US-JOET/everest-demo/main/docker-compose.iso15118-dc.yml && docker compose -p everest-dc up` - - 🚨 two EVSE charging ⚡: `curl -o docker-compose.yml https://raw.githubusercontent.com/US-JOET/everest-demo/main/docker-compose.two-evse.yml && docker compose -p everest-two-evse up` + - 🚨simple AC charging station ⚡: `curl -o docker-compose.yml https://raw.githubusercontent.com/everest/everest-demo/main/docker-compose.yml && docker compose -p everest up` + - 🚨ISO 15118 DC charging ⚡: `curl -o docker-compose.yml https://raw.githubusercontent.com/everest/everest-demo/main/docker-compose.iso15118-dc.yml && docker compose -p everest-dc up` + - 🚨 two EVSE charging ⚡: `curl -o docker-compose.yml https://raw.githubusercontent.com/everest/everest-demo/main/docker-compose.two-evse.yml && docker compose -p everest-two-evse up` ### STEP 2: Interact with the demo - Open the `nodered` flows to understand the module flows at http://127.0.0.1:1880 @@ -61,9 +62,15 @@ The use cases supported by the three demos are summarized in conceptual block di ### STEP 3: See the list of modules loaded and the high level message exchange ![Simple AC charging station log screenshot](img/simple_ac_charging_station.png) +### OPTIONAL: Explore the configs visually +- This demo can be run independently, and exports [the admin panel](https://everest.github.io/nightly/general/03_quick_start_guide.html#admin-panel-and-simulations) as explained [in this video](https://youtu.be/OJ6kjHRPkyY?t=904).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 everest down && rm docker-compose.yml` +- 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 diff --git a/docker-compose.admin-panel.yml b/docker-compose.admin-panel.yml new file mode 100644 index 00000000..fc88d207 --- /dev/null +++ b/docker-compose.admin-panel.yml @@ -0,0 +1,19 @@ +version: "3.6" + +services: + mqtt-server: + image: ghcr.io/shankari/everest-demo/mqtt-server:0.0.1 + logging: + driver: none + + manager: + image: ghcr.io/shankari/everest-demo/manager:0.0.2 + depends_on: + - mqtt-server + environment: + - MQTT_SERVER_ADDRESS=mqtt-server + ports: + - 8849:8849 + entrypoint: "sh ./build/run-scripts/run-sil.sh" + sysctls: + - net.ipv6.conf.all.disable_ipv6=0 From 39694d55af52a40c7265444f3d9ceca6c7925151 Mon Sep 17 00:00:00 2001 From: "K. Shankari" Date: Thu, 2 Nov 2023 08:36:28 -0700 Subject: [PATCH 2/2] Squashed commit of the following: (#2) commit 7fd40905edc07677704811bcb8d56948e8f09e03 Author: Shankari Date: Thu Oct 26 11:04:46 2023 -0700 Remove pushes on `main` to avoid extraneous double push with the current flow, we build on `build_pkg_` once the packages are built, we will merge to main we don't want to rebuild on main commit 4046493202379e07d0e57bd5f67c99f440c8cd46 Author: Shankari Date: Thu Oct 26 10:28:54 2023 -0700 Give package write permissions to this job as well commit 792cef01c086c93914ca16eac981e24047e41f15 Author: Shankari Date: Thu Oct 26 10:16:07 2023 -0700 Actually enable the new workflow for `build_pkg` branches commit 5bf1875b27ef5f1f8964529ead22f4352e907224 Author: Dan Moore <9156191+drmrd@users.noreply.github.com> Date: Thu Oct 26 11:50:23 2023 -0400 Build Docker images on PR, merge, and tag events Signed-off-by: Shankari --- .github/workflows/cicd.yaml | 60 +++++++++++++++++++++++++++++++++++++ 1 file changed, 60 insertions(+) create mode 100644 .github/workflows/cicd.yaml diff --git a/.github/workflows/cicd.yaml b/.github/workflows/cicd.yaml new file mode 100644 index 00000000..e63d01f4 --- /dev/null +++ b/.github/workflows/cicd.yaml @@ -0,0 +1,60 @@ +name: cicd + +on: + push: + branches: + - 'build_pkg_**' + tags: + - 'v*' + pull_request: + branches: + - 'main' + +jobs: + docker-build-and-push-images: + runs-on: ubuntu-latest + + permissions: + contents: read + packages: write + + strategy: + matrix: + include: + - image: ghcr.io/us-joet/everest-demo/manager + context: ./manager + - image: ghcr.io/us-joet/everest-demo/mqtt-server + context: ./mosquitto + - image: ghcr.io/us-joet/everest-demo/nodered + context: ./nodered + + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Set Docker image metadata + id: meta + uses: docker/metadata-action@v5 + with: + images: ${{ matrix.image }} + tags: | + type=ref,event=branch + type=ref,event=pr + type=semver,pattern={{version}} + type=semver,pattern={{major}}.{{minor}} + + - name: Log into GitHub container registry + if: github.event_name != 'pull_request' + uses: docker/login-action@v3 + with: + registry: ghcr.io + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} + + - name: Build and push + uses: docker/build-push-action@v5 + with: + context: ${{ matrix.context }} + push: ${{ github.event_name != 'pull_request' }} + tags: ${{ steps.meta.outputs.tags }} + labels: ${{ steps.meta.outputs.labels }}