From ad4002ecfb73a6a65ca0954b5ceeba2ac893a79b Mon Sep 17 00:00:00 2001 From: Tony Tran Date: Fri, 11 Sep 2026 12:20:25 +0700 Subject: [PATCH] update --- README.md | 7 +++++-- WebServerManager.cpp | 8 ++++---- ZoneManager.cpp | 6 +++--- 3 files changed, 12 insertions(+), 9 deletions(-) diff --git a/README.md b/README.md index 53dbbfa..292d72a 100644 --- a/README.md +++ b/README.md @@ -65,13 +65,16 @@ Install via Library Manager (exact names to search for): | Library | Used for | Notes | |---|---|---| -| `ArduinoJson` (by Benoit Blanchon) | REST API + WebSocket JSON | v7.x | -| `ESP Async WebServer` (by me-no-dev / ESP32Async fork) | HTTP + WebSocket server | Only needed for stage 2 (`DIAGNOSTIC_MODE 0`). Check current ESP32-S3/Arduino-core-3.x compatibility for whichever fork you install — this ecosystem has had breaking forks; if it doesn't build, the `ESP32Async/ESPAsyncWebServer` fork is the actively maintained one as of this writing. | +| `ArduinoJson` (by Benoit Blanchon) | REST API + WebSocket JSON | v7.x — code uses the current `JsonDocument` API (not the deprecated `StaticJsonDocument`) | +| `ESP Async WebServer` (ESP32Async fork) | HTTP + WebSocket server | Only needed for stage 2 (`DIAGNOSTIC_MODE 0`) | | `AsyncTCP` | dependency of ESP Async WebServer | matching fork/version to the WebServer library above | Board package: **esp32 by Espressif Systems**, board = your specific ESP32-S3 dev board. +Confirmed building clean (no warnings) with: esp32 core 3.3.11, +ArduinoJson (JsonDocument API), ESP_Async_WebServer + Async_TCP. + ## Project layout ``` diff --git a/WebServerManager.cpp b/WebServerManager.cpp index 2d18db3..ef053ea 100644 --- a/WebServerManager.cpp +++ b/WebServerManager.cpp @@ -45,7 +45,7 @@ void WebServerManager::setupRoutes() { // Basic health check, handy when bringing up a new node in the // future multi-radar setup. _server.on("/status", HTTP_GET, [](AsyncWebServerRequest *request) { - StaticJsonDocument<128> doc; + JsonDocument doc; doc["status"] = "ok"; doc["uptime_ms"] = millis(); String out; @@ -96,16 +96,16 @@ void WebServerManager::loop() { void WebServerManager::broadcastFrame(const RadarFrame &frame) { if (_ws.count() == 0) return; // skip serialization work if nobody's listening - StaticJsonDocument<512> doc; + JsonDocument doc; doc["sensor"] = "LD2453"; doc["node_id"] = frame.node_id; doc["sequence"] = frame.sequence_number; doc["timestamp"] = frame.timestamp_ms; - JsonArray targets = doc.createNestedArray("targets"); + JsonArray targets = doc["targets"].to(); for (uint8_t i = 0; i < frame.targetCount && i < 3; i++) { const RadarTarget &t = frame.targets[i]; - JsonObject jt = targets.createNestedObject(); + JsonObject jt = targets.add(); jt["id"] = i + 1; // radar slot index, NOT a persistent person ID jt["valid"] = t.valid; jt["x"] = t.x_mm; diff --git a/ZoneManager.cpp b/ZoneManager.cpp index db3ea01..69cda84 100644 --- a/ZoneManager.cpp +++ b/ZoneManager.cpp @@ -51,10 +51,10 @@ void ZoneManager::setZone(uint8_t zoneIndex, const Zone &zone) { } String ZoneManager::zonesToJson() const { - StaticJsonDocument<512> doc; + JsonDocument doc; JsonArray arr = doc.to(); for (uint8_t i = 0; i < MAX_ZONES; i++) { - JsonObject z = arr.createNestedObject(); + JsonObject z = arr.add(); z["id"] = i + 1; z["x1"] = _zones[i].x1; z["y1"] = _zones[i].y1; @@ -68,7 +68,7 @@ String ZoneManager::zonesToJson() const { } bool ZoneManager::zonesFromJson(const uint8_t *data, size_t len) { - StaticJsonDocument<512> doc; + JsonDocument doc; DeserializationError err = deserializeJson(doc, data, len); if (err) return false;