From d121414e6524acf355c067076fe32a663de17d33 Mon Sep 17 00:00:00 2001 From: Dmitry Borisenko <49808844+DmitryBorisenko33@users.noreply.github.com> Date: Sun, 11 Sep 2022 14:13:58 +0200 Subject: [PATCH] =?UTF-8?q?=D1=83=D0=B1=D0=B8=D1=80=D0=B0=D0=B5=D0=BC=20?= =?UTF-8?q?=D0=B1=D0=B0=D0=B3=D0=B8=20=D0=BE=D0=BA=D0=BD=D0=B0=20=D0=B2?= =?UTF-8?q?=D0=B2=D0=BE=D0=B4=D0=B0=20=D0=B4=D0=B0=D1=82=D1=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- include/MqttClient.h | 2 +- include/WsServer.h | 2 +- src/MqttClient.cpp | 2 +- src/WsServer.cpp | 6 +++--- src/modules/virtual/Logging/Loging.cpp | 20 +++++++++++--------- 5 files changed, 17 insertions(+), 15 deletions(-) diff --git a/include/MqttClient.h b/include/MqttClient.h index f2ae5830..707fd4f0 100644 --- a/include/MqttClient.h +++ b/include/MqttClient.h @@ -17,7 +17,7 @@ void mqttSubscribe(); boolean publish(const String& topic, const String& data); boolean publishData(const String& topic, const String& data); -boolean publishChart(const String& topic, const String& data); +boolean publishChartMqtt(const String& topic, const String& data); boolean publishControl(String id, String topic, String state); boolean publishChart_test(const String& topic, const String& data); boolean publishStatusMqtt(const String& topic, const String& data); diff --git a/include/WsServer.h b/include/WsServer.h index 9219d2a7..52efdfec 100644 --- a/include/WsServer.h +++ b/include/WsServer.h @@ -15,7 +15,7 @@ extern void hexdump(const void* mem, uint32_t len, uint8_t cols); void sendFileToWs(const char* filename, uint8_t num, size_t frameSize); void publishStatusWs(const String& topic, const String& data); -void publishStatusWsJson(String& json); +void publishChartWs(String& json); void periodicWsSend(); void sendStringToWs(const String& msg, uint8_t num, String name); diff --git a/src/MqttClient.cpp b/src/MqttClient.cpp index 4bee01df..c5b869c8 100644 --- a/src/MqttClient.cpp +++ b/src/MqttClient.cpp @@ -222,7 +222,7 @@ boolean publishData(const String& topic, const String& data) { return true; } -boolean publishChart(const String& topic, const String& data) { +boolean publishChartMqtt(const String& topic, const String& data) { String path = mqttRootDevice + "/" + topic + "/status"; if (!publish(path, data)) { SerialPrint("E", F("MQTT"), F("on publish chart")); diff --git a/src/WsServer.cpp b/src/WsServer.cpp index 12a0b98d..4ec7b2f8 100644 --- a/src/WsServer.cpp +++ b/src/WsServer.cpp @@ -59,7 +59,7 @@ void webSocketEvent(uint8_t num, WStype_t type, uint8_t* payload, size_t length) sendFileToWs("/layout.json", num, 1024); String json = getParamsJson(); standWebSocket.sendTXT(num, json); - //отправка данных графиков + //отправка данных графиков (нехватает передачи номера сокетов) for (std::list::iterator it = IoTItems.begin(); it != IoTItems.end(); ++it) { if ((*it)->getSubtype() == "Loging") { (*it)->sendChart(2); @@ -250,8 +250,8 @@ void publishStatusWs(const String& topic, const String& data) { } //публикация статус сообщений уже готовых -void publishStatusWsJson(String& json) { - standWebSocket.broadcastTXT(json); +void publishChartWs(String& data) { + standWebSocket.broadcastTXT(data); } //данные которые мы отправляем в сокеты переодически diff --git a/src/modules/virtual/Logging/Loging.cpp b/src/modules/virtual/Logging/Loging.cpp index 3b7e8103..1bd579a3 100644 --- a/src/modules/virtual/Logging/Loging.cpp +++ b/src/modules/virtual/Logging/Loging.cpp @@ -5,7 +5,6 @@ void *getAPI_Date(String params); -String date; class Loging : public IoTItem { private: String logid; @@ -158,7 +157,7 @@ class Loging : public IoTItem { // SerialPrint("i", F("Loging"), "file '" + buf + "' too old, deleted"); // removeFile(buf); //} else { - unsigned long reqUnixTime = strDateToUnix(date); + unsigned long reqUnixTime = strDateToUnix(getItemValue(id + "-date")); if (fileUnixTimeLocal > reqUnixTime && fileUnixTimeLocal < reqUnixTime + 86400) { noData = false; createJson(buf, i, type); @@ -229,12 +228,12 @@ class Loging : public IoTItem { void publishJson(String &oneSingleJson, int type) { if (type == 1) { - publishChart(id, oneSingleJson); + publishChartMqtt(id, oneSingleJson); } else if (type == 2) { - publishStatusWsJson(oneSingleJson); + publishChartWs(oneSingleJson); } else if (type == 3) { - publishChart(id, oneSingleJson); - publishStatusWsJson(oneSingleJson); + publishChartMqtt(id, oneSingleJson); + publishChartWs(oneSingleJson); } } @@ -257,7 +256,7 @@ class Loging : public IoTItem { generateEvent(_id, value); publishStatusMqtt(_id, value); String json = createSingleJson(_id, value); - publishStatusWsJson(json); + publishChartWs(json); SerialPrint("i", "Sensor " + consoleInfo, "'" + _id + "' data: " + value + "'"); } @@ -298,16 +297,19 @@ class Date : public IoTItem { void setValue(String valStr) { value.valS = valStr; - date = valStr; setValue(value); } void setValue(IoTValue Value) { value = Value; regEvent(value.valS, ""); + //отправка данных при изменении даты for (std::list::iterator it = IoTItems.begin(); it != IoTItems.end(); ++it) { if ((*it)->getSubtype() == "Loging") { - (*it)->sendChart(3); + //отправляем только свои данные + if ((*it)->getID() == selectToMarker(id, "-")) { + (*it)->sendChart(3); + } } } }