diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index 6b4bec0..fc93223 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -2,150 +2,44 @@ name: ESPSomfy-RTS on: [push, pull_request] -env: - ARDUINO_BOARD_MANAGER_ADDITIONAL_URLS: "https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_dev_index.json" - ARDUINO_CLI_VERSION: "0.x" - ARDUINO_ESP32_VERSION: "2.0.10" - ARDUINO_JSON_VERSION: "6.21.3" - ESPTOOL_VERSION: "4.6" - LITTLEFS_VERSION: "v2.5.1" - MKLITTLEFS_VERSION: "3.1.0" - PUB_SUB_CLIENT_VERSION: "2.8.0" - PYTHON_VERSION: "3.10" - SMARTRC_CC1101_VERSION: "2.5.7" - WEB_SOCKET_VERSION: "2.4.0" - jobs: - littlefs: - name: LittleFS - runs-on: ubuntu-latest - - steps: - - name: Check out code - uses: actions/checkout@v3 - - - name: Checkout mklittlefs - uses: actions/checkout@v3 - with: - repository: earlephilhower/mklittlefs - path: mklittlefs - ref: ${{ env.MKLITTLEFS_VERSION }} - - - name: Checkout LittleFS - uses: actions/checkout@v3 - with: - repository: littlefs-project/littlefs - path: mklittlefs/littlefs - ref: ${{ env.LITTLEFS_VERSION }} - - - name: Build mklittlefs - run: | - make -C mklittlefs - - - name: Create LittleFS - run: | - ./mklittlefs/mklittlefs --create data --size 1441792 SomfyController.littlefs.bin - - - name: Upload binaries - uses: actions/upload-artifact@v3 - with: - name: LittleFS - path: SomfyController.littlefs.bin - retention-days: 5 - - arduino: + build: name: ${{ matrix.name }} - needs: [littlefs] runs-on: ubuntu-latest strategy: fail-fast: false matrix: include: - - board: esp32 - addr_bootloader: 0x1000 - chip: ESP32 - fqbn: esp32:esp32:esp32 + - env: esp32dev name: ESP32 - - board: lolin_c3_mini - addr_bootloader: 0x0 - chip: ESP32-C3 - fqbn: esp32:esp32:lolin_c3_mini - name: LOLIN-C3-mini - - board: lolin_s2_mini - addr_bootloader: 0x1000 - chip: ESP32-S2 - fqbn: esp32:esp32:lolin_s2_mini - name: LOLIN-S2-mini - - board: lolin_s3_mini - addr_bootloader: 0x0 - chip: ESP32-S3 - fqbn: esp32:esp32:lolin_s3_mini - name: LOLIN-S3-mini steps: - name: Check out code - uses: actions/checkout@v3 + uses: actions/checkout@v4 + + - name: Set up Python + uses: actions/setup-python@v5 with: - path: SomfyController + python-version: "3.12" - - name: Get LittleFS - uses: actions/download-artifact@v3 - with: - name: LittleFS - - - name: Install Python ${{ env.PYTHON_VERSION }} - uses: actions/setup-python@v4 - with: - python-version: ${{ env.PYTHON_VERSION }} - - - name: Upgrade pip - run: | - python -m pip install --upgrade pip - pip --version - - - name: Install ESPTool - run: | - pip install esptool==${{ env.ESPTOOL_VERSION }} - - - name: Install Arduino CLI - uses: arduino/setup-arduino-cli@v1 - with: - version: ${{ env.ARDUINO_CLI_VERSION }} - - - name: Configure Arduino CLI - run: | - arduino-cli core update-index - arduino-cli core install esp32:esp32@${{ env.ARDUINO_ESP32_VERSION }} - - - name: Configure Arduino Libraries - run: | - arduino-cli lib install ArduinoJson@${{ env.ARDUINO_JSON_VERSION }} - arduino-cli lib install PubSubClient@${{ env.PUB_SUB_CLIENT_VERSION }} - arduino-cli lib install SmartRC-CC1101-Driver-Lib@${{ env.SMARTRC_CC1101_VERSION }} - arduino-cli lib install WebSockets@${{ env.WEB_SOCKET_VERSION }} + - name: Install PlatformIO + run: pip install platformio - name: Build ${{ matrix.name }} - run: | - mkdir -p build - arduino-cli compile --clean --output-dir build --fqbn ${{ matrix.fqbn }} --warnings default ./SomfyController + run: pio run -e ${{ matrix.env }} - - name: ${{ matrix.name }} Image - run: | - python -m esptool --chip ${{ matrix.chip }} \ - merge_bin -o build/SomfyController.onboard.bin \ - ${{ matrix.addr_bootloader }} build/SomfyController.ino.bootloader.bin \ - 0x8000 build/SomfyController.ino.partitions.bin \ - 0x10000 build/SomfyController.ino.bin \ - 0x290000 SomfyController.littlefs.bin + - name: Build LittleFS image + run: pio run -e ${{ matrix.env }} -t buildfs - - name: Upload ${{ matrix.name }} - uses: actions/upload-artifact@v3 + - name: Upload firmware + uses: actions/upload-artifact@v4 with: name: ${{ matrix.name }} path: | - build/SomfyController.ino.bin - build/SomfyController.ino.bootloader.bin - build/SomfyController.ino.partitions.bin - build/SomfyController.onboard.bin + .pio/build/${{ matrix.env }}/firmware.bin + .pio/build/${{ matrix.env }}/firmware.elf + .pio/build/${{ matrix.env }}/partitions.bin + .pio/build/${{ matrix.env }}/bootloader.bin + .pio/build/${{ matrix.env }}/littlefs.bin retention-days: 5 diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index fe6096d..96b5d08 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -1,27 +1,26 @@ name: ESPSomfy-RTS Release -on: +on: release: types: [published] -env: - ARDUINO_BOARD_MANAGER_ADDITIONAL_URLS: "https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json" - ARDUINO_CLI_VERSION: "0.x" - ARDUINO_ESP32_VERSION: "2.0.17" - ARDUINO_JSON_VERSION: "6.21.5" - ESPTOOL_VERSION: "4.7" - LITTLEFS_VERSION: "v2.5.1" - MKLITTLEFS_VERSION: "3.1.0" - PUB_SUB_CLIENT_VERSION: "2.8.0" - PYTHON_VERSION: "3.10" - SMARTRC_CC1101_VERSION: "2.5.7" - WEB_SOCKET_VERSION: "2.4.0" - jobs: - littlefs: - name: LittleFS + build: + permissions: write-all + name: ${{ matrix.name }} runs-on: ubuntu-latest + strategy: + fail-fast: false + matrix: + include: + - env: esp32dev + name: ESP32 + chip: ESP32 + addr_bootloader: "0x1000" + fwname: SomfyController.esp32.bin + obname: SomfyController.onboard.esp32.bin + steps: - name: Get Release id: get_release @@ -32,34 +31,31 @@ jobs: - name: Check out code uses: actions/checkout@v4 - - name: Checkout mklittlefs - uses: actions/checkout@v4 + - name: Set up Python + uses: actions/setup-python@v5 with: - repository: earlephilhower/mklittlefs - path: mklittlefs - ref: ${{ env.MKLITTLEFS_VERSION }} + python-version: "3.12" - - name: Checkout LittleFS - uses: actions/checkout@v4 - with: - repository: littlefs-project/littlefs - path: mklittlefs/littlefs - ref: ${{ env.LITTLEFS_VERSION }} + - name: Install PlatformIO + run: pip install platformio - - name: Build mklittlefs + - name: Build firmware + run: pio run -e ${{ matrix.env }} + + - name: Build LittleFS image + run: pio run -e ${{ matrix.env }} -t buildfs + + - name: Create onboard image run: | - make -C mklittlefs + python -m esptool --chip ${{ matrix.chip }} \ + merge_bin -o ${{ matrix.obname }} \ + ${{ matrix.addr_bootloader }} .pio/build/${{ matrix.env }}/bootloader.bin \ + 0x8000 .pio/build/${{ matrix.env }}/partitions.bin \ + 0x10000 .pio/build/${{ matrix.env }}/firmware.bin \ + 0x310000 .pio/build/${{ matrix.env }}/littlefs.bin - - name: Create LittleFS - run: | - ./mklittlefs/mklittlefs --create data --size 1441792 SomfyController.littlefs.bin - - - name: Upload binaries - uses: actions/upload-artifact@v4 - with: - name: LittleFS - path: SomfyController.littlefs.bin - retention-days: 5 + - name: Compress onboard image + run: zip ${{ matrix.obname }}.zip ${{ matrix.obname }} - name: Upload LittleFS uses: shogo82148/actions-upload-release-asset@v1.7.5 @@ -67,129 +63,20 @@ jobs: github_token: ${{ github.token }} upload_url: ${{ steps.get_release.outputs.upload_url }} asset_name: SomfyController.littlefs.bin - asset_path: SomfyController.littlefs.bin + asset_path: .pio/build/${{ matrix.env }}/littlefs.bin overwrite: true - arduino: - permissions: write-all - name: ${{ matrix.name }} - needs: [littlefs] - runs-on: ubuntu-latest - - strategy: - fail-fast: false - matrix: - include: - - board: esp32 - addr_bootloader: 0x1000 - chip: ESP32 - fqbn: esp32:esp32:esp32wrover:PartitionScheme=default,FlashMode=qio,FlashFreq=80,UploadSpeed=921600,DebugLevel=none,EraseFlash=none - # esp32:esp32:esp32wrover:PartitionScheme=default,FlashMode=qio,FlashFreq=80,UploadSpeed=921600,DebugLevel=none,EraseFlash=none - name: ESP32 - obname: SomfyController.onboard.esp32.bin - fwname: SomfyController.ino.esp32.bin - - board: esp32c3 - addr_bootloader: 0x0 - chip: ESP32-C3 - fqbn: esp32:esp32:esp32c3:JTAGAdapter=default,CDCOnBoot=cdc,PartitionScheme=default,CPUFreq=160,FlashMode=qio,FlashFreq=80,FlashSize=4M,UploadSpeed=921600,DebugLevel=none,EraseFlash=none - # esp32:esp32:esp32c3:JTAGAdapter=default,CDCOnBoot=default,PartitionScheme=default,CPUFreq=160,FlashMode=qio,FlashFreq=80,FlashSize=4M,UploadSpeed=921600,DebugLevel=none,EraseFlash=none - name: ESP32C3 - obname: SomfyController.onboard.esp32c3.bin - fwname: SomfyController.ino.esp32c3.bin - - board: esp32s2 - addr_bootloader: 0x1000 - chip: ESP32-S2 - fqbn: esp32:esp32:esp32s2:JTAGAdapter=default,CDCOnBoot=cdc,MSCOnBoot=default,DFUOnBoot=default,UploadMode=default,PSRAM=disabled,PartitionScheme=default,CPUFreq=240,FlashMode=qio,FlashFreq=80,FlashSize=4M,UploadSpeed=921600,DebugLevel=none,EraseFlash=none - # esp32:esp32:esp32s2:JTAGAdapter=default,CDCOnBoot=default,MSCOnBoot=default,DFUOnBoot=default,UploadMode=default,PSRAM=disabled,PartitionScheme=default,CPUFreq=240,FlashMode=qio,FlashFreq=80,FlashSize=4M,UploadSpeed=921600,DebugLevel=none,EraseFlash=none - name: ESP32S2 - obname: SomfyController.onboard.esp32s2.bin - fwname: SomfyController.ino.esp32s2.bin - - board: esp32s3 - addr_bootloader: 0x0 - chip: ESP32-S3 - fqbn: esp32:esp32:esp32s3:JTAGAdapter=default,PSRAM=disabled,FlashMode=qio,FlashSize=4M,LoopCore=1,EventsCore=1,USBMode=hwcdc,CDCOnBoot=cdc,MSCOnBoot=default,DFUOnBoot=default,UploadMode=default,PartitionScheme=default,CPUFreq=240,UploadSpeed=921600,DebugLevel=none,EraseFlash=none - # esp32:esp32:esp32s3:JTAGAdapter=default,PSRAM=disabled,FlashMode=qio,FlashSize=4M,LoopCore=1,EventsCore=1,USBMode=hwcdc,CDCOnBoot=cdc,MSCOnBoot=default,DFUOnBoot=default,UploadMode=default,PartitionScheme=default,CPUFreq=240,UploadSpeed=921600,DebugLevel=none,EraseFlash=none - name: ESP32S3 - fwname: SomfyController.ino.esp32s3.bin - obname: SomfyController.onboard.esp32s3.bin - steps: - - name: Get Release - id: get_release - uses: bruceadams/get-release@v1.3.2 - env: - GITHUB_TOKEN: ${{ github.token }} - - - name: Check out code - uses: actions/checkout@v4 - with: - path: SomfyController - - - name: Get LittleFS - uses: actions/download-artifact@v4 - with: - name: LittleFS - - - name: Install Python ${{ env.PYTHON_VERSION }} - uses: actions/setup-python@v5 - with: - python-version: ${{ env.PYTHON_VERSION }} - - - name: Upgrade pip - run: | - python -m pip install --upgrade pip - pip --version - - - name: Install ESPTool - run: | - pip install esptool==${{ env.ESPTOOL_VERSION }} - - - name: Install Arduino CLI - uses: arduino/setup-arduino-cli@v1 - with: - version: ${{ env.ARDUINO_CLI_VERSION }} - - - name: Configure Arduino CLI - run: | - arduino-cli core update-index - arduino-cli core install esp32:esp32@${{ env.ARDUINO_ESP32_VERSION }} - - - name: Configure Arduino Libraries - run: | - arduino-cli lib install ArduinoJson@${{ env.ARDUINO_JSON_VERSION }} - arduino-cli lib install PubSubClient@${{ env.PUB_SUB_CLIENT_VERSION }} - arduino-cli lib install SmartRC-CC1101-Driver-Lib@${{ env.SMARTRC_CC1101_VERSION }} - arduino-cli lib install WebSockets@${{ env.WEB_SOCKET_VERSION }} - - - name: Build ${{ matrix.name }} - run: | - mkdir -p build${{ matrix.name }} - arduino-cli compile --clean --output-dir build${{ matrix.name }} --fqbn ${{ matrix.fqbn }} --warnings none ./SomfyController - - - name: ${{ matrix.name }} Image - run: | - python -m esptool --chip ${{ matrix.chip }} \ - merge_bin -o ${{ matrix.obname }} \ - ${{ matrix.addr_bootloader }} build${{ matrix.name }}/SomfyController.ino.bootloader.bin \ - 0x8000 build${{ matrix.name }}/SomfyController.ino.partitions.bin \ - 0x10000 build${{ matrix.name }}/SomfyController.ino.bin \ - 0x290000 SomfyController.littlefs.bin - - - name: Upload Firmware ${{ matrix.name }} + - name: Upload firmware uses: shogo82148/actions-upload-release-asset@v1.7.5 with: github_token: ${{ github.token }} upload_url: ${{ steps.get_release.outputs.upload_url }} asset_name: ${{ matrix.fwname }} - asset_path: build${{ matrix.name }}/SomfyController.ino.bin + asset_path: .pio/build/${{ matrix.env }}/firmware.bin + overwrite: true - - name: ${{ matrix.name }} Compress Onboard Image - run: | - zip ${{ matrix.obname }}.zip ./${{ matrix.obname }} - - - name: Upload Onboard ${{ matrix.name }} + - name: Upload onboard image uses: shogo82148/actions-upload-release-asset@v1.7.5 - # env: - # GITHUB_TOKEN: ${{ github.token }} with: github_token: ${{ github.token }} upload_url: ${{ steps.get_release.outputs.upload_url }} @@ -197,4 +84,3 @@ jobs: asset_path: ${{ matrix.obname }}.zip overwrite: true asset_content_type: application/zip - diff --git a/platformio.ini b/platformio.ini index b237059..2141691 100644 --- a/platformio.ini +++ b/platformio.ini @@ -1,64 +1,39 @@ ; PlatformIO Project Configuration File -; -; Build options: build flags, source filter -; Upload options: custom upload port, speed and extra flags -; Library options: dependencies, extra library storages -; Advanced options: extra scripting -; -; Please visit documentation for the other options and examples ; https://docs.platformio.org/page/projectconf.html [platformio] default_envs = esp32dev -[env:esp32dev] +; Shared settings for all environments +[env] platform = espressif32 -board = esp32dev framework = arduino -lib_deps = +lib_deps = bblanchon/ArduinoJson@^7.2.2 lsatan/SmartRC-CC1101-Driver-Lib@^2.5.7 knolleary/PubSubClient@^2.8 - esp32async/ESPAsyncWebServer @ ^3.10.3 - esp32async/AsyncTCP @ ^3.4.10 + esp32async/ESPAsyncWebServer@^3.10.3 + esp32async/AsyncTCP@^3.4.10 extra_scripts = pre:minify.py board_build.partitions = huge_app.csv board_build.filesystem = littlefs -build_flags = +build_flags = -DCONFIG_ESP_COREDUMP_ENABLE_TO_FLASH=1 -DCONFIG_ESP_COREDUMP_DATA_FORMAT_ELF=1 -DCONFIG_ESP_COREDUMP_CHECKSUM_CRC32=1 -DCONFIG_ESP_TASK_WDT_PANIC=1 -DCONFIG_ESP_COREDUMP_DECODE_INFO=1 monitor_speed = 115200 -monitor_filters = +monitor_filters = time esp32_exception_decoder log2file -[env:esp32devdbg] -build_type = debug -platform = espressif32 +[env:esp32dev] board = esp32dev -framework = arduino -lib_deps = - bblanchon/ArduinoJson@^7.2.2 - links2004/WebSockets@^2.7.3 - lsatan/SmartRC-CC1101-Driver-Lib@^2.5.7 - knolleary/PubSubClient@^2.8 -extra_scripts = pre:minify.py -board_build.partitions = huge_app.csv -board_build.filesystem = littlefs -[env:esp32c3dev] -platform = espressif32 -board = esp32-c3-devkitm-1 -framework = arduino -lib_deps = - bblanchon/ArduinoJson@^7.2.2 - links2004/WebSockets@^2.7.3 - lsatan/SmartRC-CC1101-Driver-Lib@^2.5.7 - knolleary/PubSubClient@^2.8 -extra_scripts = pre:minify.py -board_build.partitions = min_spiffs.csv -board_build.filesystem = littlefs +[env:esp32devdbg] +board = esp32dev +build_type = debug + +