From 6c4dc144d8ebd03d8d0864b4b1427bb078af5501 Mon Sep 17 00:00:00 2001 From: Tobias Maier Date: Mon, 17 Feb 2025 20:59:32 +0100 Subject: [PATCH] Added Update API endpoint --- src/global_data/defines.h | 2 +- src/networking/json_builder.cpp | 10 ++++++++++ src/networking/json_builder.h | 3 ++- src/networking/responses.cpp | 7 +++++++ 4 files changed, 20 insertions(+), 2 deletions(-) diff --git a/src/global_data/defines.h b/src/global_data/defines.h index 547b13a..522e81a 100644 --- a/src/global_data/defines.h +++ b/src/global_data/defines.h @@ -7,6 +7,6 @@ #define water_level_min_key "water_level_min" #define water_level_max_key "water_level_max" #define water_volume_key "water_volume" -#define current_software_version Version{0, 0, 8} +#define current_software_version Version{0, 0, 9} #define RESISTOR_VALUE 4 \ No newline at end of file diff --git a/src/networking/json_builder.cpp b/src/networking/json_builder.cpp index 8221b80..7390163 100644 --- a/src/networking/json_builder.cpp +++ b/src/networking/json_builder.cpp @@ -41,5 +41,15 @@ StaticJsonDocument<256> build_network_json(NetworkData wired, NetworkData wirele doc["ethernet"]["rssi"] = wired.rssi; doc["ethernet"]["link"] = wired.link; + return doc; +} + +StaticJsonDocument<128> build_ota_json(OTAStatus status) { + StaticJsonDocument<256> doc; + doc["update_available"] = status.update_available; + doc["current_version"] = String(status.current_version.major) + "." + String(status.current_version.minor) + "." + String(status.current_version.patch); + doc["new_version"] = String(status.latest_version.major) + "." + String(status.latest_version.minor) + "." + String(status.latest_version.patch); + doc["progress"] = status.update_progress; + return doc; } \ No newline at end of file diff --git a/src/networking/json_builder.h b/src/networking/json_builder.h index 4aacb66..6aed2ab 100644 --- a/src/networking/json_builder.h +++ b/src/networking/json_builder.h @@ -4,4 +4,5 @@ StaticJsonDocument<128> build_shunt_data_json(SensorData data); StaticJsonDocument<128> build_water_data_json(WaterData data); StaticJsonDocument<128> build_telemetry_json(DeviceTelemetry data); -StaticJsonDocument<256> build_network_json(NetworkData wired, NetworkData wireless); \ No newline at end of file +StaticJsonDocument<256> build_network_json(NetworkData wired, NetworkData wireless); +StaticJsonDocument<128> build_ota_json(OTAStatus status); \ No newline at end of file diff --git a/src/networking/responses.cpp b/src/networking/responses.cpp index 3554047..59eb5c9 100644 --- a/src/networking/responses.cpp +++ b/src/networking/responses.cpp @@ -12,6 +12,7 @@ extern DeviceTelemetry telemetry; extern NetworkData wifi_data; extern NetworkData ethernet_data; extern SensorData shunt_data; +extern OTAStatus ota_status; extern AsyncWebServer server; @@ -36,4 +37,10 @@ void setup_api_endpoints(){ serializeJson(build_network_json(ethernet_data, wifi_data), output); request->send(200, "application/json", output); }); + + server.on("/ota_udpate_status", HTTP_GET, [](AsyncWebServerRequest* request) { + String output; + serializeJson(build_ota_json(ota_status), output); + request->send(200, "application/json", output); + }); } \ No newline at end of file