diff --git a/include/WebSocket.h b/include/WebSocket.h index c3582bfc..4bed6b28 100644 --- a/include/WebSocket.h +++ b/include/WebSocket.h @@ -4,3 +4,4 @@ void wsInit(); void wsSendSetup(); void wsPublishData(String topic, String data); +void sendDataWs(); diff --git a/src/WebSocket.cpp b/src/WebSocket.cpp index e25c6307..e0fc8943 100644 --- a/src/WebSocket.cpp +++ b/src/WebSocket.cpp @@ -1,5 +1,7 @@ #include "WebSocket.h" +#include + #include "Class/NotAsync.h" #include "Global.h" @@ -12,28 +14,71 @@ void wsInit() { } void wsSendSetup() { - SerialPrint("I", F("WS"), F("start send config")); File file = seekFile("/setup.json"); DynamicJsonDocument doc(2048); + int i = 0; + file.find("["); + + SerialPrint("I", F("WS"), F("start send config")); do { + i++; + + // static bool flag = false; deserializeJson(doc, file); + size_t len = measureJson(doc); + AsyncWebSocketMessageBuffer* buffer = ws.makeBuffer(len); + if (buffer) { + serializeJson(doc, (char*)buffer->get(), len); + if (ws.enabled()) { + while (!ws.availableForWriteAll()) { + Serial.println(String(i) + ") not ready"); + } + ws.textAll(buffer); + Serial.println(String(i) + ") ready"); - ws.textAll("[config]" + doc.as()); + // if (ws.availableForWriteAll()) { + // ws.textAll(buffer); + // Serial.println(String(i) + ") ready"); + // } else { + // Serial.println(String(i) + ") not ready"); + // delay(100); + // } + } + } + //Serial.println(doc.as()); - Serial.println(doc.as()); } while (file.findUntil(",", "]")); + SerialPrint("I", F("WS"), F("completed send config")); } void wsPublishData(String topic, String data) { - data = "[" + topic + "]" + data; - ws.textAll(data); + if (ws.enabled()) { + data = "[" + topic + "]" + data; + ws.textAll(data); + } } // wsPublishData(F("config"), doc.as()); // if (ws.enabled()) { //} // if (ws.enabled()) Serial.println("on"); + +// void sendDataWs() { +// DynamicJsonDocument doc(1024); +// +// doc["a"] = "abc"; +// doc["b"] = "abcd"; +// doc["c"] = "abcde"; +// doc["d"] = "abcdef"; +// doc["e"] = "abcdefg"; +// size_t len = measureJson(doc); +// AsyncWebSocketMessageBuffer* buffer = ws.makeBuffer(len); // creates a buffer (len + 1) for you. +// if (buffer) { +// serializeJson(doc, (char*)buffer->get(), len); +// ws.textAll(buffer); +// } +// } diff --git a/src/main.cpp b/src/main.cpp index bb9e916c..5e03534a 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -20,6 +20,7 @@ #include "Utils/Timings.h" #include "Utils/WebUtils.h" #include "WebServer.h" +#include "WebSocket.h" #include "items/ButtonInClass.h" #include "items/vCountDown.h" #include "items/vImpulsOut.h" @@ -100,13 +101,14 @@ void setup() { // setupESP(); - SerialPrint("I", F("System"), F("✔ Initialization completed")); + SerialPrint("I", F("System"), F("✔ Initialization completed")); } void loop() { if (!initialized) { return; } + #ifdef OTA_UPDATES_ENABLED ArduinoOTA.handle(); #endif