From 17307d8f03b5b05f638551ac177cecbbd918af03 Mon Sep 17 00:00:00 2001 From: Manuel Weiser Date: Thu, 20 Feb 2025 17:04:56 +0100 Subject: [PATCH] refactor: update Gitea and GitHub release workflows to include new firmware and SPIFFS binaries; fix version display in HTML files to v1.2.78 --- .github/workflows/providers/gitea-release.yml | 4 +- .../workflows/providers/github-release.yml | 6 +- html/header.html | 2 +- html/index.html | 2 +- html/rfid.html | 2 +- html/spoolman.html | 2 +- html/upgrade.html | 2 +- html/waage.html | 2 +- html/wifi.html | 2 +- platformio.ini | 73 ++++++++++++++++++- src/ota.cpp | 22 +++++- 11 files changed, 103 insertions(+), 16 deletions(-) diff --git a/.github/workflows/providers/gitea-release.yml b/.github/workflows/providers/gitea-release.yml index d7c42f8..81eaad8 100644 --- a/.github/workflows/providers/gitea-release.yml +++ b/.github/workflows/providers/gitea-release.yml @@ -36,6 +36,8 @@ jobs: run: | pio run -t buildfs # Build SPIFFS pio run # Build firmware + cp .pio/build/esp32dev/firmware.bin .pio/build/esp32dev/filaman.bin + cp .pio/build/esp32dev/spiffs.bin .pio/build/esp32dev/filaman_spiffs.bin - name: Prepare binaries run: | @@ -93,7 +95,7 @@ jobs: # Upload binaries cd .pio/build/esp32dev - for file in filaman_full.bin filaman_ota.bin; do + for file in filaman_full.bin filaman_ota.bin filaman.bin filaman_spiffs.bin; do echo "Uploading $file..." curl -k -s \ -X POST \ diff --git a/.github/workflows/providers/github-release.yml b/.github/workflows/providers/github-release.yml index e1bf6fe..856632b 100644 --- a/.github/workflows/providers/github-release.yml +++ b/.github/workflows/providers/github-release.yml @@ -25,6 +25,8 @@ jobs: run: | pio run -t buildfs # Build SPIFFS pio run # Build firmware + cp .pio/build/esp32dev/firmware.bin .pio/build/esp32dev/filaman.bin + cp .pio/build/esp32dev/spiffs.bin .pio/build/esp32dev/filaman_spiffs.bin - name: Prepare binaries run: | @@ -86,4 +88,6 @@ jobs: --title "Release ${{ steps.get_version.outputs.VERSION }}" \ --notes "${{ steps.changelog.outputs.CHANGES }}" \ .pio/build/esp32dev/filaman_full.bin \ - .pio/build/esp32dev/filaman_ota.bin \ No newline at end of file + .pio/build/esp32dev/filaman_ota.bin \ + .pio/build/esp32dev/filaman.bin \ + .pio/build/esp32dev/filaman_spiffs.bin \ No newline at end of file diff --git a/html/header.html b/html/header.html index 69c9a90..a0aa032 100644 --- a/html/header.html +++ b/html/header.html @@ -12,7 +12,7 @@
-

FilaManv1.2.79

+

FilaManv1.2.78

Filament Management Tool

diff --git a/html/index.html b/html/index.html index aabfa44..63a16a9 100644 --- a/html/index.html +++ b/html/index.html @@ -12,7 +12,7 @@
-

FilaManv1.2.79

+

FilaManv1.2.78

Filament Management Tool

diff --git a/html/rfid.html b/html/rfid.html index 705dc84..c4bb055 100644 --- a/html/rfid.html +++ b/html/rfid.html @@ -12,7 +12,7 @@
-

FilaManv1.2.79

+

FilaManv1.2.78

Filament Management Tool

diff --git a/html/spoolman.html b/html/spoolman.html index 45d1529..8d18f4a 100644 --- a/html/spoolman.html +++ b/html/spoolman.html @@ -12,7 +12,7 @@
-

FilaManv1.2.79

+

FilaManv1.2.78

Filament Management Tool

diff --git a/html/upgrade.html b/html/upgrade.html index 3696621..253e417 100644 --- a/html/upgrade.html +++ b/html/upgrade.html @@ -12,7 +12,7 @@
-

FilaManv1.2.79

+

FilaManv1.2.78

Filament Management Tool

diff --git a/html/waage.html b/html/waage.html index 0079e29..878e249 100644 --- a/html/waage.html +++ b/html/waage.html @@ -12,7 +12,7 @@
-

FilaManv1.2.79

+

FilaManv1.2.78

Filament Management Tool

diff --git a/html/wifi.html b/html/wifi.html index e02b841..c1dda19 100644 --- a/html/wifi.html +++ b/html/wifi.html @@ -12,7 +12,7 @@
-

FilaManv1.2.79

+

FilaManv1.2.78

Filament Management Tool

diff --git a/platformio.ini b/platformio.ini index 0068418..5c1697f 100644 --- a/platformio.ini +++ b/platformio.ini @@ -9,7 +9,7 @@ ; https://docs.platformio.org/page/projectconf.html [common] -version = "1.2.79" +version = "1.2.78" [env:esp32dev] platform = espressif32 @@ -78,6 +78,73 @@ extra_scripts = ;targets = buildfs, build ; Add a custom target to build both -[platformio] -default_envs = esp32dev +[env:esp32dev_ota] +platform = espressif32 +board = esp32dev +framework = arduino +monitor_speed = 115200 + +lib_deps = + tzapu/WiFiManager @ ^2.0.17 + https://github.com/me-no-dev/ESPAsyncWebServer.git#master + me-no-dev/AsyncTCP @ ^1.1.1 + bogde/HX711 @ ^0.7.5 + adafruit/Adafruit SSD1306 @ ^2.5.13 + adafruit/Adafruit GFX Library @ ^1.11.11 + adafruit/Adafruit PN532 @ ^1.3.3 + bblanchon/ArduinoJson @ ^7.3.0 + knolleary/PubSubClient @ ^2.8 + digitaldragon/SSLClient @ ^1.3.2 + +; Enable SPIFFS upload +board_build.filesystem = spiffs +; Update partition settings +board_build.partitions = partitions.csv +board_upload.flash_size = 4MB +board_build.flash_mode = dio +board_upload.flash_freq = "40m" + +build_flags = + -Os + -ffunction-sections + -fdata-sections + -DNDEBUG + -mtext-section-literals + '-D VERSION="${common.version}"' + -DASYNCWEBSERVER_REGEX + -DCORE_DEBUG_LEVEL=1 + -DCONFIG_ARDUHAL_LOG_COLORS=1 + -DOTA_DEBUG=1 + -DARDUINO_RUNNING_CORE=1 + -DARDUINO_EVENT_RUNNING_CORE=1 + -DCONFIG_OPTIMIZATION_LEVEL_DEBUG=1 + -DCONFIG_ESP32_PANIC_PRINT_REBOOT + -DCONFIG_ARDUINO_OTA_READSIZE=1024 + -DCONFIG_ASYNC_TCP_RUNNING_CORE=1 + -DCONFIG_ASYNC_TCP_USE_WDT=0 + -DCONFIG_LWIP_TCP_MSS=1460 + -DOTA_PARTITION_SUBTYPE=0x10 + -DPARTITION_TABLE_OFFSET=0x8000 + -DPARTITION_TABLE_SIZE=0x1000 + -DCONFIG_BOOTLOADER_APP_ROLLBACK_ENABLE=1 + -DCONFIG_BOOTLOADER_SKIP_VALIDATE_IN_DEEP_SLEEP=1 + -DCONFIG_BOOTLOADER_SKIP_VALIDATE_ON_POWER_ON=1 + -DCONFIG_BOOTLOADER_RESERVE_RTC_SIZE=0x1000 + -DCONFIG_PARTITION_TABLE_OFFSET=0x8000 + -DCONFIG_PARTITION_TABLE_MD5=y + -DBOOT_APP_PARTITION_OTA_0=1 + +extra_scripts = + scripts/extra_script.py + pre:scripts/pre_build.py ; wird zuerst ausgeführt + pre:scripts/pre_spiffs.py ; wird als zweites ausgeführt + pre:scripts/combine_html.py ; wird als drittes ausgeführt + scripts/gzip_files.py + +; Remove or comment out the targets line +;targets = buildfs, build + +; Add a custom target to build both +[platformio] +default_envs = esp32dev, esp32dev_ota diff --git a/src/ota.cpp b/src/ota.cpp index aab79f6..c05480b 100644 --- a/src/ota.cpp +++ b/src/ota.cpp @@ -22,7 +22,9 @@ void stopAllTasks() { void handleOTAUpload(AsyncWebServerRequest *request, String filename, size_t index, uint8_t *data, size_t len, bool final) { if (!index) { - Serial.printf("Update Start: %s\n", filename.c_str()); + bool isFullImage = filename.endsWith("full.bin"); + Serial.printf("Update Start: %s (type: %s)\n", filename.c_str(), isFullImage ? "full" : "OTA"); + if (request->contentLength() == 0) { request->send(400, "application/json", "{\"status\":\"error\",\"message\":\"Invalid file size\"}"); return; @@ -33,9 +35,21 @@ void handleOTAUpload(AsyncWebServerRequest *request, String filename, size_t ind tasksAreStopped = true; } - // Da die full.bin jetzt das korrekte Magic Byte hat, - // können wir ein normales Update ohne spezielle Flags starten - if (!Update.begin()) { + bool success; + if (isFullImage) { + // Full image update ohne Magic Byte Check, aber mit U_FLASH + success = Update.begin(UPDATE_SIZE_UNKNOWN, U_FLASH); + } else { + // Normales OTA update mit Magic Byte Check + if (data[0] != 0xE9) { + Serial.printf("Wrong magic byte: 0x%02X (expected 0xE9)\n", data[0]); + request->send(400, "application/json", "{\"status\":\"error\",\"message\":\"Invalid firmware format\"}"); + return; + } + success = Update.begin(request->contentLength()); + } + + if (!success) { Update.printError(Serial); request->send(400, "application/json", "{\"status\":\"error\",\"message\":\"Update start failed\"}"); return;