Compare commits
	
		
			8 Commits
		
	
	
		
			v1.3.44
			...
			e564c6eeae
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| e564c6eeae | |||
| 4288dd0cd4 | |||
| 37d43b2d7d | |||
| adb354ddcd | |||
| 15d5e5edce | |||
| c6edf30245 | |||
| 65ac207f36 | |||
| 698abbd669 | 
							
								
								
									
										4
									
								
								.github/workflows/gitea-release.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										4
									
								
								.github/workflows/gitea-release.yml
									
									
									
									
										vendored
									
									
								
							| @@ -40,8 +40,8 @@ jobs: | |||||||
|         # Copy firmware binary |         # Copy firmware binary | ||||||
|         cp .pio/build/esp32dev/firmware.bin .pio/build/esp32dev/upgrade_filaman_firmware_v${VERSION}.bin |         cp .pio/build/esp32dev/firmware.bin .pio/build/esp32dev/upgrade_filaman_firmware_v${VERSION}.bin | ||||||
|          |          | ||||||
|         # Create SPIFFS binary (without header) |         # Create SPIFFS binary with minimal header | ||||||
|         cp .pio/build/esp32dev/spiffs.bin .pio/build/esp32dev/upgrade_filaman_website_v${VERSION}.bin |         ( printf '\xe9' && cat .pio/build/esp32dev/spiffs.bin ) > .pio/build/esp32dev/upgrade_filaman_website_v${VERSION}.bin | ||||||
|          |          | ||||||
|         # Create full binary |         # Create full binary | ||||||
|         (cd .pio/build/esp32dev &&  |         (cd .pio/build/esp32dev &&  | ||||||
|   | |||||||
							
								
								
									
										4
									
								
								.github/workflows/github-release.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										4
									
								
								.github/workflows/github-release.yml
									
									
									
									
										vendored
									
									
								
							| @@ -47,8 +47,8 @@ jobs: | |||||||
|         # Copy firmware binary |         # Copy firmware binary | ||||||
|         cp .pio/build/esp32dev/firmware.bin .pio/build/esp32dev/upgrade_filaman_firmware_v${VERSION}.bin |         cp .pio/build/esp32dev/firmware.bin .pio/build/esp32dev/upgrade_filaman_firmware_v${VERSION}.bin | ||||||
|          |          | ||||||
|         # Create SPIFFS binary (without header) |         # Create SPIFFS binary with minimal header | ||||||
|         cp .pio/build/esp32dev/spiffs.bin .pio/build/esp32dev/upgrade_filaman_website_v${VERSION}.bin |         ( printf '\xe9\x01\x00\x00' && cat .pio/build/esp32dev/spiffs.bin ) > .pio/build/esp32dev/upgrade_filaman_website_v${VERSION}.bin | ||||||
|          |          | ||||||
|         # Create full binary (always) |         # Create full binary (always) | ||||||
|         (cd .pio/build/esp32dev &&  |         (cd .pio/build/esp32dev &&  | ||||||
|   | |||||||
							
								
								
									
										17
									
								
								CHANGELOG.md
									
									
									
									
									
								
							
							
						
						
									
										17
									
								
								CHANGELOG.md
									
									
									
									
									
								
							| @@ -1,5 +1,22 @@ | |||||||
| # Changelog | # Changelog | ||||||
|  |  | ||||||
|  | ## [1.3.47] - 2025-02-22 | ||||||
|  | ### Changed | ||||||
|  | - update webpages for version v1.3.47 | ||||||
|  | - workflow: optimize firmware and SPIFFS update process, improve progress handling and logging | ||||||
|  |  | ||||||
|  |  | ||||||
|  | ## [1.3.46] - 2025-02-22 | ||||||
|  | ### Changed | ||||||
|  | - update webpages for version v1.3.46 | ||||||
|  |  | ||||||
|  |  | ||||||
|  | ## [1.3.45] - 2025-02-22 | ||||||
|  | ### Changed | ||||||
|  | - update webpages for version v1.3.45 | ||||||
|  | - workflow: update SPIFFS binary creation to include minimal header and adjust update validation logic | ||||||
|  |  | ||||||
|  |  | ||||||
| ## [1.3.44] - 2025-02-22 | ## [1.3.44] - 2025-02-22 | ||||||
| ### Changed | ### Changed | ||||||
| - update webpages for version v1.3.44 | - update webpages for version v1.3.44 | ||||||
|   | |||||||
| @@ -189,13 +189,6 @@ | |||||||
|  |  | ||||||
|             const xhr = new XMLHttpRequest(); |             const xhr = new XMLHttpRequest(); | ||||||
|             xhr.open('POST', '/update', true); |             xhr.open('POST', '/update', true); | ||||||
|             xhr.upload.onprogress = (e) => { |  | ||||||
|                 if (e.lengthComputable) { |  | ||||||
|                     const percentComplete = (e.loaded / e.total) * 100; |  | ||||||
|                     progress.style.width = percentComplete + '%'; |  | ||||||
|                     progress.textContent = Math.round(percentComplete) + '%'; |  | ||||||
|                 } |  | ||||||
|             }; |  | ||||||
|  |  | ||||||
|             xhr.onload = function() { |             xhr.onload = function() { | ||||||
|                 try { |                 try { | ||||||
| @@ -203,41 +196,27 @@ | |||||||
|                     try { |                     try { | ||||||
|                         const jsonResponse = JSON.parse(response); |                         const jsonResponse = JSON.parse(response); | ||||||
|                          |                          | ||||||
|                         // Handle progress updates |                         // Zeige finale Nachricht | ||||||
|                         if (jsonResponse.progress !== undefined) { |                         status.textContent = jsonResponse.message || "Update complete"; | ||||||
|                             const percent = jsonResponse.progress; |                         status.classList.add(jsonResponse.success ? 'success' : 'error'); | ||||||
|                             progress.style.width = percent + '%'; |                         status.style.display = 'block'; | ||||||
|                             progress.textContent = Math.round(percent) + '%'; |  | ||||||
|                             return; |  | ||||||
|                         } |  | ||||||
|                          |                          | ||||||
|                         // Handle success/error messages |                         if (jsonResponse.success) { | ||||||
|                         response = jsonResponse.message; |                             progress.style.width = '100%'; | ||||||
|  |                             progress.textContent = '100%'; | ||||||
|                              |                              | ||||||
|                         if (jsonResponse.restart) { |                             // Automatischer Neustart nach erfolgreicher Aktualisierung | ||||||
|                             status.textContent = response + " Redirecting in 20 seconds..."; |                             status.textContent = "Update successful! Restarting device..."; | ||||||
|                             let countdown = 20; |                             setTimeout(() => { | ||||||
|                             const timer = setInterval(() => { |                                 window.location.reload(); | ||||||
|                                 countdown--; |                             }, 5000); | ||||||
|                                 if (countdown <= 0) { |                         } else { | ||||||
|                                     clearInterval(timer); |                             document.querySelectorAll('form input[type=submit]').forEach(btn => btn.disabled = false); | ||||||
|                                     window.location.href = '/'; |  | ||||||
|                                 } else { |  | ||||||
|                                     status.textContent = response + ` Redirecting in ${countdown} seconds...`; |  | ||||||
|                                 } |  | ||||||
|                             }, 1000); |  | ||||||
|                         } |                         } | ||||||
|                     } catch (e) { |                     } catch (e) { | ||||||
|                         console.error('JSON parse error:', e); |                         console.error('JSON parse error:', e); | ||||||
|                         status.textContent = 'Update failed: Invalid response from server'; |                         status.textContent = 'Update failed: Invalid response from server'; | ||||||
|                         status.classList.add('error'); |                         status.classList.add('error'); | ||||||
|                     } |  | ||||||
|                      |  | ||||||
|                     status.textContent = response; |  | ||||||
|                     status.classList.add(xhr.status === 200 ? 'success' : 'error'); |  | ||||||
|                     status.style.display = 'block'; |  | ||||||
|                      |  | ||||||
|                     if (xhr.status !== 200) { |  | ||||||
|                         document.querySelectorAll('form input[type=submit]').forEach(btn => btn.disabled = false); |                         document.querySelectorAll('form input[type=submit]').forEach(btn => btn.disabled = false); | ||||||
|                     } |                     } | ||||||
|                 } catch (error) { |                 } catch (error) { | ||||||
|   | |||||||
| @@ -9,7 +9,7 @@ | |||||||
| ; https://docs.platformio.org/page/projectconf.html | ; https://docs.platformio.org/page/projectconf.html | ||||||
|  |  | ||||||
| [common] | [common] | ||||||
| version = "1.3.44" | version = "1.3.47" | ||||||
|  |  | ||||||
| #test | #test | ||||||
|  |  | ||||||
|   | |||||||
| @@ -7,6 +7,7 @@ | |||||||
| #include "nfc.h" | #include "nfc.h" | ||||||
| #include "scale.h" | #include "scale.h" | ||||||
| #include "esp_task_wdt.h" | #include "esp_task_wdt.h" | ||||||
|  | #include "esp_log.h" | ||||||
| #include <Update.h> | #include <Update.h> | ||||||
| #include "display.h" | #include "display.h" | ||||||
|  |  | ||||||
| @@ -393,35 +394,31 @@ void setupWebserver(AsyncWebServer &server) { | |||||||
|             oledShowMessage("Upgrade please wait"); |             oledShowMessage("Upgrade please wait"); | ||||||
|  |  | ||||||
|             if (!index) { |             if (!index) { | ||||||
|  |                 // Reduziere Debug-Level während des Updates | ||||||
|  |                 esp_log_level_set("*", ESP_LOG_ERROR); | ||||||
|  |                  | ||||||
|                 updateSize = request->contentLength(); |                 updateSize = request->contentLength(); | ||||||
|                 command = (filename.indexOf("spiffs") > -1) ? U_SPIFFS : U_FLASH; |                 command = (filename.indexOf("spiffs") > -1) ? U_SPIFFS : U_FLASH; | ||||||
|                 Serial.printf("Update Start: %s\nSize: %u\nCommand: %d\n", filename.c_str(), updateSize, command); |  | ||||||
|                  |  | ||||||
|                 // Überprüfe die SPIFFS-Größe |  | ||||||
|                 if (command == U_SPIFFS && updateSize > 0x30000) { |  | ||||||
|                     String errorMsg = "SPIFFS update too large. Maximum size is 192KB"; |  | ||||||
|                     Serial.println(errorMsg); |  | ||||||
|                     request->send(400, "application/json", "{\"success\":false,\"message\":\"" + errorMsg + "\"}"); |  | ||||||
|                     return; |  | ||||||
|                 } |  | ||||||
|                  |                  | ||||||
|                 if (command == U_SPIFFS) { |                 if (command == U_SPIFFS) { | ||||||
|                     Serial.println("Backup JSON configs..."); |                     oledShowMessage("SPIFFS Update..."); | ||||||
|                     backupJsonConfigs(); |                     backupJsonConfigs(); | ||||||
|                      |                      | ||||||
|                     if (!Update.begin(updateSize, command, false)) { |                     if (!Update.begin(updateSize, command)) { | ||||||
|                         Serial.printf("Update Begin Error: %s\n", Update.errorString()); |  | ||||||
|                         Serial.println("Restoring JSON configs..."); |  | ||||||
|                         restoreJsonConfigs(); |                         restoreJsonConfigs(); | ||||||
|                         String errorMsg = String("Update begin failed: ") + Update.errorString(); |                         String errorMsg = String("Update begin failed: ") + Update.errorString(); | ||||||
|                         request->send(400, "application/json", "{\"success\":false,\"message\":\"" + errorMsg + "\"}"); |                         request->send(400, "application/json", "{\"success\":false,\"message\":\"" + errorMsg + "\"}"); | ||||||
|  |                         // Stelle Debug-Level wieder her | ||||||
|  |                         esp_log_level_set("*", ESP_LOG_INFO); | ||||||
|                         return; |                         return; | ||||||
|                     } |                     } | ||||||
|                 } else { |                 } else { | ||||||
|  |                     oledShowMessage("Firmware Update..."); | ||||||
|                     if (!Update.begin(updateSize, command)) { |                     if (!Update.begin(updateSize, command)) { | ||||||
|                         Serial.printf("Update Begin Error: %s\n", Update.errorString()); |  | ||||||
|                         String errorMsg = String("Update begin failed: ") + Update.errorString(); |                         String errorMsg = String("Update begin failed: ") + Update.errorString(); | ||||||
|                         request->send(400, "application/json", "{\"success\":false,\"message\":\"" + errorMsg + "\"}"); |                         request->send(400, "application/json", "{\"success\":false,\"message\":\"" + errorMsg + "\"}"); | ||||||
|  |                         // Stelle Debug-Level wieder her | ||||||
|  |                         esp_log_level_set("*", ESP_LOG_INFO); | ||||||
|                         return; |                         return; | ||||||
|                     } |                     } | ||||||
|                 } |                 } | ||||||
| @@ -429,9 +426,7 @@ void setupWebserver(AsyncWebServer &server) { | |||||||
|  |  | ||||||
|             if (len) { |             if (len) { | ||||||
|                 if (Update.write(data, len) != len) { |                 if (Update.write(data, len) != len) { | ||||||
|                     Serial.printf("Update Write Error: %s\n", Update.errorString()); |  | ||||||
|                     if (command == U_SPIFFS) { |                     if (command == U_SPIFFS) { | ||||||
|                         Serial.println("Restoring JSON configs..."); |  | ||||||
|                         restoreJsonConfigs(); |                         restoreJsonConfigs(); | ||||||
|                     } |                     } | ||||||
|                     String errorMsg = String("Write failed: ") + Update.errorString(); |                     String errorMsg = String("Write failed: ") + Update.errorString(); | ||||||
| @@ -439,23 +434,28 @@ void setupWebserver(AsyncWebServer &server) { | |||||||
|                     return; |                     return; | ||||||
|                 } |                 } | ||||||
|                  |                  | ||||||
|                 Serial.printf("Progress: %u/%u\n", index + len, updateSize); |                 // Update OLED Display alle 25% | ||||||
|                 String progress = "{\"progress\":" + String((index + len) * 100 / updateSize) + "}"; |                 static int lastProgress = -1; | ||||||
|                 request->send(200, "application/json", progress); |                 int currentProgress = (index + len) * 100 / updateSize; | ||||||
|  |                 if (currentProgress % 25 == 0 && currentProgress != lastProgress) { | ||||||
|  |                     lastProgress = currentProgress; | ||||||
|  |                     oledShowMessage(String(currentProgress) + "% complete"); | ||||||
|  |                 } | ||||||
|             } |             } | ||||||
|  |  | ||||||
|             if (final) { |             if (final) { | ||||||
|                 if (!Update.end(true)) { |                 if (!Update.end(true)) { | ||||||
|                     Serial.printf("Update End Error: %s\n", Update.errorString()); |  | ||||||
|                     if (command == U_SPIFFS) { |                     if (command == U_SPIFFS) { | ||||||
|                         Serial.println("Restoring JSON configs..."); |  | ||||||
|                         restoreJsonConfigs(); |                         restoreJsonConfigs(); | ||||||
|                     } |                     } | ||||||
|                     String errorMsg = String("Update end failed: ") + Update.errorString(); |                     String errorMsg = String("Update end failed: ") + Update.errorString(); | ||||||
|                     request->send(400, "application/json", "{\"success\":false,\"message\":\"" + errorMsg + "\"}"); |                     request->send(400, "application/json", "{\"success\":false,\"message\":\"" + errorMsg + "\"}"); | ||||||
|  |                     // Stelle Debug-Level wieder her | ||||||
|  |                     esp_log_level_set("*", ESP_LOG_INFO); | ||||||
|                     return; |                     return; | ||||||
|                 } |                 } | ||||||
|                 Serial.println("Update Success!"); |                 // Stelle Debug-Level wieder her | ||||||
|  |                 esp_log_level_set("*", ESP_LOG_INFO); | ||||||
|             } |             } | ||||||
|         } |         } | ||||||
|     ); |     ); | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user