diff --git a/data_svelte/build/bundle.css.gz b/data_svelte/build/bundle.css.gz index 689220c2..ed8be8a5 100644 Binary files a/data_svelte/build/bundle.css.gz and b/data_svelte/build/bundle.css.gz differ diff --git a/data_svelte/build/bundle.js.gz b/data_svelte/build/bundle.js.gz index 565074c8..3264e402 100644 Binary files a/data_svelte/build/bundle.js.gz and b/data_svelte/build/bundle.js.gz differ diff --git a/data_svelte/empty.txt b/data_svelte/empty.txt new file mode 100644 index 00000000..bfbc2438 --- /dev/null +++ b/data_svelte/empty.txt @@ -0,0 +1 @@ +{"x":0,"y1":0}, \ No newline at end of file diff --git a/data_svelte/settings.json b/data_svelte/settings.json index b6b59bc9..2f7547be 100644 --- a/data_svelte/settings.json +++ b/data_svelte/settings.json @@ -1,5 +1,5 @@ { - "settings": "", + "settings_": "", "name": "IoTmanagerVer4", "apssid": "IoTmanager", "appass": "", diff --git a/include/Const.h b/include/Const.h index 56bbab57..4889c6cd 100644 --- a/include/Const.h +++ b/include/Const.h @@ -1,7 +1,7 @@ #pragma once //Версия прошивки -#define FIRMWARE_VERSION 424 +#define FIRMWARE_VERSION 425 #ifdef esp8266_4mb #define FIRMWARE_NAME "esp8266_4mb" diff --git a/myProfile.json b/myProfile.json index fec8e45d..f1464935 100644 --- a/myProfile.json +++ b/myProfile.json @@ -1,6 +1,6 @@ { "iotmSettings": { - "settings": "", + "settings_": "", "name": "IoTmanagerVer4", "apssid": "IoTmanager", "appass": "", diff --git a/src/DeviceList.cpp b/src/DeviceList.cpp index 2788afb7..c9998917 100644 --- a/src/DeviceList.cpp +++ b/src/DeviceList.cpp @@ -2,7 +2,7 @@ const String getThisDevice() { String thisDevice = "{}"; - jsonWriteStr_(thisDevice, F("devicelist"), ""); //метка для парсинга + jsonWriteStr_(thisDevice, F("devicelist_"), ""); //метка для парсинга jsonWriteStr_(thisDevice, F("ip"), jsonReadStr(settingsFlashJson, F("ip"))); jsonWriteStr_(thisDevice, F("id"), jsonReadStr(settingsFlashJson, F("id"))); jsonWriteStr_(thisDevice, F("name"), jsonReadStr(settingsFlashJson, F("name"))); @@ -54,7 +54,7 @@ void asyncUdpInit() { //будем отправлять каждые 30 секунд презентацию данного устройства ts.add( - UDP, 60000, [&](void*) { //UDPP + UDP, 60000, [&](void*) { // UDPP if (isNetworkActive()) { SerialPrint("i", F("UDP"), F("Broadcast device presentation")); asyncUdp.broadcastTo(getThisDevice().c_str(), 4210); diff --git a/src/EspFileSystem.cpp b/src/EspFileSystem.cpp index 333dac58..91dd4bf1 100644 --- a/src/EspFileSystem.cpp +++ b/src/EspFileSystem.cpp @@ -19,9 +19,8 @@ void globalVarsSync() { jsonWriteStr_(settingsFlashJson, "root", mqttRootDevice); jsonWriteStr_(settingsFlashJson, "id", chipId); - jsonWriteStr_(errorsHeapJson, "errors", ""); //метка для парсинга - jsonWriteStr_(ssidListHeapJson, "ssid", ""); //метка для парсинга - // jsonWriteStr(paramsHeapJson, "params", ""); //метка для парсинга + jsonWriteStr_(errorsHeapJson, "errors_", ""); //метка для парсинга + jsonWriteStr_(ssidListHeapJson, "ssids_", ""); //метка для парсинга } String getParamsJson() { diff --git a/src/WsServer.cpp b/src/WsServer.cpp index 25084385..256f0a8b 100644 --- a/src/WsServer.cpp +++ b/src/WsServer.cpp @@ -22,7 +22,7 @@ void webSocketEvent(uint8_t num, WStype_t type, uint8_t* payload, size_t length) case WStype_CONNECTED: { // IPAddress ip = standWebSocket.remoteIP(num); SerialPrint("i", "WS " + String(num), "WS client connected"); - if (num > 3) { + if (num >= 3) { SerialPrint("E", "WS", "Too many clients, connection closed!!!"); jsonWriteInt(errorsHeapJson, "wse1", 1); standWebSocket.close(); @@ -61,16 +61,18 @@ void webSocketEvent(uint8_t num, WStype_t type, uint8_t* payload, size_t length) //отвечаем на запрос параметров if (headerStr == "/params|") { - String json = "{}"; - jsonWriteStr(json, "params", ""); + String params = "{}"; + jsonWriteStr(params, "params_", ""); //метка для парсинга for (std::list::iterator it = IoTItems.begin(); it != IoTItems.end(); ++it) { if ((*it)->getSubtype() != "Loging") { - if ((*it)->iAmLocal) jsonWriteStr(json, (*it)->getID(), (*it)->getValue()); + if ((*it)->iAmLocal) jsonWriteStr(params, (*it)->getID(), (*it)->getValue()); } } + standWebSocket.sendTXT(num, params); + } - standWebSocket.sendTXT(num, json); - + //отвечаем на запрос графиков + if (headerStr == "/charts|") { //отправка данных графиков только в выбранный сокет for (std::list::iterator it = IoTItems.begin(); it != IoTItems.end(); ++it) { //сбрасываем даты графиков @@ -94,6 +96,7 @@ void webSocketEvent(uint8_t num, WStype_t type, uint8_t* payload, size_t length) sendFileToWs("/widgets.json", num, 1024); sendFileToWs("/config.json", num, 1024); sendFileToWs("/scenario.json", num, 1024); + //шлется для того что бы получить топик устройства standWebSocket.sendTXT(num, settingsFlashJson); } @@ -191,12 +194,9 @@ void webSocketEvent(uint8_t num, WStype_t type, uint8_t* payload, size_t length) //----------------------------------------------------------------------// if (headerStr == "/dev|") { standWebSocket.sendTXT(num, errorsHeapJson); - sendFileToWs("/layout.json", num, 1024); standWebSocket.sendTXT(num, settingsFlashJson); sendFileToWs("/config.json", num, 1024); sendFileToWs("/items.json", num, 1024); - String json = getParamsJson(); - standWebSocket.sendTXT(num, json); } //----------------------------------------------------------------------// diff --git a/src/modules/virtual/Logging/Loging.cpp b/src/modules/virtual/Logging/Loging.cpp index 9b2b450d..441c4307 100644 --- a/src/modules/virtual/Logging/Loging.cpp +++ b/src/modules/virtual/Logging/Loging.cpp @@ -112,9 +112,8 @@ class Loging : public IoTItem { SerialPrint("E", F("Loging"), "'" + id + "' file writing error, return"); return; } + //запишем в него данные - String topic = mqttRootDevice + "/" + id; - logData = "{\"maxCount\":" + String(calculateMaxCount()) + ",\"topic\":\"" + topic + "\",\"status\":[" + logData; if (addFile(path, logData) != "sucсess") { SerialPrint("E", F("Loging"), "'" + id + "' data writing error, return"); return; @@ -195,8 +194,7 @@ class Loging : public IoTItem { void clearValue() { SerialPrint("i", F("Loging"), "clear chart"); - String cleanJson = createEmtyJson(); - // publishJson(cleanJson); + sendChartFileToWs("/empty.txt", -1, 1000); } void clearHistory() { @@ -238,20 +236,21 @@ class Loging : public IoTItem { configFile.close(); // String topic = mqttRootDevice + "/" + id; // oneSingleJson = "{\"maxCount\":" + String(calculateMaxCount()) + ",\"topic\":\"" + topic + "\",\"status\":[" + oneSingleJson + "]}"; - // oneSingleJson.replace("},]}", "}]}"); + oneSingleJson += "]}"; + oneSingleJson.replace("},]}", "}]}"); SerialPrint("i", "Loging", "json size: " + String(oneSingleJson.length())); publishChartMqtt(id, oneSingleJson); return true; } void sendChartFileToWs(String filename, int num, size_t frameSize) { - String st = "/st/chart.json"; + String topic = mqttRootDevice + "/" + id; + String st = "/st/chart.json|" + topic; if (num == -1) { standWebSocket.broadcastTXT(st); } else { standWebSocket.sendTXT(num, st); } - String path = filepath(filename); auto file = FileFS.open(path, "r"); if (!file) { @@ -271,7 +270,7 @@ class Loging : public IoTItem { countRead = file.read(payload, sizeof(payload)); } file.close(); - String end = "/end/chart.json"; + String end = "/end/chart.json|" + topic; if (num == -1) { standWebSocket.broadcastTXT(end); } else { @@ -279,18 +278,6 @@ class Loging : public IoTItem { } } - //посылка данных из string - void sendStringToWs(const String &msg, uint8_t num, String name) { - String st = "/st" + String(name); - standWebSocket.sendTXT(num, st); - size_t size = msg.length(); - char dataArray[size]; - msg.toCharArray(dataArray, size); - standWebSocket.sendBIN(num, (uint8_t *)dataArray, size); - String end = "/end" + String(name); - standWebSocket.sendTXT(num, end); - } - void setPublishDestination(int publishType, int wsNum = -1) { _publishType = publishType; _wsNum = wsNum; @@ -316,11 +303,11 @@ class Loging : public IoTItem { String currentDate = getTodayDateDotFormated(); //отправляем в график данные только когда выбран сегодняшний день if (userDate == currentDate) { - generateEvent(_id, value); - publishStatusMqtt(_id, value); - String json = createSingleJson(_id, value); - publishChartWs(-1, json); - SerialPrint("i", "Sensor " + consoleInfo, "'" + _id + "' data: " + value + "'"); + // generateEvent(_id, value); + // publishStatusMqtt(_id, value); + // String json = createSingleJson(_id, value); + // publishChartWs(-1, json); + // SerialPrint("i", "Sensor " + consoleInfo, "'" + _id + "' data: " + value + "'"); } }