diff --git a/lib/AmsFirmwareUpdater/include/AmsFirmwareUpdater.h b/lib/AmsFirmwareUpdater/include/AmsFirmwareUpdater.h index 9c327a50..a88bcb37 100644 --- a/lib/AmsFirmwareUpdater/include/AmsFirmwareUpdater.h +++ b/lib/AmsFirmwareUpdater/include/AmsFirmwareUpdater.h @@ -61,6 +61,8 @@ public: bool isUpgradeInformationChanged(); void ackUpgradeInformationChanged(); + int getLastHttpStatus() const { return lastHttpStatus; } + bool startFirmwareUpload(uint32_t size, const char* version); bool addFirmwareUploadChunk(uint8_t* buf, size_t length); bool completeFirmwareUpload(uint32_t size); @@ -126,6 +128,7 @@ private: uint8_t* buf = NULL; uint16_t bufPos = 0; + int lastHttpStatus = 0; #if defined(ESP32) bool readPartition(uint8_t num, const esp_partition_info_t* info); diff --git a/lib/AmsFirmwareUpdater/src/AmsFirmwareUpdater.cpp b/lib/AmsFirmwareUpdater/src/AmsFirmwareUpdater.cpp index 26afdcc8..086f3b97 100644 --- a/lib/AmsFirmwareUpdater/src/AmsFirmwareUpdater.cpp +++ b/lib/AmsFirmwareUpdater/src/AmsFirmwareUpdater.cpp @@ -340,9 +340,11 @@ bool AmsFirmwareUpdater::fetchVersionDetails() { bool AmsFirmwareUpdater::fetchFirmwareChunk(HTTPClient& http) { #if FIRMWARE_UPDATE_USE_MANIFEST if(!loadManifest(false)) { + lastHttpStatus = -200; return false; } if(manifestInfo.downloadUrl.isEmpty()) { + lastHttpStatus = -201; return false; } @@ -368,6 +370,7 @@ bool AmsFirmwareUpdater::fetchFirmwareChunk(HTTPClient& http) { http.addHeader(F("x-AMS-version"), FirmwareVersion::VersionString); http.addHeader(F("Range"), range); int status = http.GET(); + lastHttpStatus = status; if(status == HTTP_CODE_PARTIAL_CONTENT || status == HTTP_CODE_OK) { if(md5.equals(F("unknown")) && manifestInfo.md5.length() > 0) { md5 = manifestInfo.md5; @@ -375,6 +378,9 @@ bool AmsFirmwareUpdater::fetchFirmwareChunk(HTTPClient& http) { return true; } } + if(lastHttpStatus == 0) { + lastHttpStatus = -202; + } return false; #else const char * headerkeys[] = { "x-MD5" }; @@ -387,6 +393,7 @@ bool AmsFirmwareUpdater::fetchFirmwareChunk(HTTPClient& http) { const char* firmwareVariant = FIRMWARE_UPDATE_CHANNEL; + lastHttpStatus = status; char url[256]; snprintf(url, sizeof(url), "%s/firmware/%s/%s/%s/chunk", FIRMWARE_UPDATE_BASE_URL, chipType, firmwareVariant, updateStatus.toVersion); #if defined(ESP8266) @@ -394,6 +401,9 @@ bool AmsFirmwareUpdater::fetchFirmwareChunk(HTTPClient& http) { client.setTimeout(5000); if(http.begin(client, url)) { #elif defined(ESP32) + if(lastHttpStatus == 0) { + lastHttpStatus = -202; + } if(http.begin(url)) { #endif http.useHTTP10(true); diff --git a/lib/SvelteUi/app/src/lib/StatusPage.svelte b/lib/SvelteUi/app/src/lib/StatusPage.svelte index c59b653b..09f535e5 100644 --- a/lib/SvelteUi/app/src/lib/StatusPage.svelte +++ b/lib/SvelteUi/app/src/lib/StatusPage.svelte @@ -220,6 +220,13 @@ {/if} + {#if sysinfo.upgrade?.x !== undefined && sysinfo.upgrade.x !== -1} +
+
+ Last HTTP status: {sysinfo.upgrade.x} +
+
+ {/if} {#if sysinfo.upgrade.n}
{translations.status?.firmware?.latest ?? "Latest"}: diff --git a/lib/SvelteUi/src/AmsWebServer.cpp b/lib/SvelteUi/src/AmsWebServer.cpp index 4d87f1f2..fcfb8fed 100644 --- a/lib/SvelteUi/src/AmsWebServer.cpp +++ b/lib/SvelteUi/src/AmsWebServer.cpp @@ -518,6 +518,7 @@ void AmsWebServer::sysinfoJson() { upinfo.toVersion, updater->getNextVersion(), updater->getProgress(), + updater->getLastHttpStatus(), ea->getUseLastMonth(), ea->getCostLastMonth(), ea->getProducedLastMonth(),