From 39f9e47e5950caad7ed7ade494e4404a91641417 Mon Sep 17 00:00:00 2001 From: Rune Harlyk Date: Sat, 3 Jan 2026 17:22:04 +0100 Subject: [PATCH] =?UTF-8?q?=F0=9F=9A=9A=20Moves=20system=20metrics=20out?= =?UTF-8?q?=20of=20main?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- esp32/include/system_service.h | 7 ++++++- esp32/src/main.cpp | 11 +---------- esp32/src/system_service.cpp | 33 ++++++++++++++++++++++++++------- 3 files changed, 33 insertions(+), 18 deletions(-) diff --git a/esp32/include/system_service.h b/esp32/include/system_service.h index 57f4af4..50df30b 100644 --- a/esp32/include/system_service.h +++ b/esp32/include/system_service.h @@ -5,9 +5,13 @@ #include #include #include -#include "esp_timer.h" +#include +#include +#include #include +#include "platform_shared/message.pb.h" + namespace system_service { esp_err_t handleReset(PsychicRequest *request); esp_err_t handleRestart(PsychicRequest *request); @@ -18,6 +22,7 @@ void reset(); void restart(); void sleep(); void status(JsonObject &root); +void getAnalytics(socket_message_AnalyticsData &analytics); const char *resetReason(esp_reset_reason_t reason); } // namespace system_service \ No newline at end of file diff --git a/esp32/src/main.cpp b/esp32/src/main.cpp index ddba66a..a6a3f4b 100644 --- a/esp32/src/main.cpp +++ b/esp32/src/main.cpp @@ -242,16 +242,7 @@ void IRAM_ATTR serviceLoopEntry(void *) { EXECUTE_EVERY_N_MS(2000, { socket_message_AnalyticsData analytics = socket_message_AnalyticsData_init_zero; - analytics.max_alloc_heap = ESP.getMaxAllocHeap(); - analytics.psram_size = ESP.getPsramSize(); - analytics.free_psram = ESP.getFreePsram(); - analytics.free_heap = ESP.getFreeHeap(); - analytics.total_heap = ESP.getHeapSize(); - analytics.min_free_heap = ESP.getMinFreeHeap(); - analytics.core_temp = temperatureRead(); - analytics.fs_total = ESP_FS.totalBytes(); - analytics.fs_used = ESP_FS.usedBytes(); - analytics.uptime = esp_timer_get_time() / 1000; + system_service::getAnalytics(analytics); socket.emit(analytics); }); diff --git a/esp32/src/system_service.cpp b/esp32/src/system_service.cpp index 03d6ed4..b011c4f 100644 --- a/esp32/src/system_service.cpp +++ b/esp32/src/system_service.cpp @@ -79,30 +79,49 @@ void sleep() { } void status(JsonObject &root) { + size_t fs_total = 0, fs_used = 0; + esp_littlefs_info("spiffs", &fs_total, &fs_used); + root["esp_platform"] = ESP_PLATFORM; root["firmware_version"] = APP_VERSION; - root["max_alloc_heap"] = ESP.getMaxAllocHeap(); - root["psram_size"] = ESP.getPsramSize(); - root["free_psram"] = ESP.getFreePsram(); + root["max_alloc_heap"] = heap_caps_get_largest_free_block(MALLOC_CAP_8BIT); + root["psram_size"] = heap_caps_get_total_size(MALLOC_CAP_SPIRAM); + root["free_psram"] = heap_caps_get_free_size(MALLOC_CAP_SPIRAM); root["cpu_freq_mhz"] = ESP.getCpuFreqMHz(); root["cpu_type"] = ESP.getChipModel(); root["cpu_rev"] = ESP.getChipRevision(); root["cpu_cores"] = ESP.getChipCores(); - root["free_heap"] = ESP.getFreeHeap(); - root["min_free_heap"] = ESP.getMinFreeHeap(); + root["free_heap"] = esp_get_free_heap_size(); + root["min_free_heap"] = esp_get_minimum_free_heap_size(); root["sketch_size"] = ESP.getSketchSize(); root["free_sketch_space"] = ESP.getFreeSketchSpace(); root["sdk_version"] = ESP.getSdkVersion(); root["arduino_version"] = ARDUINO_VERSION; root["flash_chip_size"] = ESP.getFlashChipSize(); root["flash_chip_speed"] = ESP.getFlashChipSpeed(); - root["fs_total"] = ESP_FS.totalBytes(); - root["fs_used"] = ESP_FS.usedBytes(); + root["fs_total"] = fs_total; + root["fs_used"] = fs_used; root["core_temp"] = temperatureRead(); root["cpu_reset_reason"] = resetReason(esp_reset_reason()); root["uptime"] = esp_timer_get_time() / 1000000; } +void getAnalytics(socket_message_AnalyticsData &analytics) { + size_t fs_total = 0, fs_used = 0; + esp_littlefs_info("spiffs", &fs_total, &fs_used); + + analytics.max_alloc_heap = heap_caps_get_largest_free_block(MALLOC_CAP_8BIT); + analytics.psram_size = heap_caps_get_total_size(MALLOC_CAP_SPIRAM); + analytics.free_psram = heap_caps_get_free_size(MALLOC_CAP_SPIRAM); + analytics.free_heap = esp_get_free_heap_size(); + analytics.total_heap = heap_caps_get_total_size(MALLOC_CAP_8BIT); + analytics.min_free_heap = esp_get_minimum_free_heap_size(); + analytics.core_temp = temperatureRead(); + analytics.fs_total = fs_total; + analytics.fs_used = fs_used; + analytics.uptime = esp_timer_get_time() / 1000; +} + const char *resetReason(esp_reset_reason_t reason) { switch (reason) { case ESP_RST_UNKNOWN: return "Reset reason can not be determined";