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;