Skip to content

Commit

Permalink
add workflows for GitHub Actions to compile different hardwares
Browse files Browse the repository at this point in the history
- comment out all #define macros related to batteries and inverters in USER_SETTINGS.h
- remove workflow to compile arduino sketch, as the sketch does not compile without defining the #define macros
- add workflow to compile all batteries in combination with the inverter communication protocol: BYD_MODBUS
- add workflow to compile all inverter communication protocols in combination with the battery: NISSAN_LEAF_BATTERY
- add workflow to compile all combinations of batteries and inverter communication protocols. This workflow can be triggered manually.
  • Loading branch information
lenvm committed Nov 10, 2023
1 parent 2bf03ef commit 3b03d27
Show file tree
Hide file tree
Showing 5 changed files with 236 additions and 35 deletions.
77 changes: 77 additions & 0 deletions .github/workflows/compile-all-batteries.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,77 @@
# This is the name of the workflow, visible on GitHub UI.
name: Compile All Batteries

# Here we tell GitHub when to run the workflow.
on:
# The workflow is run when a commit is pushed or for a
# Pull Request.
- push
- pull_request

# This is the list of jobs that will be run concurrently.
# Since we use a build matrix, the actual number of jobs
# started depends on how many configurations the matrix
# will produce.
jobs:
# This is the name of the job
build-batteries:

# Here we tell GitHub that the jobs must be determined
# dynamically depending on a matrix configuration.
strategy:
# The matrix will produce one job for each combination of parameters.
matrix:
# This is the development board hardware for which the code will be compiled.
# FBQN stands for "fully qualified board name", and is used by Arduino to define the hardware to compile for.
fqbn:
- esp32:esp32:esp32
# further ESP32 chips
#- esp32:esp32:esp32c3
#- esp32:esp32:esp32c2
#- esp32:esp32:esp32c6
#- esp32:esp32:esp32h2
#- esp32:esp32:esp32s3
# These are the batteries for which the code will be compiled.
battery:
- BMW_I3_BATTERY
- CHADEMO_BATTERY
- IMIEV_CZERO_ION_BATTERY
- KIA_HYUNDAI_64_BATTERY
- NISSAN_LEAF_BATTERY
- RENAULT_ZOE_BATTERY
- TESLA_MODEL_3_BATTERY
# These are the emulated inverter communication protocols for which the code will be compiled.
inverter:
# - BYD_CAN
- BYD_MODBUS
# - LUNA2000_MODBUS
# - PYLON_CAN
# - SMA_CAN
# - SOFAR_CAN
# - SOLAX_CAN

# This is the platform GitHub will use to run our workflow.
runs-on: ubuntu-latest

# This is the list of steps this job will run.
steps:
# First we clone the repo using the `checkout` action.
- name: Checkout
uses: actions/checkout@v4

# We use the `arduino/setup-arduino-cli` action to install and
# configure the Arduino CLI on the system.
- name: Setup Arduino CLI
uses: arduino/setup-arduino-cli@v1

# We then install the platform.
- name: Install platform
run: |
arduino-cli core update-index
arduino-cli core install esp32:esp32
# Finally, we compile the sketch, using the FQBN that was set
# in the build matrix, and using build flags to define the
# battery and inverter set in the build matrix.
- name: Compile Sketch
run: arduino-cli compile --fqbn ${{ matrix.fqbn }} --build-property "build.extra_flags=-DESP32 -D${{ matrix.battery}} -D${{ matrix.inverter}}" ./Software
80 changes: 80 additions & 0 deletions .github/workflows/compile-all-combinations.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,80 @@
# This is the name of the workflow, visible on GitHub UI.
name: Compile All Combinations

# Here we tell GitHub when to run the workflow.
on:
# This allows you to run this workflow manually from the
# GitHub Actions tab.
workflow_dispatch:
# The workflow is run upon creating, editing,
# pre-releasing, releasing and publishing a release
release:
types: [created, edited, prereleased, released, published]

# This is the list of jobs that will be run concurrently.
# Since we use a build matrix, the actual number of jobs
# started depends on how many configurations the matrix
# will produce.
jobs:
# This is the name of the job.
build-matrix:

# Here we tell GitHub that the jobs must be determined
# dynamically depending on a matrix configuration.
strategy:
# The matrix will produce one job for each combination of parameters.
matrix:
# This is the development board hardware for which the code will be compiled.
# FBQN stands for "fully qualified board name", and is used by Arduino to define the hardware to compile for.
fqbn:
- esp32:esp32:esp32
# further ESP32 chips
#- esp32:esp32:esp32c3
#- esp32:esp32:esp32c2
#- esp32:esp32:esp32c6
#- esp32:esp32:esp32h2
#- esp32:esp32:esp32s3
# These are the batteries for which the code will be compiled.
battery:
- BMW_I3_BATTERY
- CHADEMO_BATTERY
- IMIEV_CZERO_ION_BATTERY
- KIA_HYUNDAI_64_BATTERY
- NISSAN_LEAF_BATTERY
- RENAULT_ZOE_BATTERY
- TESLA_MODEL_3_BATTERY
# These are the emulated inverter communication protocols for which the code will be compiled.
inverter:
- BYD_CAN
- BYD_MODBUS
- LUNA2000_MODBUS
- PYLON_CAN
- SMA_CAN
- SOFAR_CAN
- SOLAX_CAN

# This is the platform GitHub will use to run our workflow.
runs-on: ubuntu-latest

# This is the list of steps this job will run.
steps:
# First we clone the repo using the `checkout` action.
- name: Checkout
uses: actions/checkout@v4

# We use the `arduino/setup-arduino-cli` action to install and
# configure the Arduino CLI on the system.
- name: Setup Arduino CLI
uses: arduino/setup-arduino-cli@v1

# We then install the platform.
- name: Install platform
run: |
arduino-cli core update-index
arduino-cli core install esp32:esp32
# Finally, we compile the sketch, using the FQBN that was set
# in the build matrix, and using build flags to define the
# battery and inverter set in the build matrix.
- name: Compile Sketch
run: arduino-cli compile --fqbn ${{ matrix.fqbn }} --build-property "build.extra_flags=-DESP32 -D${{ matrix.battery}} -D${{ matrix.inverter}}" ./Software
77 changes: 77 additions & 0 deletions .github/workflows/compile-all-inverters.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,77 @@
# This is the name of the workflow, visible on GitHub UI.
name: Compile All Inverters

# Here we tell GitHub when to run the workflow.
on:
# The workflow is run when a commit is pushed or for a
# Pull Request.
- push
- pull_request

# This is the list of jobs that will be run concurrently.
# Since we use a build matrix, the actual number of jobs
# started depends on how many configurations the matrix
# will produce.
jobs:
# This is the name of the job.
build-inverters:

# Here we tell GitHub that the jobs must be determined
# dynamically depending on a matrix configuration.
strategy:
# The matrix will produce one job for each combination of parameters.
matrix:
# This is the development board hardware for which the code will be compiled.
# FBQN stands for "fully qualified board name", and is used by Arduino to define the hardware to compile for.
fqbn:
- esp32:esp32:esp32
# further ESP32 chips
#- esp32:esp32:esp32c3
#- esp32:esp32:esp32c2
#- esp32:esp32:esp32c6
#- esp32:esp32:esp32h2
#- esp32:esp32:esp32s3
# These are the batteries for which the code will be compiled.
battery:
# - BMW_I3_BATTERY
# - CHADEMO_BATTERY
# - IMIEV_CZERO_ION_BATTERY
# - KIA_HYUNDAI_64_BATTERY
- NISSAN_LEAF_BATTERY
# - RENAULT_ZOE_BATTERY
# - TESLA_MODEL_3_BATTERY
# These are the emulated inverter communication protocols for which the code will be compiled.
inverter:
- BYD_CAN
- BYD_MODBUS
- LUNA2000_MODBUS
- PYLON_CAN
- SMA_CAN
- SOFAR_CAN
- SOLAX_CAN

# This is the platform GitHub will use to run our workflow.
runs-on: ubuntu-latest

# This is the list of steps this job will run.
steps:
# First we clone the repo using the `checkout` action.
- name: Checkout
uses: actions/checkout@v4

# We use the `arduino/setup-arduino-cli` action to install and
# configure the Arduino CLI on the system.
- name: Setup Arduino CLI
uses: arduino/setup-arduino-cli@v1

# We then install the platform.
- name: Install platform
run: |
arduino-cli core update-index
arduino-cli core install esp32:esp32
# Finally, we compile the sketch, using the FQBN that was set
# in the build matrix, and using build flags to define the
# battery and inverter set in the build matrix.
- name: Compile Sketch
run: arduino-cli compile --fqbn ${{ matrix.fqbn }} --build-property "build.extra_flags=-DESP32 -D${{ matrix.battery}} -D${{ matrix.inverter}}" ./Software
33 changes: 0 additions & 33 deletions .github/workflows/compile-arduino-sketch.yml

This file was deleted.

4 changes: 2 additions & 2 deletions Software/USER_SETTINGS.h
Original file line number Diff line number Diff line change
Expand Up @@ -10,13 +10,13 @@
//#define CHADEMO_BATTERY
//#define IMIEV_CZERO_ION_BATTERY
//#define KIA_HYUNDAI_64_BATTERY
#define NISSAN_LEAF_BATTERY
//#define NISSAN_LEAF_BATTERY
//#define RENAULT_ZOE_BATTERY
//#define TESLA_MODEL_3_BATTERY

/* Select inverter communication protocol. See Wiki for which to use with your inverter: https://github.com/dalathegreat/BYD-Battery-Emulator-For-Gen24/wiki */
//#define BYD_CAN //Enable this line to emulate a "BYD Battery-Box Premium HVS" over CAN Bus
#define BYD_MODBUS //Enable this line to emulate a "BYD 11kWh HVM battery" over Modbus RTU
//#define BYD_MODBUS //Enable this line to emulate a "BYD 11kWh HVM battery" over Modbus RTU
//#define LUNA2000_MODBUS //Enable this line to emulate a "Luna2000 battery" over Modbus RTU
//#define PYLON_CAN //Enable this line to emulate a "Pylontech battery" over CAN bus
//#define SMA_CAN //Enable this line to emulate a "BYD Battery-Box H 8.9kWh, 7 mod" over CAN bus
Expand Down

0 comments on commit 3b03d27

Please sign in to comment.