diff --git a/src/main.cpp b/src/main.cpp index e713c8d..c3dbf11 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -17,6 +17,7 @@ #include #include "routes/config.h" #include "routes/networks.h" +#include "routes/status.h" DMXESPSerial dmx1; DMXESPSerial dmx2; @@ -309,6 +310,9 @@ void setup() server.on("/networks", HTTP_GET, [](AsyncWebServerRequest *request) { onGetNetworks(request); }); + server.on("/status", HTTP_GET, [](AsyncWebServerRequest *request) + { onGetStatus(request); }); + server.onRequestBody([](AsyncWebServerRequest *request, uint8_t *data, size_t len, size_t index, size_t total) { if (request->url() == "/config" && request->method() == HTTP_PUT) { diff --git a/src/routes/status.cpp b/src/routes/status.cpp new file mode 100644 index 0000000..4550c98 --- /dev/null +++ b/src/routes/status.cpp @@ -0,0 +1,45 @@ +#include "status.h" + +float getTemperature() +{ + float tempC = -1.0f; + temp_sensor_read_celsius(&tempC); + return tempC; +} + +int8_t getWiFiStrength() +{ + try + { + return WiFi.RSSI(); + } + catch (...) + { + return 0; + } +} + +void onGetStatus(AsyncWebServerRequest *request) +{ + JsonDocument doc; + + doc["uptime"] = millis(); + doc["chip"]["model"] = ESP.getChipModel(); + doc["chip"]["mac"] = ESP.getEfuseMac(); + doc["chip"]["revision"] = ESP.getChipRevision(); + doc["chip"]["cpuFreqMHz"] = ESP.getCpuFreqMHz(); + doc["chip"]["cycleCount"] = ESP.getCycleCount(); + doc["chip"]["tempC"] = getTemperature(); + doc["sdkVersion"] = ESP.getSdkVersion(); + doc["sketch"]["size"] = ESP.getSketchSize(); + doc["sketch"]["md5"] = ESP.getSketchMD5(); + doc["heap"]["free"] = ESP.getFreeHeap(); + doc["heap"]["total"] = ESP.getHeapSize(); + doc["psram"]["free"] = ESP.getFreePsram(); + doc["psram"]["total"] = ESP.getPsramSize(); + doc["connection"]["signalStrength"] = getWiFiStrength(); + + String jsonString; + serializeJson(doc, jsonString); + request->send(200, "application/json", jsonString); +} \ No newline at end of file diff --git a/src/routes/status.h b/src/routes/status.h new file mode 100644 index 0000000..03e821b --- /dev/null +++ b/src/routes/status.h @@ -0,0 +1,5 @@ +#include +#include +#include + +void onGetStatus(AsyncWebServerRequest *request); \ No newline at end of file