diff --git a/.gitignore b/.gitignore index ac78fb2..e05d7b9 100644 --- a/.gitignore +++ b/.gitignore @@ -27,9 +27,6 @@ elf_archive/ coredump_report.txt coredump.bin -# Project Specific / Generated Source -src/SomfyController.ino.cpp - # Ignore Somfy INO/Bin files SomfyController.ino.XIAO_ESP32S3.bin SomfyController.ino.esp32c3.bin diff --git a/src/SomfyController.ino b/src/SomfyController.cpp similarity index 100% rename from src/SomfyController.ino rename to src/SomfyController.cpp diff --git a/src/outputs/SocketEmitter.cpp b/src/outputs/SocketEmitter.cpp index f84a133..3c4b85f 100644 --- a/src/outputs/SocketEmitter.cpp +++ b/src/outputs/SocketEmitter.cpp @@ -210,7 +210,12 @@ void SocketEmitter::wsEvent(AsyncWebSocket *server, AsyncWebSocketClient *client slots[slot].connectedAt = millis(); slots[slot].lastPing = 0; client->text("Connected"); - client->setCloseClientOnQueueFull(false); + // A client that stops reading (a frozen browser tab) keeps its TCP link + // up, so nothing else ever closes it, and every message dropped for it + // logged a warning that held up loop() for ~10ms. Closing it frees the + // queue; the page and Home Assistant reconnect and get the full state + // again from delayInit(). + client->setCloseClientOnQueueFull(true); sockEmit.delayInit(slot); } break;