mirror of
https://github.com/s00500/ESPUI.git
synced 2025-07-05 07:50:19 +00:00
Update
This commit is contained in:
154
src/ESPUI.cpp
154
src/ESPUI.cpp
@ -5,7 +5,11 @@
|
||||
#include <ESPAsyncWebServer.h>
|
||||
|
||||
#include "dataControlsJS.h"
|
||||
|
||||
#ifndef ESPU_DISABLE_GRAPH
|
||||
#include "dataGraphJS.h"
|
||||
#endif
|
||||
|
||||
#include "dataIndexHTML.h"
|
||||
#include "dataNormalizeCSS.h"
|
||||
#include "dataSliderJS.h"
|
||||
@ -17,6 +21,14 @@
|
||||
#include <umm_malloc/umm_heap_select.h>
|
||||
#endif
|
||||
|
||||
#if defined(DEBUG) && defined(ESPU_DEBUG)
|
||||
#define ESPU_DBG(arg) Serial.print(arg)
|
||||
#define ESPU_DBGL(arg) Serial.println(arg)
|
||||
#else
|
||||
#define ESPU_DBG(arg)
|
||||
#define ESPU_DBGL(arg)
|
||||
#endif
|
||||
|
||||
static String heapInfo(const __FlashStringHelper* mode)
|
||||
{
|
||||
String result;
|
||||
@ -72,7 +84,7 @@ void listDir(const char* dirname, uint8_t levels)
|
||||
#if defined(DEBUG_ESPUI)
|
||||
if (ESPUI.verbosity)
|
||||
{
|
||||
Serial.printf_P(PSTR("Listing directory: %s\n"), dirname);
|
||||
ESPU_DBGf_P(PSTR("Listing directory: %s\n"), dirname);
|
||||
}
|
||||
#endif
|
||||
|
||||
@ -91,7 +103,7 @@ void listDir(const char* dirname, uint8_t levels)
|
||||
#if defined(DEBUG_ESPUI)
|
||||
if (ESPUI.verbosity)
|
||||
{
|
||||
Serial.println(F("Failed to open directory"));
|
||||
ESPU_DBGL(F("Failed to open directory"));
|
||||
}
|
||||
#endif
|
||||
|
||||
@ -103,7 +115,7 @@ void listDir(const char* dirname, uint8_t levels)
|
||||
#if defined(DEBUG_ESPUI)
|
||||
if (ESPUI.verbosity)
|
||||
{
|
||||
Serial.println(F("Not a directory"));
|
||||
ESPU_DBGL(F("Not a directory"));
|
||||
}
|
||||
#endif
|
||||
|
||||
@ -119,8 +131,8 @@ void listDir(const char* dirname, uint8_t levels)
|
||||
#if defined(DEBUG_ESPUI)
|
||||
if (ESPUI.verbosity)
|
||||
{
|
||||
Serial.print(F(" DIR : "));
|
||||
Serial.println(file.name());
|
||||
ESPU_DBG(F(" DIR : "));
|
||||
ESPU_DBGL(file.name());
|
||||
}
|
||||
#endif
|
||||
|
||||
@ -138,10 +150,10 @@ void listDir(const char* dirname, uint8_t levels)
|
||||
#if defined(DEBUG_ESPUI)
|
||||
if (ESPUI.verbosity)
|
||||
{
|
||||
Serial.print(F(" FILE: "));
|
||||
Serial.print(file.name());
|
||||
Serial.print(F(" SIZE: "));
|
||||
Serial.println(file.size());
|
||||
ESPU_DBG(F(" FILE: "));
|
||||
ESPU_DBG(file.name());
|
||||
ESPU_DBG(F(" SIZE: "));
|
||||
ESPU_DBGL(file.size());
|
||||
}
|
||||
#endif
|
||||
}
|
||||
@ -156,7 +168,7 @@ void listDir(const char* dirname, uint8_t levels)
|
||||
#if defined(DEBUG_ESPUI)
|
||||
if (ESPUI.verbosity)
|
||||
{
|
||||
Serial.printf_P(PSTR("Listing directory: %s\n"), dirname);
|
||||
ESPU_DBGf_P(PSTR("Listing directory: %s\n"), dirname);
|
||||
}
|
||||
#endif
|
||||
|
||||
@ -169,8 +181,8 @@ void listDir(const char* dirname, uint8_t levels)
|
||||
#if defined(DEBUG_ESPUI)
|
||||
if (ESPUI.verbosity)
|
||||
{
|
||||
Serial.print(F(" DIR : "));
|
||||
Serial.println(dir.fileName());
|
||||
ESPU_DBG(F(" DIR : "));
|
||||
ESPU_DBGL(dir.fileName());
|
||||
}
|
||||
#endif
|
||||
if (levels)
|
||||
@ -185,10 +197,10 @@ void listDir(const char* dirname, uint8_t levels)
|
||||
#if defined(DEBUG_ESPUI)
|
||||
if (ESPUI.verbosity)
|
||||
{
|
||||
Serial.print(F(" FILE: "));
|
||||
Serial.print(dir.fileName());
|
||||
Serial.print(F(" SIZE: "));
|
||||
Serial.println(dir.fileSize());
|
||||
ESPU_DBG(F(" FILE: "));
|
||||
ESPU_DBG(dir.fileName());
|
||||
ESPU_DBG(F(" SIZE: "));
|
||||
ESPU_DBGL(dir.fileSize());
|
||||
}
|
||||
#endif
|
||||
}
|
||||
@ -206,13 +218,13 @@ void ESPUIClass::list()
|
||||
if (!LITTLEFS.begin())
|
||||
#endif
|
||||
{
|
||||
Serial.println(F("LITTLEFS Mount Failed"));
|
||||
ESPU_DBGL(F("LITTLEFS Mount Failed"));
|
||||
return;
|
||||
}
|
||||
#else
|
||||
if (!LittleFS.begin())
|
||||
{
|
||||
Serial.println(F("LittleFS Mount Failed"));
|
||||
ESPU_DBG(F("LittleFS Mount Failed"));
|
||||
return;
|
||||
}
|
||||
#endif
|
||||
@ -220,27 +232,27 @@ void ESPUIClass::list()
|
||||
listDir("/", 1);
|
||||
#if defined(ESP32)
|
||||
|
||||
Serial.print(F("Total KB: "));
|
||||
ESPU_DBG(F("Total KB: "));
|
||||
#if (ESP_IDF_VERSION_MAJOR == 4 && ESP_IDF_VERSION_MINOR >= 4) || ESP_IDF_VERSION_MAJOR > 4
|
||||
Serial.println(LittleFS.totalBytes() / 1024);
|
||||
ESPU_DBGL(LittleFS.totalBytes() / 1024);
|
||||
#else
|
||||
Serial.println(LITTLEFS.totalBytes() / 1024);
|
||||
ESPU_DBGL(LITTLEFS.totalBytes() / 1024);
|
||||
#endif
|
||||
Serial.print(F("Used KB: "));
|
||||
ESPU_DBG(F("Used KB: "));
|
||||
#if (ESP_IDF_VERSION_MAJOR == 4 && ESP_IDF_VERSION_MINOR >= 4) || ESP_IDF_VERSION_MAJOR > 4
|
||||
Serial.println(LittleFS.usedBytes() / 1024);
|
||||
ESPU_DBGL(LittleFS.usedBytes() / 1024);
|
||||
#else
|
||||
Serial.println(LITTLEFS.usedBytes() / 1024);
|
||||
ESPU_DBGL(LITTLEFS.usedBytes() / 1024);
|
||||
#endif
|
||||
|
||||
#else
|
||||
FSInfo fs_info;
|
||||
LittleFS.info(fs_info);
|
||||
|
||||
Serial.print(F("Total KB: "));
|
||||
Serial.println(fs_info.totalBytes / 1024);
|
||||
Serial.print(F("Used KB: "));
|
||||
Serial.println(fs_info.usedBytes / 1024);
|
||||
ESPU_DBG(F("Total KB: "));
|
||||
ESPU_DBGL(fs_info.totalBytes / 1024);
|
||||
ESPU_DBG(F("Used KB: "));
|
||||
ESPU_DBGL(fs_info.usedBytes / 1024);
|
||||
|
||||
#endif
|
||||
}
|
||||
@ -261,7 +273,7 @@ void deleteFile(const char* path)
|
||||
#if defined(DEBUG_ESPUI)
|
||||
if (ESPUI.verbosity)
|
||||
{
|
||||
Serial.printf_P(PSTR("File: %s does not exist, not deleting\n"), path);
|
||||
ESPU_DBGf_P(PSTR("File: %s does not exist, not deleting\n"), path);
|
||||
}
|
||||
#endif
|
||||
|
||||
@ -271,7 +283,7 @@ void deleteFile(const char* path)
|
||||
#if defined(DEBUG_ESPUI)
|
||||
if (ESPUI.verbosity)
|
||||
{
|
||||
Serial.printf_P(PSTR("Deleting file: %s\n"), path);
|
||||
ESPU_DBGf_P(PSTR("Deleting file: %s\n"), path);
|
||||
}
|
||||
#endif
|
||||
|
||||
@ -289,7 +301,7 @@ void deleteFile(const char* path)
|
||||
#if defined(DEBUG_ESPUI)
|
||||
if (ESPUI.verbosity)
|
||||
{
|
||||
Serial.println(F("File deleted"));
|
||||
ESPU_DBGL(F("File deleted"));
|
||||
}
|
||||
#endif
|
||||
}
|
||||
@ -298,7 +310,7 @@ void deleteFile(const char* path)
|
||||
#if defined(DEBUG_ESPUI)
|
||||
if (ESPUI.verbosity)
|
||||
{
|
||||
Serial.println(F("Delete failed"));
|
||||
ESPU_DBGL(F("Delete failed"));
|
||||
}
|
||||
#endif
|
||||
}
|
||||
@ -309,7 +321,7 @@ void writeFile(const char* path, const char* data)
|
||||
#if defined(DEBUG_ESPUI)
|
||||
if (ESPUI.verbosity)
|
||||
{
|
||||
Serial.printf_P(PSTR("Writing file: %s\n"), path);
|
||||
ESPU_DBGf_P(PSTR("Writing file: %s\n"), path);
|
||||
}
|
||||
#endif
|
||||
|
||||
@ -327,7 +339,7 @@ void writeFile(const char* path, const char* data)
|
||||
#if defined(DEBUG_ESPUI)
|
||||
if (ESPUI.verbosity)
|
||||
{
|
||||
Serial.println(F("Failed to open file for writing"));
|
||||
ESPU_DBGL(F("Failed to open file for writing"));
|
||||
}
|
||||
#endif
|
||||
|
||||
@ -341,7 +353,7 @@ void writeFile(const char* path, const char* data)
|
||||
#if defined(DEBUG_ESPUI)
|
||||
if (ESPUI.verbosity)
|
||||
{
|
||||
Serial.println(F("File written"));
|
||||
ESPU_DBGL(F("File written"));
|
||||
}
|
||||
#endif
|
||||
}
|
||||
@ -350,7 +362,7 @@ void writeFile(const char* path, const char* data)
|
||||
#if defined(DEBUG_ESPUI)
|
||||
if (ESPUI.verbosity)
|
||||
{
|
||||
Serial.println(F("Write failed"));
|
||||
ESPU_DBGL(F("Write failed"));
|
||||
}
|
||||
#endif
|
||||
}
|
||||
@ -362,7 +374,7 @@ void writeFile(const char* path, const char* data)
|
||||
#if defined(DEBUG_ESPUI)
|
||||
if (ESPUI.verbosity)
|
||||
{
|
||||
Serial.println(F("File written"));
|
||||
ESPU_DBGL(F("File written"));
|
||||
}
|
||||
#endif
|
||||
}
|
||||
@ -371,7 +383,7 @@ void writeFile(const char* path, const char* data)
|
||||
#if defined(DEBUG_ESPUI)
|
||||
if (ESPUI.verbosity)
|
||||
{
|
||||
Serial.println(F("Write failed"));
|
||||
ESPU_DBGL(F("Write failed"));
|
||||
}
|
||||
#endif
|
||||
}
|
||||
@ -389,7 +401,7 @@ void ESPUIClass::prepareFileSystem(bool format)
|
||||
#if defined(DEBUG_ESPUI)
|
||||
if (verbosity)
|
||||
{
|
||||
Serial.println(F("About to prepare filesystem..."));
|
||||
ESPU_DBGL(F("About to prepare filesystem..."));
|
||||
}
|
||||
#endif
|
||||
|
||||
@ -409,7 +421,7 @@ void ESPUIClass::prepareFileSystem(bool format)
|
||||
#if defined(DEBUG_ESPUI)
|
||||
if (verbosity)
|
||||
{
|
||||
Serial.println(F("LittleFS Format Failed"));
|
||||
ESPU_DBGL(F("LittleFS Format Failed"));
|
||||
}
|
||||
#endif
|
||||
return;
|
||||
@ -425,7 +437,7 @@ void ESPUIClass::prepareFileSystem(bool format)
|
||||
#if defined(DEBUG_ESPUI)
|
||||
if (verbosity)
|
||||
{
|
||||
Serial.println(F("LittleFS Formatted"));
|
||||
ESPU_DBGL(F("LittleFS Formatted"));
|
||||
}
|
||||
#endif
|
||||
}
|
||||
@ -434,7 +446,7 @@ void ESPUIClass::prepareFileSystem(bool format)
|
||||
if (verbosity)
|
||||
{
|
||||
listDir("/", 1);
|
||||
Serial.println(F("LittleFS Mount ESP32 Done"));
|
||||
ESPU_DBGL(F("LittleFS Mount ESP32 Done"));
|
||||
}
|
||||
#endif
|
||||
|
||||
@ -447,7 +459,7 @@ void ESPUIClass::prepareFileSystem(bool format)
|
||||
#if defined(DEBUG_ESPUI)
|
||||
if (verbosity)
|
||||
{
|
||||
Serial.println(F("LittleFS Formatted"));
|
||||
ESPU_DBGL(F("LittleFS Formatted"));
|
||||
}
|
||||
#endif
|
||||
}
|
||||
@ -456,7 +468,7 @@ void ESPUIClass::prepareFileSystem(bool format)
|
||||
#if defined(DEBUG_ESPUI)
|
||||
if (verbosity)
|
||||
{
|
||||
Serial.println(F("LittleFS Mount Failed"));
|
||||
ESPU_DBGL(F("LittleFS Mount Failed"));
|
||||
}
|
||||
#endif
|
||||
return;
|
||||
@ -468,7 +480,7 @@ void ESPUIClass::prepareFileSystem(bool format)
|
||||
#if defined(DEBUG_ESPUI)
|
||||
if (verbosity)
|
||||
{
|
||||
Serial.println(F("LittleFS Formatted"));
|
||||
ESPU_DBGL(F("LittleFS Formatted"));
|
||||
}
|
||||
#endif
|
||||
}
|
||||
@ -477,7 +489,7 @@ void ESPUIClass::prepareFileSystem(bool format)
|
||||
if (verbosity)
|
||||
{
|
||||
listDir("/", 1);
|
||||
Serial.println(F("LittleFS Mount ESP8266 Done"));
|
||||
ESPU_DBGL(F("LittleFS Mount ESP8266 Done"));
|
||||
}
|
||||
#endif
|
||||
|
||||
@ -491,13 +503,15 @@ void ESPUIClass::prepareFileSystem(bool format)
|
||||
deleteFile("/js/zepto.min.js");
|
||||
deleteFile("/js/controls.js");
|
||||
deleteFile("/js/slider.js");
|
||||
#ifndef ESPU_DISABLE_GRAPH
|
||||
deleteFile("/js/graph.js");
|
||||
#endif
|
||||
deleteFile("/js/tabbedcontent.js");
|
||||
|
||||
#if defined(DEBUG_ESPUI)
|
||||
if (verbosity)
|
||||
{
|
||||
Serial.println(F("Cleanup done"));
|
||||
ESPU_DBGL(F("Cleanup done"));
|
||||
}
|
||||
#endif
|
||||
|
||||
@ -512,8 +526,9 @@ void ESPUIClass::prepareFileSystem(bool format)
|
||||
writeFile("/js/zepto.min.js", JS_ZEPTO);
|
||||
writeFile("/js/controls.js", JS_CONTROLS);
|
||||
writeFile("/js/slider.js", JS_SLIDER);
|
||||
#ifndef ESPU_DISABLE_GRAPH
|
||||
writeFile("/js/graph.js", JS_GRAPH);
|
||||
|
||||
#endif
|
||||
writeFile("/js/tabbedcontent.js", JS_TABBEDCONTENT);
|
||||
#else
|
||||
writeFile("/index.htm", HTML_INDEX);
|
||||
@ -524,8 +539,9 @@ void ESPUIClass::prepareFileSystem(bool format)
|
||||
writeFile("/js/zepto.min.js", JS_ZEPTO);
|
||||
writeFile("/js/controls.js", JS_CONTROLS);
|
||||
writeFile("/js/slider.js", JS_SLIDER);
|
||||
#ifndef ESPU_DISABLE_GRAPH
|
||||
writeFile("/js/graph.js", JS_GRAPH);
|
||||
|
||||
#endif
|
||||
writeFile("/js/tabbedcontent.js", JS_TABBEDCONTENT);
|
||||
#endif
|
||||
#else
|
||||
@ -537,15 +553,16 @@ void ESPUIClass::prepareFileSystem(bool format)
|
||||
writeFile("/js/zepto.min.js", JS_ZEPTO);
|
||||
writeFile("/js/controls.js", JS_CONTROLS);
|
||||
writeFile("/js/slider.js", JS_SLIDER);
|
||||
writeFile("/js/graph.js", JS_GRAPH);
|
||||
|
||||
#ifndef ESPU_DISABLE_GRAPH
|
||||
writeFile("/js/graph.js", JS_GRAPH);
|
||||
#endif
|
||||
writeFile("/js/tabbedcontent.js", JS_TABBEDCONTENT);
|
||||
#endif
|
||||
|
||||
#if defined(DEBUG_ESPUI)
|
||||
if (verbosity)
|
||||
{
|
||||
Serial.println(F("Done Initializing filesystem :-)"));
|
||||
ESPU_DBGL(F("Done Initializing filesystem :-)"));
|
||||
}
|
||||
#endif
|
||||
|
||||
@ -575,7 +592,7 @@ void ESPUIClass::prepareFileSystem(bool format)
|
||||
void ESPUIClass::onWsEvent(
|
||||
AsyncWebSocket* server, AsyncWebSocketClient* client, AwsEventType type, void* arg, uint8_t* data, size_t len)
|
||||
{
|
||||
// Serial.println(String("ESPUIClass::OnWsEvent: type: ") + String(type));
|
||||
// ESPU_DBGL(String("ESPUIClass::OnWsEvent: type: ") + String(type));
|
||||
RemoveToBeDeletedControls();
|
||||
|
||||
if (WS_EVT_DISCONNECT == type)
|
||||
@ -583,13 +600,13 @@ void ESPUIClass::onWsEvent(
|
||||
#if defined(DEBUG_ESPUI)
|
||||
if (verbosity)
|
||||
{
|
||||
Serial.println(F("WS_EVT_DISCONNECT"));
|
||||
ESPU_DBGL(F("WS_EVT_DISCONNECT"));
|
||||
}
|
||||
#endif
|
||||
|
||||
if (MapOfClients.end() != MapOfClients.find(client->id()))
|
||||
{
|
||||
// Serial.println("Delete client.");
|
||||
// ESPU_DBGL("Delete client.");
|
||||
delete MapOfClients[client->id()];
|
||||
MapOfClients.erase(client->id());
|
||||
}
|
||||
@ -598,13 +615,13 @@ void ESPUIClass::onWsEvent(
|
||||
{
|
||||
if (MapOfClients.end() == MapOfClients.find(client->id()))
|
||||
{
|
||||
// Serial.println("ESPUIClass::OnWsEvent:Create new client.");
|
||||
// ESPU_DBGL("ESPUIClass::OnWsEvent:Create new client.");
|
||||
MapOfClients[client->id()] = new ESPUIclient(client);
|
||||
}
|
||||
|
||||
if(MapOfClients[client->id()]->onWsEvent(type, arg, data, len))
|
||||
{
|
||||
// Serial.println("ESPUIClass::OnWsEvent:notify the clients that they need to be updated.");
|
||||
// ESPU_DBGL("ESPUIClass::OnWsEvent:notify the clients that they need to be updated.");
|
||||
NotifyClients(ESPUIclient::UpdateNeeded);
|
||||
}
|
||||
}
|
||||
@ -702,7 +719,7 @@ bool ESPUIClass::removeControl(uint16_t id, bool force_rebuild_ui)
|
||||
#ifdef DEBUG_ESPUI
|
||||
else
|
||||
{
|
||||
// Serial.println(String("Could not Remove Control ") + String(id));
|
||||
// ESPU_DBGL(String("Could not Remove Control ") + String(id));
|
||||
}
|
||||
#endif // def DEBUG_ESPUI
|
||||
|
||||
@ -919,7 +936,7 @@ void ESPUIClass::setEnabled(uint16_t id, bool enabled, int clientId)
|
||||
Control* control = getControl(id);
|
||||
if (control)
|
||||
{
|
||||
// Serial.println(String("CreateAllowed: id: ") + String(clientId) + " State: " + String(enabled));
|
||||
// ESPU_DBGL(String("CreateAllowed: id: ") + String(clientId) + " State: " + String(enabled));
|
||||
control->enabled = enabled;
|
||||
updateControl(control, clientId);
|
||||
}
|
||||
@ -943,7 +960,7 @@ void ESPUIClass::updateControl(uint16_t id, int clientId)
|
||||
#if defined(DEBUG_ESPUI)
|
||||
if (verbosity)
|
||||
{
|
||||
Serial.printf_P(PSTR("Error: Update Control: There is no control with ID %d\n"), id);
|
||||
ESPU_DBGf_P(PSTR("Error: Update Control: There is no control with ID %d\n"), id);
|
||||
}
|
||||
#endif
|
||||
return;
|
||||
@ -972,7 +989,7 @@ void ESPUIClass::updateControlValue(uint16_t id, const String& value, int client
|
||||
#if defined(DEBUG_ESPUI)
|
||||
if (verbosity)
|
||||
{
|
||||
Serial.printf_P(PSTR("Error: updateControlValue Control: There is no control with ID %d\n"), id);
|
||||
ESPU_DBGf_P(PSTR("Error: updateControlValue Control: There is no control with ID %d\n"), id);
|
||||
}
|
||||
#endif
|
||||
return;
|
||||
@ -993,7 +1010,7 @@ void ESPUIClass::updateControlLabel(Control* control, const char* value, int cli
|
||||
#if defined(DEBUG_ESPUI)
|
||||
if (verbosity)
|
||||
{
|
||||
Serial.printf_P(PSTR("Error: updateControlLabel Control: There is no control with the requested ID \n"));
|
||||
ESPU_DBGf_P(PSTR("Error: updateControlLabel Control: There is no control with the requested ID \n"));
|
||||
}
|
||||
#endif
|
||||
return;
|
||||
@ -1146,7 +1163,7 @@ void ESPUIClass::jsonReload()
|
||||
{
|
||||
for (auto& CurrentClient : MapOfClients)
|
||||
{
|
||||
// Serial.println("Requesting Reload");
|
||||
// ESPU_DBGL("Requesting Reload");
|
||||
CurrentClient.second->NotifyClient(ClientUpdateType_t::ReloadNeeded);
|
||||
}
|
||||
}
|
||||
@ -1189,7 +1206,7 @@ void ESPUIClass::beginLITTLEFS(const char* _title, const char* username, const c
|
||||
#if defined(DEBUG_ESPUI)
|
||||
if (verbosity)
|
||||
{
|
||||
Serial.println(F("LITTLEFS Mount Failed, PLEASE CHECK THE README ON HOW TO "
|
||||
ESPU_DBGL(F("LITTLEFS Mount Failed, PLEASE CHECK THE README ON HOW TO "
|
||||
"PREPARE YOUR ESP!!!!!!!"));
|
||||
}
|
||||
#endif
|
||||
@ -1218,7 +1235,7 @@ void ESPUIClass::beginLITTLEFS(const char* _title, const char* username, const c
|
||||
#if defined(DEBUG_ESPUI)
|
||||
if (verbosity)
|
||||
{
|
||||
Serial.println(F("Please read the README!!!!!!!, Make sure to "
|
||||
ESPU_DBGL(F("Please read the README!!!!!!!, Make sure to "
|
||||
"prepareFileSystem() once in an empty sketch"));
|
||||
}
|
||||
#endif
|
||||
@ -1285,7 +1302,7 @@ void ESPUIClass::beginLITTLEFS(const char* _title, const char* username, const c
|
||||
#if defined(DEBUG_ESPUI)
|
||||
if (verbosity)
|
||||
{
|
||||
Serial.println(F("UI Initialized"));
|
||||
ESPU_DBGL(F("UI Initialized"));
|
||||
}
|
||||
#endif
|
||||
}
|
||||
@ -1365,17 +1382,18 @@ void ESPUIClass::begin(const char* _title, const char* username, const char* pas
|
||||
request->send(response);
|
||||
});
|
||||
|
||||
#ifndef ESPU_DISABLE_GRAPH
|
||||
server->on("/js/graph.js", HTTP_GET, [](AsyncWebServerRequest* request) {
|
||||
if (ESPUI.basicAuth && !request->authenticate(ESPUI.basicAuthUsername, ESPUI.basicAuthPassword))
|
||||
{
|
||||
return request->requestAuthentication();
|
||||
}
|
||||
|
||||
AsyncWebServerResponse* response
|
||||
= request->beginResponse_P(200, "application/javascript", JS_GRAPH_GZIP, sizeof(JS_GRAPH_GZIP));
|
||||
response->addHeader("Content-Encoding", "gzip");
|
||||
request->send(response);
|
||||
});
|
||||
#endif
|
||||
|
||||
server->on("/js/tabbedcontent.js", HTTP_GET, [](AsyncWebServerRequest* request) {
|
||||
if (ESPUI.basicAuth && !request->authenticate(ESPUI.basicAuthUsername, ESPUI.basicAuthPassword))
|
||||
@ -1445,7 +1463,7 @@ void ESPUIClass::begin(const char* _title, const char* username, const char* pas
|
||||
#if defined(DEBUG_ESPUI)
|
||||
if (verbosity)
|
||||
{
|
||||
Serial.println(F("UI Initialized"));
|
||||
ESPU_DBGL(F("UI Initialized"));
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
@ -2,6 +2,15 @@
|
||||
#include "ESPUIclient.h"
|
||||
#include "ESPUIcontrol.h"
|
||||
|
||||
#if defined(DEBUG) && defined(ESPU_DEBUG)
|
||||
#define ESPU_DBG(arg) Serial.print(arg)
|
||||
#define ESPU_DBGL(arg) Serial.println(arg)
|
||||
#else
|
||||
#define ESPU_DBG(arg)
|
||||
#define ESPU_DBGL(arg)
|
||||
#endif
|
||||
|
||||
|
||||
// JSONSlave:
|
||||
// helper to process exact JSON serialization size
|
||||
// it takes ~2ms on esp8266 and avoid large String reallocation which is really worth the cost
|
||||
@ -100,7 +109,7 @@ bool ESPUIclient::SendClientNotification(ClientUpdateType_t value)
|
||||
{
|
||||
if(!CanSend())
|
||||
{
|
||||
// Serial.println(F("ESPUIclient::SendClientNotification:CannotSend"));
|
||||
// ESPU_DBGL(F("ESPUIclient::SendClientNotification:CannotSend"));
|
||||
break;
|
||||
}
|
||||
|
||||
@ -108,13 +117,13 @@ bool ESPUIclient::SendClientNotification(ClientUpdateType_t value)
|
||||
FillInHeader(document);
|
||||
if(ClientUpdateType_t::ReloadNeeded == value)
|
||||
{
|
||||
// Serial.println(F("ESPUIclient::SendClientNotification:set type to reload"));
|
||||
// ESPU_DBGL(F("ESPUIclient::SendClientNotification:set type to reload"));
|
||||
document["type"] = int(UI_RELOAD);
|
||||
}
|
||||
// dont send any controls
|
||||
|
||||
Response = SendJsonDocToWebSocket(document);
|
||||
// Serial.println(String("ESPUIclient::SendClientNotification:NotificationSent:Response: ") + String(Response));
|
||||
// ESPU_DBGL(String("ESPUIclient::SendClientNotification:NotificationSent:Response: ") + String(Response));
|
||||
|
||||
} while (false);
|
||||
return Response;
|
||||
@ -130,7 +139,7 @@ void ESPUIclient::NotifyClient(ClientUpdateType_t newState)
|
||||
bool ESPUIclient::onWsEvent(AwsEventType type, void* arg, uint8_t* data, size_t len)
|
||||
{
|
||||
bool Response = false;
|
||||
// Serial.println(String("ESPUIclient::OnWsEvent: type: ") + String(type));
|
||||
// ESPU_DBGL(String("ESPUIclient::OnWsEvent: type: ") + String(type));
|
||||
|
||||
switch (type)
|
||||
{
|
||||
@ -139,7 +148,7 @@ bool ESPUIclient::onWsEvent(AwsEventType type, void* arg, uint8_t* data, size_t
|
||||
#if defined(DEBUG_ESPUI)
|
||||
if (ESPUI.verbosity)
|
||||
{
|
||||
Serial.println(F("ESPUIclient::OnWsEvent:WS_EVT_PONG"));
|
||||
ESPU_DBGL(F("ESPUIclient::OnWsEvent:WS_EVT_PONG"));
|
||||
}
|
||||
#endif
|
||||
break;
|
||||
@ -150,7 +159,7 @@ bool ESPUIclient::onWsEvent(AwsEventType type, void* arg, uint8_t* data, size_t
|
||||
#if defined(DEBUG_ESPUI)
|
||||
if (ESPUI.verbosity)
|
||||
{
|
||||
Serial.println(F("ESPUIclient::OnWsEvent:WS_EVT_ERROR"));
|
||||
ESPU_DBGL(F("ESPUIclient::OnWsEvent:WS_EVT_ERROR"));
|
||||
}
|
||||
#endif
|
||||
break;
|
||||
@ -161,19 +170,19 @@ bool ESPUIclient::onWsEvent(AwsEventType type, void* arg, uint8_t* data, size_t
|
||||
#if defined(DEBUG_ESPUI)
|
||||
if (ESPUI.verbosity)
|
||||
{
|
||||
Serial.println(F("ESPUIclient::OnWsEvent:WS_EVT_CONNECT"));
|
||||
Serial.println(client->id());
|
||||
ESPU_DBGL(F("ESPUIclient::OnWsEvent:WS_EVT_CONNECT"));
|
||||
ESPU_DBGL(client->id());
|
||||
}
|
||||
#endif
|
||||
|
||||
// Serial.println("ESPUIclient:onWsEvent:WS_EVT_CONNECT: Call NotifyClient: RebuildNeeded");
|
||||
// ESPU_DBGL("ESPUIclient:onWsEvent:WS_EVT_CONNECT: Call NotifyClient: RebuildNeeded");
|
||||
NotifyClient(ClientUpdateType_t::RebuildNeeded);
|
||||
break;
|
||||
}
|
||||
|
||||
case WS_EVT_DATA:
|
||||
{
|
||||
// Serial.println(F("ESPUIclient::OnWsEvent:WS_EVT_DATA"));
|
||||
// ESPU_DBGL(F("ESPUIclient::OnWsEvent:WS_EVT_DATA"));
|
||||
String msg = "";
|
||||
msg.reserve(len + 1);
|
||||
|
||||
@ -189,50 +198,50 @@ bool ESPUIclient::onWsEvent(AwsEventType type, void* arg, uint8_t* data, size_t
|
||||
#if defined(DEBUG_ESPUI)
|
||||
if (ESPUI.verbosity >= Verbosity::VerboseJSON)
|
||||
{
|
||||
Serial.println(String(F(" WS msg: ")) + msg);
|
||||
Serial.println(String(F(" WS cmd: ")) + cmd);
|
||||
Serial.println(String(F(" WS id: ")) + String(id));
|
||||
Serial.println(String(F("WS value: ")) + String(value));
|
||||
ESPU_DBGL(String(F(" WS msg: ")) + msg);
|
||||
ESPU_DBGL(String(F(" WS cmd: ")) + cmd);
|
||||
ESPU_DBGL(String(F(" WS id: ")) + String(id));
|
||||
ESPU_DBGL(String(F("WS value: ")) + String(value));
|
||||
}
|
||||
#endif
|
||||
|
||||
if (cmd.equals(F("uiok")))
|
||||
{
|
||||
|
||||
// Serial.println(String(F("ESPUIclient::OnWsEvent:WS_EVT_DATA:uiok:ProcessAck:")) + pCurrentFsmState->GetStateName());
|
||||
// ESPU_DBGL(String(F("ESPUIclient::OnWsEvent:WS_EVT_DATA:uiok:ProcessAck:")) + pCurrentFsmState->GetStateName());
|
||||
pCurrentFsmState->ProcessAck(id, emptyString);
|
||||
break;
|
||||
}
|
||||
|
||||
if (cmd.equals(F("uifragmentok")))
|
||||
{
|
||||
// Serial.println(String(F("ESPUIclient::OnWsEvent:WS_EVT_DATA:uiok:uifragmentok:")) + pCurrentFsmState->GetStateName() + ":ProcessAck");
|
||||
// ESPU_DBGL(String(F("ESPUIclient::OnWsEvent:WS_EVT_DATA:uiok:uifragmentok:")) + pCurrentFsmState->GetStateName() + ":ProcessAck");
|
||||
if(!emptyString.equals(value))
|
||||
{
|
||||
// Serial.println(String(F("ESPUIclient::OnWsEvent:WS_EVT_DATA:uiok:uifragmentok:")) + pCurrentFsmState->GetStateName() + ":ProcessAck:value:'" + value + "'");
|
||||
// ESPU_DBGL(String(F("ESPUIclient::OnWsEvent:WS_EVT_DATA:uiok:uifragmentok:")) + pCurrentFsmState->GetStateName() + ":ProcessAck:value:'" + value + "'");
|
||||
pCurrentFsmState->ProcessAck(uint16_t(-1), value);
|
||||
}
|
||||
else
|
||||
{
|
||||
Serial.println(F("ERROR:ESPUIclient::OnWsEvent:WS_EVT_DATA:uifragmentok:ProcessAck:Fragment Header is missing"));
|
||||
ESPU_DBGL(F("ERROR:ESPUIclient::OnWsEvent:WS_EVT_DATA:uifragmentok:ProcessAck:Fragment Header is missing"));
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
if (cmd.equals(F("uiuok")))
|
||||
{
|
||||
// Serial.println(F("WS_EVT_DATA: uiuok. Unlock new async notifications"));
|
||||
// ESPU_DBGL(F("WS_EVT_DATA: uiuok. Unlock new async notifications"));
|
||||
break;
|
||||
}
|
||||
|
||||
// Serial.println(F("WS_EVT_DATA:Process Control"));
|
||||
// ESPU_DBGL(F("WS_EVT_DATA:Process Control"));
|
||||
Control* control = ESPUI.getControl(id);
|
||||
if (nullptr == control)
|
||||
{
|
||||
#if defined(DEBUG_ESPUI)
|
||||
if (ESPUI.verbosity)
|
||||
{
|
||||
Serial.println(String(F("No control found for ID ")) + String(id));
|
||||
ESPU_DBGL(String(F("No control found for ID ")) + String(id));
|
||||
}
|
||||
#endif
|
||||
break;
|
||||
@ -245,7 +254,7 @@ bool ESPUIclient::onWsEvent(AwsEventType type, void* arg, uint8_t* data, size_t
|
||||
|
||||
default:
|
||||
{
|
||||
// Serial.println(F("ESPUIclient::OnWsEvent:default"));
|
||||
// ESPU_DBGL(F("ESPUIclient::OnWsEvent:default"));
|
||||
break;
|
||||
}
|
||||
} // end switch
|
||||
@ -267,7 +276,7 @@ uint32_t ESPUIclient::prepareJSONChunk(uint16_t startindex,
|
||||
xSemaphoreTake(ESPUI.ControlsSemaphore, portMAX_DELAY);
|
||||
#endif // def ESP32
|
||||
|
||||
// Serial.println(String("prepareJSONChunk: Start. InUpdateMode: ") + String(InUpdateMode));
|
||||
// ESPU_DBGL(String("prepareJSONChunk: Start. InUpdateMode: ") + String(InUpdateMode));
|
||||
int elementcount = 0;
|
||||
|
||||
do // once
|
||||
@ -281,10 +290,10 @@ uint32_t ESPUIclient::prepareJSONChunk(uint16_t startindex,
|
||||
|
||||
if(!emptyString.equals(FragmentRequestString))
|
||||
{
|
||||
// Serial.println(F("prepareJSONChunk:Fragmentation:Got Header (1)"));
|
||||
// Serial.println(String("prepareJSONChunk:startindex: ") + String(startindex));
|
||||
// Serial.println(String("prepareJSONChunk:currentIndex: ") + String(currentIndex));
|
||||
// Serial.println(String("prepareJSONChunk:FragmentRequestString: '") + FragmentRequestString + "'");
|
||||
// ESPU_DBGL(F("prepareJSONChunk:Fragmentation:Got Header (1)"));
|
||||
// ESPU_DBGL(String("prepareJSONChunk:startindex: ") + String(startindex));
|
||||
// ESPU_DBGL(String("prepareJSONChunk:currentIndex: ") + String(currentIndex));
|
||||
// ESPU_DBGL(String("prepareJSONChunk:FragmentRequestString: '") + FragmentRequestString + "'");
|
||||
|
||||
// this is actually a fragment or directed update request
|
||||
// parse the string we got from the UI and try to update that specific
|
||||
@ -292,38 +301,38 @@ uint32_t ESPUIclient::prepareJSONChunk(uint16_t startindex,
|
||||
DynamicJsonDocument FragmentRequest(FragmentRequestString.length() * 3);
|
||||
if(0 >= FragmentRequest.capacity())
|
||||
{
|
||||
Serial.println(F("ERROR:prepareJSONChunk:Fragmentation:Could not allocate memory for a fragmentation request. Skipping Response"));
|
||||
ESPU_DBGL(F("ERROR:prepareJSONChunk:Fragmentation:Could not allocate memory for a fragmentation request. Skipping Response"));
|
||||
break;
|
||||
}
|
||||
size_t FragmentRequestStartOffset = FragmentRequestString.indexOf("{");
|
||||
DeserializationError error = deserializeJson(FragmentRequest, FragmentRequestString.substring(FragmentRequestStartOffset));
|
||||
if(DeserializationError::Ok != error)
|
||||
{
|
||||
Serial.println(F("ERROR:prepareJSONChunk:Fragmentation:Could not extract json from the fragment request"));
|
||||
ESPU_DBGL(F("ERROR:prepareJSONChunk:Fragmentation:Could not extract json from the fragment request"));
|
||||
break;
|
||||
}
|
||||
|
||||
if(!FragmentRequest.containsKey(F("id")))
|
||||
{
|
||||
Serial.println(F("ERROR:prepareJSONChunk:Fragmentation:Request does not contain a control ID"));
|
||||
ESPU_DBGL(F("ERROR:prepareJSONChunk:Fragmentation:Request does not contain a control ID"));
|
||||
break;
|
||||
}
|
||||
uint16_t ControlId = uint16_t(FragmentRequest[F("id")]);
|
||||
|
||||
if(!FragmentRequest.containsKey(F("offset")))
|
||||
{
|
||||
Serial.println(F("ERROR:prepareJSONChunk:Fragmentation:Request does not contain a starting offset"));
|
||||
ESPU_DBGL(F("ERROR:prepareJSONChunk:Fragmentation:Request does not contain a starting offset"));
|
||||
break;
|
||||
}
|
||||
DataOffset = uint16_t(FragmentRequest[F("offset")]);
|
||||
control = ESPUI.getControlNoLock(ControlId);
|
||||
if(nullptr == control)
|
||||
{
|
||||
Serial.println(String(F("ERROR:prepareJSONChunk:Fragmentation:Requested control: ")) + String(ControlId) + F(" does not exist"));
|
||||
ESPU_DBGL(String(F("ERROR:prepareJSONChunk:Fragmentation:Requested control: ")) + String(ControlId) + F(" does not exist"));
|
||||
break;
|
||||
}
|
||||
|
||||
// Serial.println(F("prepareJSONChunk:Fragmentation:disable the control search operation"));
|
||||
// ESPU_DBGL(F("prepareJSONChunk:Fragmentation:disable the control search operation"));
|
||||
currentIndex = 1;
|
||||
startindex = 0;
|
||||
SingleControl = true;
|
||||
@ -355,7 +364,7 @@ uint32_t ESPUIclient::prepareJSONChunk(uint16_t startindex,
|
||||
// any controls left to be processed?
|
||||
if(nullptr == control)
|
||||
{
|
||||
// Serial.println("prepareJSONChunk: No controls to process");
|
||||
// ESPU_DBGL("prepareJSONChunk: No controls to process");
|
||||
break;
|
||||
}
|
||||
|
||||
@ -367,7 +376,7 @@ uint32_t ESPUIclient::prepareJSONChunk(uint16_t startindex,
|
||||
// skip deleted controls or controls that have not been updated
|
||||
if (control->ToBeDeleted() && !SingleControl)
|
||||
{
|
||||
// Serial.println(String("prepareJSONChunk: Ignoring Deleted control: ") + String(control->id));
|
||||
// ESPU_DBGL(String("prepareJSONChunk: Ignoring Deleted control: ") + String(control->id));
|
||||
control = control->next;
|
||||
continue;
|
||||
}
|
||||
@ -395,8 +404,8 @@ uint32_t ESPUIclient::prepareJSONChunk(uint16_t startindex,
|
||||
// String("prepareJSONChunk: too much data in the message. Remove the last entry");
|
||||
if (1 == elementcount)
|
||||
{
|
||||
Serial.println(String(F("ERROR: prepareJSONChunk: Control ")) + String(control->id) + F(" is too large to be sent to the browser."));
|
||||
// Serial.println(String(F("ERROR: prepareJSONChunk: value: ")) + control->value);
|
||||
ESPU_DBGL(String(F("ERROR: prepareJSONChunk: Control ")) + String(control->id) + F(" is too large to be sent to the browser."));
|
||||
// ESPU_DBGL(String(F("ERROR: prepareJSONChunk: value: ")) + control->value);
|
||||
rootDoc.clear();
|
||||
item = items.createNestedObject();
|
||||
control->MarshalErrorMessage(item);
|
||||
@ -404,8 +413,8 @@ uint32_t ESPUIclient::prepareJSONChunk(uint16_t startindex,
|
||||
}
|
||||
else
|
||||
{
|
||||
// Serial.println(String("prepareJSONChunk: Defering control: ") + String(control->id));
|
||||
// Serial.println(String("prepareJSONChunk: elementcount: ") + String(elementcount));
|
||||
// ESPU_DBGL(String("prepareJSONChunk: Defering control: ") + String(control->id));
|
||||
// ESPU_DBGL(String("prepareJSONChunk: elementcount: ") + String(elementcount));
|
||||
|
||||
items.remove(elementcount);
|
||||
--elementcount;
|
||||
@ -415,7 +424,7 @@ uint32_t ESPUIclient::prepareJSONChunk(uint16_t startindex,
|
||||
}
|
||||
else if (SingleControl)
|
||||
{
|
||||
// Serial.println("prepareJSONChunk: exit loop");
|
||||
// ESPU_DBGL("prepareJSONChunk: exit loop");
|
||||
control = nullptr;
|
||||
}
|
||||
else
|
||||
@ -430,7 +439,7 @@ uint32_t ESPUIclient::prepareJSONChunk(uint16_t startindex,
|
||||
xSemaphoreGive(ESPUI.ControlsSemaphore);
|
||||
#endif // def ESP32
|
||||
|
||||
// Serial.println(String("prepareJSONChunk: elementcount: ") + String(elementcount));
|
||||
// ESPU_DBGL(String("prepareJSONChunk: elementcount: ") + String(elementcount));
|
||||
return elementcount;
|
||||
}
|
||||
|
||||
@ -457,18 +466,18 @@ etc.
|
||||
bool ESPUIclient::SendControlsToClient(uint16_t startidx, ClientUpdateType_t TransferMode, String FragmentRequest)
|
||||
{
|
||||
bool Response = false;
|
||||
// Serial.println(String("ESPUIclient:SendControlsToClient:startidx: ") + String(startidx));
|
||||
// ESPU_DBGL(String("ESPUIclient:SendControlsToClient:startidx: ") + String(startidx));
|
||||
do // once
|
||||
{
|
||||
if(!CanSend())
|
||||
{
|
||||
// Serial.println("ESPUIclient:SendControlsToClient: Cannot Send to clients.");
|
||||
// ESPU_DBGL("ESPUIclient:SendControlsToClient: Cannot Send to clients.");
|
||||
break;
|
||||
}
|
||||
|
||||
else if ((startidx >= ESPUI.controlCount) && (emptyString.equals(FragmentRequest)))
|
||||
{
|
||||
// Serial.println(F("ERROR:ESPUIclient:SendControlsToClient: No more controls to send."));
|
||||
// ESPU_DBGL(F("ERROR:ESPUIclient:SendControlsToClient: No more controls to send."));
|
||||
Response = true;
|
||||
break;
|
||||
}
|
||||
@ -480,44 +489,44 @@ bool ESPUIclient::SendControlsToClient(uint16_t startidx, ClientUpdateType_t Tra
|
||||
|
||||
if(0 == startidx)
|
||||
{
|
||||
// Serial.println("ESPUIclient:SendControlsToClient: Tell client we are starting a transfer of controls.");
|
||||
// ESPU_DBGL("ESPUIclient:SendControlsToClient: Tell client we are starting a transfer of controls.");
|
||||
document["type"] = (ClientUpdateType_t::RebuildNeeded == TransferMode) ? UI_INITIAL_GUI : UI_EXTEND_GUI;
|
||||
CurrentSyncID = NextSyncID;
|
||||
NextSyncID = ESPUI.GetNextControlChangeId();
|
||||
}
|
||||
// Serial.println(String("ESPUIclient:SendControlsToClient:type: ") + String((uint32_t)document["type"]));
|
||||
// ESPU_DBGL(String("ESPUIclient:SendControlsToClient:type: ") + String((uint32_t)document["type"]));
|
||||
|
||||
// Serial.println("ESPUIclient:SendControlsToClient: Build Controls.");
|
||||
// ESPU_DBGL("ESPUIclient:SendControlsToClient: Build Controls.");
|
||||
if(prepareJSONChunk(startidx, document, ClientUpdateType_t::UpdateNeeded == TransferMode, FragmentRequest))
|
||||
{
|
||||
#if defined(DEBUG_ESPUI)
|
||||
if (ESPUI.verbosity >= Verbosity::VerboseJSON)
|
||||
{
|
||||
Serial.println(F("ESPUIclient:SendControlsToClient: Sending elements --------->"));
|
||||
ESPU_DBGL(F("ESPUIclient:SendControlsToClient: Sending elements --------->"));
|
||||
serializeJson(document, Serial);
|
||||
Serial.println();
|
||||
ESPU_DBGL();
|
||||
}
|
||||
#endif
|
||||
|
||||
// Serial.println("ESPUIclient:SendControlsToClient: Send message.");
|
||||
// ESPU_DBGL("ESPUIclient:SendControlsToClient: Send message.");
|
||||
if(true == SendJsonDocToWebSocket(document))
|
||||
{
|
||||
// Serial.println("ESPUIclient:SendControlsToClient: Sent.");
|
||||
// ESPU_DBGL("ESPUIclient:SendControlsToClient: Sent.");
|
||||
}
|
||||
else
|
||||
{
|
||||
// Serial.println("ESPUIclient:SendControlsToClient: Send failed.");
|
||||
// ESPU_DBGL("ESPUIclient:SendControlsToClient: Send failed.");
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
// Serial.println("ESPUIclient:SendControlsToClient: No elements to send.");
|
||||
// ESPU_DBGL("ESPUIclient:SendControlsToClient: No elements to send.");
|
||||
Response = true;
|
||||
}
|
||||
|
||||
} while(false);
|
||||
|
||||
// Serial.println(String("ESPUIclient:SendControlsToClient:Response: ") + String(Response));
|
||||
// ESPU_DBGL(String("ESPUIclient:SendControlsToClient:Response: ") + String(Response));
|
||||
return Response;
|
||||
}
|
||||
|
||||
@ -532,10 +541,10 @@ bool ESPUIclient::SendJsonDocToWebSocket(DynamicJsonDocument& document)
|
||||
#if defined(DEBUG_ESPUI)
|
||||
if (ESPUI.verbosity >= Verbosity::VerboseJSON)
|
||||
{
|
||||
Serial.println(F("ESPUIclient::SendJsonDocToWebSocket: Cannot Send to client. Not sending websocket message"));
|
||||
ESPU_DBGL(F("ESPUIclient::SendJsonDocToWebSocket: Cannot Send to client. Not sending websocket message"));
|
||||
}
|
||||
#endif
|
||||
// Serial.println("ESPUIclient::SendJsonDocToWebSocket: Cannot Send to client. Not sending websocket message");
|
||||
// ESPU_DBGL("ESPUIclient::SendJsonDocToWebSocket: Cannot Send to client. Not sending websocket message");
|
||||
Response = false;
|
||||
break;
|
||||
}
|
||||
@ -545,17 +554,17 @@ bool ESPUIclient::SendJsonDocToWebSocket(DynamicJsonDocument& document)
|
||||
#if defined(DEBUG_ESPUI)
|
||||
if (ESPUI.verbosity >= Verbosity::VerboseJSON)
|
||||
{
|
||||
Serial.println(String(F("ESPUIclient::SendJsonDocToWebSocket: json: '")) + json + "'");
|
||||
ESPU_DBGL(String(F("ESPUIclient::SendJsonDocToWebSocket: json: '")) + json + "'");
|
||||
}
|
||||
#endif
|
||||
|
||||
#if defined(DEBUG_ESPUI)
|
||||
if (ESPUI.verbosity >= Verbosity::VerboseJSON)
|
||||
{
|
||||
Serial.println(F("ESPUIclient::SendJsonDocToWebSocket: client.text"));
|
||||
ESPU_DBGL(F("ESPUIclient::SendJsonDocToWebSocket: client.text"));
|
||||
}
|
||||
#endif
|
||||
// Serial.println(F("ESPUIclient::SendJsonDocToWebSocket: client.text"));
|
||||
// ESPU_DBGL(F("ESPUIclient::SendJsonDocToWebSocket: client.text"));
|
||||
client->text(json);
|
||||
|
||||
} while (false);
|
||||
|
Reference in New Issue
Block a user