From 16175f2b9be99694d90090457cd5a5c42af75bb4 Mon Sep 17 00:00:00 2001 From: cjkas Date: Wed, 18 Mar 2026 08:27:03 +0100 Subject: [PATCH] fix crash --- src/Sockets.cpp | 4 ++-- src/WResp.cpp | 4 +++- src/WResp.h | 2 ++ src/Web.cpp | 1 + 4 files changed, 8 insertions(+), 3 deletions(-) diff --git a/src/Sockets.cpp b/src/Sockets.cpp index 51765aa..f980fa2 100644 --- a/src/Sockets.cpp +++ b/src/Sockets.cpp @@ -77,7 +77,7 @@ void SocketEmitter::startup() { } void SocketEmitter::begin() { sockServer.begin(); - sockServer.enableHeartbeat(20000, 10000, 3); + sockServer.enableHeartbeat(3000, 2000, 2); sockServer.onEvent(this->wsEvent); Serial.println("Socket Server Started..."); //settings.printAvailHeap(); @@ -90,7 +90,7 @@ JsonSockEvent *SocketEmitter::beginEmit(const char *evt) { this->json.beginEvent(&sockServer, evt, g_response, sizeof(g_response)); return &this->json; } -void SocketEmitter::endEmit(uint8_t num) { this->json.endEvent(num); sockServer.loop(); } +void SocketEmitter::endEmit(uint8_t num) { this->json.endEvent(num); esp_task_wdt_reset(); sockServer.loop(); } void SocketEmitter::endEmitRoom(uint8_t room) { if(room < SOCK_MAX_ROOMS) { room_t *r = &this->rooms[room]; diff --git a/src/WResp.cpp b/src/WResp.cpp index e44e3ba..40ade3f 100644 --- a/src/WResp.cpp +++ b/src/WResp.cpp @@ -46,6 +46,7 @@ void JsonResponse::endResponse() { server->sendContent("", 0); } void JsonResponse::send() { + esp_task_wdt_reset(); if(!this->_headersSent) server->send_P(200, "application/json", this->buff); else server->sendContent(this->buff); //Serial.printf("Sent %d bytes %d\n", strlen(this->buff), this->buffSize); @@ -130,8 +131,9 @@ void JsonFormatter::addElem(const char *name, uint32_t nval) { sprintf(this->_nu void JsonFormatter::addElem(const char *name, int16_t nval) { sprintf(this->_numbuff, "%d", nval); this->_appendNumber(name); } void JsonFormatter::addElem(const char *name, uint16_t nval) { sprintf(this->_numbuff, "%u", nval); this->_appendNumber(name); } void JsonFormatter::addElem(const char *name, int64_t lval) { sprintf(this->_numbuff, "%lld", (long long)lval); this->_appendNumber(name); } -void JsonFormatter::addElem(const char *name, uint64_t lval) { sprintf(this->_numbuff, "%llu", (unsigned long long)lval); this->_appendNumber(name); } */ +void JsonFormatter::addElem(const char *name, uint64_t lval) { sprintf(this->_numbuff, "%llu", (unsigned long long)lval); this->_appendNumber(name); } + void JsonFormatter::addElem(const char *name, bool bval) { strcpy(this->_numbuff, bval ? "true" : "false"); this->_appendNumber(name); } void JsonFormatter::_safecat(const char *val, bool escape) { diff --git a/src/WResp.h b/src/WResp.h index 4bda5d5..2efa89e 100644 --- a/src/WResp.h +++ b/src/WResp.h @@ -1,5 +1,6 @@ #include #include +#include #include "Somfy.h" #ifndef wresp_h #define wresp_h @@ -51,6 +52,7 @@ class JsonFormatter { void addElem(const char* name, uint32_t lval); void addElem(const char* name, bool bval); void addElem(const char *name, const char *val); + void addElem(const char* name, uint64_t lval); }; class JsonResponse : public JsonFormatter { protected: diff --git a/src/Web.cpp b/src/Web.cpp index 832b153..13b8737 100644 --- a/src/Web.cpp +++ b/src/Web.cpp @@ -249,6 +249,7 @@ void Web::handleController(WebServer &server) { resp.addElem("maxGroupedShades", (uint8_t)SOMFY_MAX_GROUPED_SHADES); resp.addElem("maxLinkedRemotes", (uint8_t)SOMFY_MAX_LINKED_REMOTES); resp.addElem("startingAddress", (uint32_t)somfy.startingAddress); + resp.addElem("uptime", (uint64_t)millis()); resp.beginObject("transceiver"); somfy.transceiver.toJSON(resp); resp.endObject();