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

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",
"apssid": "IoTmanager",
"appass": "",

View File

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

View File

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

View File

@@ -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);

View File

@@ -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() {

View File

@@ -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<IoTItem*>::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<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("/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);
}
//----------------------------------------------------------------------//

View File

@@ -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 + "'");
}
}