From 584feee5f202b1748f39860f553a28d1713b477a Mon Sep 17 00:00:00 2001 From: Mathieu Carbou Date: Sun, 21 Apr 2024 18:36:19 +0200 Subject: [PATCH] Arduino 3 / ESP-IDF 5 compatibility --- .github/scripts/dep-install.sh | 6 -- .github/workflows/ci.yml | 134 +++++++++++++++++++++++++++------ .gitignore | 5 +- library.json | 13 +++- platformio.ini | 41 ++++++++++ 5 files changed, 164 insertions(+), 35 deletions(-) delete mode 100644 .github/scripts/dep-install.sh create mode 100644 platformio.ini diff --git a/.github/scripts/dep-install.sh b/.github/scripts/dep-install.sh deleted file mode 100644 index c73de70b..00000000 --- a/.github/scripts/dep-install.sh +++ /dev/null @@ -1,6 +0,0 @@ -#!/bin/bash -cd ${HOME}/Arduino/libraries -git clone https://github.com/me-no-dev/ESPAsyncWebServer.git ESPAsyncWebServer -git clone https://github.com/me-no-dev/ESPAsyncTCP.git ESPAsyncTCP -git clone https://github.com/me-no-dev/AsyncTCP.git AsyncTCP -git clone --single-branch --branch 7.x https://github.com/bblanchon/ArduinoJson.git ArduinoJson diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 7d0a57d6..19151f49 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -1,44 +1,130 @@ name: Arduino Library CI -on: +on: push: paths-ignore: - - '**/**.md' - - '/keywords.txt' - - '/library.json' - - '/library.properties' - - '/vue-frontend' - - '/docs' + - "**/**.md" + - "/keywords.txt" + - "/library.json" + - "/library.properties" + - "/vue-frontend" + - "/docs" pull_request: paths-ignore: - - '**/**.md' - - '/keywords.txt' - - '/library.json' - - '/library.properties' - - '/vue-frontend' - - '/docs' + - "**/**.md" + - "/keywords.txt" + - "/library.json" + - "/library.properties" + - "/vue-frontend" + - "/docs" jobs: - build: + arduino: + name: arduino ${{ matrix.platform }} runs-on: ubuntu-latest - + strategy: + fail-fast: false + matrix: + platform: [esp8266, esp32] + steps: - uses: actions/setup-python@v1 with: - python-version: '3.x' - + python-version: "3.x" + - uses: actions/checkout@v2 - uses: actions/checkout@v2 with: - repository: ayushsharma82/ci-arduino - path: ci + repository: ayushsharma82/ci-arduino + path: ci - name: pre-install run: bash ci/actions_install.sh - - - name: install-deps - run: bash .github/scripts/dep-install.sh - - name: test platforms - run: python3 ci/build_platform.py esp8266 esp32 + - name: Set configuration + run: arduino-cli config set library.enable_unsafe_install true + + - name: Install AsyncTCP + run: arduino-cli lib install --git-url https://github.com/mathieucarbou/AsyncTCP#v3.1.2 + + - name: Install ESPAsyncWebServer + run: arduino-cli lib install --git-url https://github.com/mathieucarbou/ESPAsyncWebServer#v2.10.0 + + - name: Install ESPAsyncTCP + run: arduino-cli lib install --git-url https://github.com/mathieucarbou/esphome-ESPAsyncTCP#v2.0.0 + + - name: Install ArduinoJson + run: arduino-cli lib install --git-url https://github.com/bblanchon/ArduinoJson#v7.0.4 + + - name: Build Examples + run: python3 ci/build_platform.py ${{ matrix.platform }} + + platformio: + name: pio ${{ matrix.name }} + runs-on: ubuntu-latest + strategy: + fail-fast: false + matrix: + include: + - name: esp32dev|espressif32 + board: esp32dev + platform: espressif32 + opts: + - name: esp32dev|espressif32@6.6.0 + board: esp32dev + platform: espressif32@6.6.0 + opts: + - name: esp32dev|arduino@3 + board: esp32dev + platform: espressif32 + opts: "--project-option 'platform_packages=platformio/framework-arduinoespressif32 @ https://github.com/espressif/arduino-esp32.git#3.0.0-rc3, platform_packages=platformio/framework-arduinoespressif32-libs @ https://github.com/espressif/esp32-arduino-libs.git#951ade74d7886e1ce931ea46614c4ac47ae3a6c0'" + - name: esp32dev|arduino@master + board: esp32dev + platform: espressif32 + opts: "--project-option 'platform_packages=platformio/framework-arduinoespressif32 @ https://github.com/espressif/arduino-esp32.git#master, platform_packages=platformio/framework-arduinoespressif32-libs @ https://github.com/espressif/esp32-arduino-libs.git#951ade74d7886e1ce931ea46614c4ac47ae3a6c0'" + - name: esp32-s3-devkitc-1|espressif32 + board: esp32-s3-devkitc-1 + platform: espressif32 + opts: + - name: esp32-s3-devkitc-1|espressif32@6.6.0 + board: esp32-s3-devkitc-1 + platform: espressif32@6.6.0 + opts: + - name: esp32-s3-devkitc-1|arduino@3 + board: esp32-s3-devkitc-1 + platform: espressif32 + opts: "--project-option 'platform_packages=platformio/framework-arduinoespressif32 @ https://github.com/espressif/arduino-esp32.git#3.0.0-rc3, platform_packages=platformio/framework-arduinoespressif32-libs @ https://github.com/espressif/esp32-arduino-libs.git#951ade74d7886e1ce931ea46614c4ac47ae3a6c0'" + - name: esp32-s3-devkitc-1|arduino@master + board: esp32-s3-devkitc-1 + platform: espressif32 + opts: "--project-option 'platform_packages=platformio/framework-arduinoespressif32 @ https://github.com/espressif/arduino-esp32.git#master, platform_packages=platformio/framework-arduinoespressif32-libs @ https://github.com/espressif/esp32-arduino-libs.git#951ade74d7886e1ce931ea46614c4ac47ae3a6c0'" + - name: huzzah|espressif8266 + board: huzzah + platform: espressif8266 + opts: + - name: huzzah|arduino@3 + board: huzzah + platform: espressif8266 + opts: "--project-option 'platform_packages=platformio/framework-arduinoespressif32 @ https://github.com/espressif/arduino-esp32.git#3.0.0-rc3, platform_packages=platformio/framework-arduinoespressif32-libs @ https://github.com/espressif/esp32-arduino-libs.git#951ade74d7886e1ce931ea46614c4ac47ae3a6c0'" + steps: + - uses: actions/checkout@v4 + - name: Set up cache + uses: actions/cache@v4 + with: + path: | + ~/.platformio + ~/.cache/pip + key: ${{ matrix.name }} + - uses: actions/setup-python@v5 + with: + python-version: "3.x" + - run: pip install platformio + - run: platformio platform install ${{ matrix.platform }} + + - run: platformio ci "examples/AccessPoint/AccessPoint.ino" -l '.' -b ${{ matrix.board }} ${{ matrix.opts }} + - run: platformio ci "examples/Basic/Basic.ino" -l '.' -b ${{ matrix.board }} ${{ matrix.opts }} + - run: platformio ci "examples/Benchmark/Benchmark.ino" -l '.' -b ${{ matrix.board }} ${{ matrix.opts }} + - run: platformio ci "examples/Chart/Chart.ino" -l '.' -b ${{ matrix.board }} ${{ matrix.opts }} + - run: platformio ci "examples/Dynamic/Dynamic.ino" -l '.' -b ${{ matrix.board }} ${{ matrix.opts }} + - run: platformio ci "examples/Interactive/Interactive.ino" -l '.' -b ${{ matrix.board }} ${{ matrix.opts }} diff --git a/.gitignore b/.gitignore index a72b9c60..ed351809 100644 --- a/.gitignore +++ b/.gitignore @@ -37,4 +37,7 @@ node_modules .vscode ./vue-frontend/dist /build -/portal \ No newline at end of file +/portal + +/.pio +/logs diff --git a/library.json b/library.json index 021652b7..e829ed49 100644 --- a/library.json +++ b/library.json @@ -18,13 +18,18 @@ "version": "4.0.4", "frameworks": "arduino", "platforms": ["espressif32", "espressif8266"], - "dependencies": - [ + "dependencies": [ { - "name": "ESP Async WebServer" + "owner": "bblanchon", + "name": "ArduinoJson", + "version": "^7.0.4", + "platforms": ["espressif8266", "espressif32"] }, { - "name": "ArduinoJson" + "owner": "mathieucarbou", + "name": "ESP Async WebServer", + "version": "^2.10.0", + "platforms": ["espressif8266", "espressif32"] } ] } diff --git a/platformio.ini b/platformio.ini new file mode 100644 index 00000000..1103c068 --- /dev/null +++ b/platformio.ini @@ -0,0 +1,41 @@ +[env] +framework = arduino +build_flags = + -Wall -Wextra + -D CONFIG_ARDUHAL_LOG_COLORS + -D CORE_DEBUG_LEVEL=ARDUHAL_LOG_LEVEL_DEBUG +lib_deps = + bblanchon/ArduinoJson @ 7.0.4 + mathieucarbou/Async TCP @ ^3.1.2 + mathieucarbou/ESP Async WebServer @ 2.10.0 +upload_protocol = esptool +monitor_speed = 115200 +monitor_filters = esp32_exception_decoder, log2file + +[platformio] +lib_dir = . +; src_dir = examples/AccessPoint +; src_dir = examples/Basic +src_dir = examples/Benchmark +; src_dir = examples/Chart +; src_dir = examples/Dynamic +; src_dir = examples/Interactive + +[env:v6] +platform = espressif32@6.7.0 +board = esp32-s3-devkitc-1 + +[env:arduino-v3] +platform = espressif32 +platform_packages= + platformio/framework-arduinoespressif32 @ https://github.com/espressif/arduino-esp32.git#3.0.0-rc3 + platformio/framework-arduinoespressif32-libs @ https://github.com/espressif/esp32-arduino-libs.git#951ade74d7886e1ce931ea46614c4ac47ae3a6c0 +board = esp32-s3-devkitc-1 + +[env:esp8266] +platform = espressif8266 +board = huzzah +lib_deps = + bblanchon/ArduinoJson @ 7.0.4 + mathieucarbou/ESP Async WebServer @ 2.10.0 + esphome/ESPAsyncTCP-esphome @ 2.0.0