From 3fa9aa927a9e09156216b68ab83b162a84d29ebb Mon Sep 17 00:00:00 2001 From: Will Miles Date: Tue, 12 Nov 2024 23:30:02 -0500 Subject: [PATCH 1/5] Publish settings and OTA state in info --- wled00/json.cpp | 2 ++ wled00/set.cpp | 1 + wled00/wled.cpp | 1 + wled00/wled_server.cpp | 4 ++-- 4 files changed, 6 insertions(+), 2 deletions(-) diff --git a/wled00/json.cpp b/wled00/json.cpp index 288059653f..c92af14f1e 100644 --- a/wled00/json.cpp +++ b/wled00/json.cpp @@ -818,8 +818,10 @@ void serializeInfo(JsonObject root) #endif #ifndef WLED_DISABLE_OTA os += 0x01; + root[F("ota")] = !otaLock; #endif root[F("opt")] = os; + root[F("settings")] = correctPIN; root[F("brand")] = F(WLED_BRAND); root[F("product")] = F(WLED_PRODUCT_NAME); diff --git a/wled00/set.cpp b/wled00/set.cpp index 712e5f254a..0612d03e78 100644 --- a/wled00/set.cpp +++ b/wled00/set.cpp @@ -587,6 +587,7 @@ void handleSettingsSet(AsyncWebServerRequest *request, byte subPage) wifiLock = request->hasArg(F("OW")); aOtaEnabled = request->hasArg(F("AO")); //createEditHandler(correctPIN && !otaLock); + interfaceUpdateCallMode = CALL_MODE_WS_SEND; } } diff --git a/wled00/wled.cpp b/wled00/wled.cpp index d6a39a399f..2629f756b4 100644 --- a/wled00/wled.cpp +++ b/wled00/wled.cpp @@ -155,6 +155,7 @@ void WLED::loop() if (strlen(settingsPIN)>0 && correctPIN && millis() - lastEditTime > PIN_TIMEOUT) { correctPIN = false; createEditHandler(false); + interfaceUpdateCallMode = CALL_MODE_WS_SEND; // schedule WS update } // reconnect WiFi to clear stale allocations if heap gets too low diff --git a/wled00/wled_server.cpp b/wled00/wled_server.cpp index e8cbb41ae5..67878db342 100644 --- a/wled00/wled_server.cpp +++ b/wled00/wled_server.cpp @@ -323,9 +323,9 @@ void initServer() releaseJSONBufferLock(); if (verboseResponse) { + interfaceUpdateCallMode = CALL_MODE_WS_SEND; // schedule WS update if (!isConfig) { - lastInterfaceUpdate = millis(); // prevent WS update until cooldown - interfaceUpdateCallMode = CALL_MODE_WS_SEND; // schedule WS update + lastInterfaceUpdate = millis(); // prevent WS update until cooldown serveJson(request); return; //if JSON contains "v" } else { doSerializeConfig = true; //serializeConfig(); //Save new settings to FS From 702fb0ee6f8f5ba0e89e73ab0dcc101e4bf41a97 Mon Sep 17 00:00:00 2001 From: Will Miles Date: Wed, 13 Nov 2024 22:19:00 -0500 Subject: [PATCH 2/5] Update lock state property names Use "settingsLocked" and "otaLocked" to clearly convey the meaning and sense. --- wled00/json.cpp | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/wled00/json.cpp b/wled00/json.cpp index c92af14f1e..7646f945af 100644 --- a/wled00/json.cpp +++ b/wled00/json.cpp @@ -802,6 +802,8 @@ void serializeInfo(JsonObject root) os += 0x40; #endif + root[F("settingsLocked")] = !correctPIN; + //os += 0x20; // indicated now removed Blynk support, may be reused to indicate another build-time option #ifdef USERMOD_CRONIXIE @@ -818,11 +820,10 @@ void serializeInfo(JsonObject root) #endif #ifndef WLED_DISABLE_OTA os += 0x01; - root[F("ota")] = !otaLock; + root[F("otaLocked")] = otaLock; #endif root[F("opt")] = os; - root[F("settings")] = correctPIN; - + root[F("brand")] = F(WLED_BRAND); root[F("product")] = F(WLED_PRODUCT_NAME); root["mac"] = escapedMac; From ee71e6276c35784c334472c6f05fdc628290de9e Mon Sep 17 00:00:00 2001 From: Will Miles Date: Thu, 23 Jan 2025 22:09:27 -0500 Subject: [PATCH 3/5] whitespace fix --- wled00/json.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/wled00/json.cpp b/wled00/json.cpp index 7646f945af..97d1033132 100644 --- a/wled00/json.cpp +++ b/wled00/json.cpp @@ -823,7 +823,7 @@ void serializeInfo(JsonObject root) root[F("otaLocked")] = otaLock; #endif root[F("opt")] = os; - + root[F("brand")] = F(WLED_BRAND); root[F("product")] = F(WLED_PRODUCT_NAME); root["mac"] = escapedMac; From cb473167759d58e448dbb5fcbf8a47614d609d17 Mon Sep 17 00:00:00 2001 From: Will Miles Date: Sat, 25 Jan 2025 15:28:38 -0500 Subject: [PATCH 4/5] Update lock state broadcasts --- wled00/cfg.cpp | 2 ++ wled00/set.cpp | 1 + wled00/util.cpp | 6 +++++- wled00/wled_server.cpp | 2 +- 4 files changed, 9 insertions(+), 2 deletions(-) diff --git a/wled00/cfg.cpp b/wled00/cfg.cpp index 3f6cfbacb6..edeef04ed3 100644 --- a/wled00/cfg.cpp +++ b/wled00/cfg.cpp @@ -643,6 +643,8 @@ bool deserializeConfig(JsonObject doc, bool fromFS) { CJSON(wifiLock, ota[F("lock-wifi")]); CJSON(aOtaEnabled, ota[F("aota")]); getStringFromJson(otaPass, pwd, 33); //normally not present due to security + interfaceUpdateCallMode = CALL_MODE_WS_SEND; + stateChanged = true; } #ifdef WLED_ENABLE_DMX diff --git a/wled00/set.cpp b/wled00/set.cpp index 0612d03e78..e22272d27f 100644 --- a/wled00/set.cpp +++ b/wled00/set.cpp @@ -588,6 +588,7 @@ void handleSettingsSet(AsyncWebServerRequest *request, byte subPage) aOtaEnabled = request->hasArg(F("AO")); //createEditHandler(correctPIN && !otaLock); interfaceUpdateCallMode = CALL_MODE_WS_SEND; + stateChanged = true; } } diff --git a/wled00/util.cpp b/wled00/util.cpp index 0b78a46469..c2c0359868 100644 --- a/wled00/util.cpp +++ b/wled00/util.cpp @@ -355,7 +355,11 @@ void checkSettingsPIN(const char* pin) { if (!correctPIN && millis() - lastEditTime < PIN_RETRY_COOLDOWN) return; // guard against PIN brute force bool correctBefore = correctPIN; correctPIN = (strlen(settingsPIN) == 0 || strncmp(settingsPIN, pin, 4) == 0); - if (correctBefore != correctPIN) createEditHandler(correctPIN); + if (correctBefore != correctPIN) { + createEditHandler(correctPIN); + interfaceUpdateCallMode = CALL_MODE_WS_SEND; + stateChanged = true; + } lastEditTime = millis(); } diff --git a/wled00/wled_server.cpp b/wled00/wled_server.cpp index 67878db342..b6631bdbd4 100644 --- a/wled00/wled_server.cpp +++ b/wled00/wled_server.cpp @@ -323,9 +323,9 @@ void initServer() releaseJSONBufferLock(); if (verboseResponse) { - interfaceUpdateCallMode = CALL_MODE_WS_SEND; // schedule WS update if (!isConfig) { lastInterfaceUpdate = millis(); // prevent WS update until cooldown + interfaceUpdateCallMode = CALL_MODE_WS_SEND; // schedule WS update serveJson(request); return; //if JSON contains "v" } else { doSerializeConfig = true; //serializeConfig(); //Save new settings to FS From 09e2c74aba8f6846c446761769a0de702000c9a3 Mon Sep 17 00:00:00 2001 From: Will Miles Date: Sat, 25 Jan 2025 15:34:21 -0500 Subject: [PATCH 5/5] Another whitespace fix --- wled00/wled_server.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/wled00/wled_server.cpp b/wled00/wled_server.cpp index b6631bdbd4..e8cbb41ae5 100644 --- a/wled00/wled_server.cpp +++ b/wled00/wled_server.cpp @@ -324,7 +324,7 @@ void initServer() if (verboseResponse) { if (!isConfig) { - lastInterfaceUpdate = millis(); // prevent WS update until cooldown + lastInterfaceUpdate = millis(); // prevent WS update until cooldown interfaceUpdateCallMode = CALL_MODE_WS_SEND; // schedule WS update serveJson(request); return; //if JSON contains "v" } else {