не совсем полностью но рабочая версия

This commit is contained in:
Dmitry Borisenko
2022-09-26 01:33:52 +02:00
parent 100477444c
commit c7477872a8
10 changed files with 29 additions and 42 deletions

Binary file not shown.

Binary file not shown.

1
data_svelte/empty.txt Normal file
View File

@@ -0,0 +1 @@
{"x":0,"y1":0},

View File

@@ -1,5 +1,5 @@
{ {
"settings": "", "settings_": "",
"name": "IoTmanagerVer4", "name": "IoTmanagerVer4",
"apssid": "IoTmanager", "apssid": "IoTmanager",
"appass": "", "appass": "",

View File

@@ -1,7 +1,7 @@
#pragma once #pragma once
//Версия прошивки //Версия прошивки
#define FIRMWARE_VERSION 424 #define FIRMWARE_VERSION 425
#ifdef esp8266_4mb #ifdef esp8266_4mb
#define FIRMWARE_NAME "esp8266_4mb" #define FIRMWARE_NAME "esp8266_4mb"

View File

@@ -1,6 +1,6 @@
{ {
"iotmSettings": { "iotmSettings": {
"settings": "", "settings_": "",
"name": "IoTmanagerVer4", "name": "IoTmanagerVer4",
"apssid": "IoTmanager", "apssid": "IoTmanager",
"appass": "", "appass": "",

View File

@@ -2,7 +2,7 @@
const String getThisDevice() { const String getThisDevice() {
String thisDevice = "{}"; String thisDevice = "{}";
jsonWriteStr_(thisDevice, F("devicelist"), ""); //метка для парсинга jsonWriteStr_(thisDevice, F("devicelist_"), ""); //метка для парсинга
jsonWriteStr_(thisDevice, F("ip"), jsonReadStr(settingsFlashJson, F("ip"))); jsonWriteStr_(thisDevice, F("ip"), jsonReadStr(settingsFlashJson, F("ip")));
jsonWriteStr_(thisDevice, F("id"), jsonReadStr(settingsFlashJson, F("id"))); jsonWriteStr_(thisDevice, F("id"), jsonReadStr(settingsFlashJson, F("id")));
jsonWriteStr_(thisDevice, F("name"), jsonReadStr(settingsFlashJson, F("name"))); jsonWriteStr_(thisDevice, F("name"), jsonReadStr(settingsFlashJson, F("name")));
@@ -54,7 +54,7 @@ void asyncUdpInit() {
//будем отправлять каждые 30 секунд презентацию данного устройства //будем отправлять каждые 30 секунд презентацию данного устройства
ts.add( ts.add(
UDP, 60000, [&](void*) { //UDPP UDP, 60000, [&](void*) { // UDPP
if (isNetworkActive()) { if (isNetworkActive()) {
SerialPrint("i", F("UDP"), F("Broadcast device presentation")); SerialPrint("i", F("UDP"), F("Broadcast device presentation"));
asyncUdp.broadcastTo(getThisDevice().c_str(), 4210); asyncUdp.broadcastTo(getThisDevice().c_str(), 4210);

View File

@@ -19,9 +19,8 @@ void globalVarsSync() {
jsonWriteStr_(settingsFlashJson, "root", mqttRootDevice); jsonWriteStr_(settingsFlashJson, "root", mqttRootDevice);
jsonWriteStr_(settingsFlashJson, "id", chipId); jsonWriteStr_(settingsFlashJson, "id", chipId);
jsonWriteStr_(errorsHeapJson, "errors", ""); //метка для парсинга jsonWriteStr_(errorsHeapJson, "errors_", ""); //метка для парсинга
jsonWriteStr_(ssidListHeapJson, "ssid", ""); //метка для парсинга jsonWriteStr_(ssidListHeapJson, "ssids_", ""); //метка для парсинга
// jsonWriteStr(paramsHeapJson, "params", ""); //метка для парсинга
} }
String getParamsJson() { String getParamsJson() {

View File

@@ -22,7 +22,7 @@ void webSocketEvent(uint8_t num, WStype_t type, uint8_t* payload, size_t length)
case WStype_CONNECTED: { case WStype_CONNECTED: {
// IPAddress ip = standWebSocket.remoteIP(num); // IPAddress ip = standWebSocket.remoteIP(num);
SerialPrint("i", "WS " + String(num), "WS client connected"); SerialPrint("i", "WS " + String(num), "WS client connected");
if (num > 3) { if (num >= 3) {
SerialPrint("E", "WS", "Too many clients, connection closed!!!"); SerialPrint("E", "WS", "Too many clients, connection closed!!!");
jsonWriteInt(errorsHeapJson, "wse1", 1); jsonWriteInt(errorsHeapJson, "wse1", 1);
standWebSocket.close(); standWebSocket.close();
@@ -61,16 +61,18 @@ void webSocketEvent(uint8_t num, WStype_t type, uint8_t* payload, size_t length)
//отвечаем на запрос параметров //отвечаем на запрос параметров
if (headerStr == "/params|") { if (headerStr == "/params|") {
String json = "{}"; String params = "{}";
jsonWriteStr(json, "params", ""); jsonWriteStr(params, "params_", ""); //метка для парсинга
for (std::list<IoTItem*>::iterator it = IoTItems.begin(); it != IoTItems.end(); ++it) { for (std::list<IoTItem*>::iterator it = IoTItems.begin(); it != IoTItems.end(); ++it) {
if ((*it)->getSubtype() != "Loging") { 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<IoTItem*>::iterator it = IoTItems.begin(); it != IoTItems.end(); ++it) { for (std::list<IoTItem*>::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("/widgets.json", num, 1024);
sendFileToWs("/config.json", num, 1024); sendFileToWs("/config.json", num, 1024);
sendFileToWs("/scenario.json", num, 1024); sendFileToWs("/scenario.json", num, 1024);
//шлется для того что бы получить топик устройства
standWebSocket.sendTXT(num, settingsFlashJson); 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|") { if (headerStr == "/dev|") {
standWebSocket.sendTXT(num, errorsHeapJson); standWebSocket.sendTXT(num, errorsHeapJson);
sendFileToWs("/layout.json", num, 1024);
standWebSocket.sendTXT(num, settingsFlashJson); standWebSocket.sendTXT(num, settingsFlashJson);
sendFileToWs("/config.json", num, 1024); sendFileToWs("/config.json", num, 1024);
sendFileToWs("/items.json", num, 1024); sendFileToWs("/items.json", num, 1024);
String json = getParamsJson();
standWebSocket.sendTXT(num, json);
} }
//----------------------------------------------------------------------// //----------------------------------------------------------------------//

View File

@@ -112,9 +112,8 @@ class Loging : public IoTItem {
SerialPrint("E", F("Loging"), "'" + id + "' file writing error, return"); SerialPrint("E", F("Loging"), "'" + id + "' file writing error, return");
return; return;
} }
//запишем в него данные //запишем в него данные
String topic = mqttRootDevice + "/" + id;
logData = "{\"maxCount\":" + String(calculateMaxCount()) + ",\"topic\":\"" + topic + "\",\"status\":[" + logData;
if (addFile(path, logData) != "sucсess") { if (addFile(path, logData) != "sucсess") {
SerialPrint("E", F("Loging"), "'" + id + "' data writing error, return"); SerialPrint("E", F("Loging"), "'" + id + "' data writing error, return");
return; return;
@@ -195,8 +194,7 @@ class Loging : public IoTItem {
void clearValue() { void clearValue() {
SerialPrint("i", F("Loging"), "clear chart"); SerialPrint("i", F("Loging"), "clear chart");
String cleanJson = createEmtyJson(); sendChartFileToWs("/empty.txt", -1, 1000);
// publishJson(cleanJson);
} }
void clearHistory() { void clearHistory() {
@@ -238,20 +236,21 @@ class Loging : public IoTItem {
configFile.close(); configFile.close();
// String topic = mqttRootDevice + "/" + id; // String topic = mqttRootDevice + "/" + id;
// oneSingleJson = "{\"maxCount\":" + String(calculateMaxCount()) + ",\"topic\":\"" + topic + "\",\"status\":[" + oneSingleJson + "]}"; // oneSingleJson = "{\"maxCount\":" + String(calculateMaxCount()) + ",\"topic\":\"" + topic + "\",\"status\":[" + oneSingleJson + "]}";
// oneSingleJson.replace("},]}", "}]}"); oneSingleJson += "]}";
oneSingleJson.replace("},]}", "}]}");
SerialPrint("i", "Loging", "json size: " + String(oneSingleJson.length())); SerialPrint("i", "Loging", "json size: " + String(oneSingleJson.length()));
publishChartMqtt(id, oneSingleJson); publishChartMqtt(id, oneSingleJson);
return true; return true;
} }
void sendChartFileToWs(String filename, int num, size_t frameSize) { 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) { if (num == -1) {
standWebSocket.broadcastTXT(st); standWebSocket.broadcastTXT(st);
} else { } else {
standWebSocket.sendTXT(num, st); standWebSocket.sendTXT(num, st);
} }
String path = filepath(filename); String path = filepath(filename);
auto file = FileFS.open(path, "r"); auto file = FileFS.open(path, "r");
if (!file) { if (!file) {
@@ -271,7 +270,7 @@ class Loging : public IoTItem {
countRead = file.read(payload, sizeof(payload)); countRead = file.read(payload, sizeof(payload));
} }
file.close(); file.close();
String end = "/end/chart.json"; String end = "/end/chart.json|" + topic;
if (num == -1) { if (num == -1) {
standWebSocket.broadcastTXT(end); standWebSocket.broadcastTXT(end);
} else { } 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) { void setPublishDestination(int publishType, int wsNum = -1) {
_publishType = publishType; _publishType = publishType;
_wsNum = wsNum; _wsNum = wsNum;
@@ -316,11 +303,11 @@ class Loging : public IoTItem {
String currentDate = getTodayDateDotFormated(); String currentDate = getTodayDateDotFormated();
//отправляем в график данные только когда выбран сегодняшний день //отправляем в график данные только когда выбран сегодняшний день
if (userDate == currentDate) { if (userDate == currentDate) {
generateEvent(_id, value); // generateEvent(_id, value);
publishStatusMqtt(_id, value); // publishStatusMqtt(_id, value);
String json = createSingleJson(_id, value); // String json = createSingleJson(_id, value);
publishChartWs(-1, json); // publishChartWs(-1, json);
SerialPrint("i", "Sensor " + consoleInfo, "'" + _id + "' data: " + value + "'"); // SerialPrint("i", "Sensor " + consoleInfo, "'" + _id + "' data: " + value + "'");
} }
} }