diff --git a/data_svelte/build/bundle.css.gz b/data_svelte/build/bundle.css.gz
index 00198a08..b28a1dd1 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 2ec10bb5..9f59511c 100644
Binary files a/data_svelte/build/bundle.js.gz and b/data_svelte/build/bundle.js.gz differ
diff --git a/data_svelte/index.html b/data_svelte/index.html
index 6494d3b1..9d22217b 100644
--- a/data_svelte/index.html
+++ b/data_svelte/index.html
@@ -4,12 +4,12 @@
-
IoT Manager 4.4.3
+ IoT Manager 4.4.4
-
+
-
+
diff --git a/data_svelte/items.json b/data_svelte/items.json
index 7eb08547..40756f1a 100644
--- a/data_svelte/items.json
+++ b/data_svelte/items.json
@@ -62,7 +62,9 @@
"logid": "t",
"points": 365,
"telegram": 0,
- "test": 0
+ "test": 0,
+ "btn-defvalue": 0,
+ "btn-reset": "nil"
},
{
"global": 0,
diff --git a/include/classes/IoTItem.h b/include/classes/IoTItem.h
index 2086840c..81405849 100644
--- a/include/classes/IoTItem.h
+++ b/include/classes/IoTItem.h
@@ -55,6 +55,7 @@ class IoTItem {
virtual void onRegEvent(IoTItem* item);
virtual void onMqttRecive(String& topic, String& msg);
virtual void onMqttWsAppConnectEvent();
+ virtual void onModuleOrder(String& key, String& value);
// делаем доступным модулям отправку сообщений в телеграм
virtual void sendTelegramMsg(bool often, String msg);
diff --git a/src/WsServer.cpp b/src/WsServer.cpp
index 9eec262a..28dbd2b3 100644
--- a/src/WsServer.cpp
+++ b/src/WsServer.cpp
@@ -34,7 +34,7 @@ void webSocketEvent(uint8_t num, WStype_t type, uint8_t* payload, size_t length)
case WStype_TEXT: {
bool endOfHeaderFound = false;
- size_t maxAllowedHeaderSize = 15; //максимальное количество символов заголовка
+ size_t maxAllowedHeaderSize = 15; // максимальное количество символов заголовка
size_t headerLenth = 0;
String headerStr;
for (size_t i = 0; i <= maxAllowedHeaderSize; i++) {
@@ -54,13 +54,13 @@ void webSocketEvent(uint8_t num, WStype_t type, uint8_t* payload, size_t length)
// Страница веб интерфейса dashboard
//----------------------------------------------------------------------//
- //публикация всех виджетов
+ // публикация всех виджетов
if (headerStr == "/|") {
sendFileToWsByFrames("/layout.json", "layout", "", num, WEB_SOCKETS_FRAME_SIZE);
}
if (headerStr == "/params|") {
- //публикация всех статус сообщений при подключении svelte приложения
+ // публикация всех статус сообщений при подключении svelte приложения
String params = "{}";
for (std::list::iterator it = IoTItems.begin(); it != IoTItems.end(); ++it) {
if ((*it)->getSubtype() != "Loging") {
@@ -69,21 +69,21 @@ void webSocketEvent(uint8_t num, WStype_t type, uint8_t* payload, size_t length)
}
sendStringToWs("params", params, num);
- //генерация события подключения в модулях
+ // генерация события подключения в модулях
for (std::list::iterator it = IoTItems.begin(); it != IoTItems.end(); ++it) {
if ((*it)->iAmLocal) (*it)->onMqttWsAppConnectEvent();
}
}
- //отвечаем на запрос графиков
+ // отвечаем на запрос графиков
if (headerStr == "/charts|") {
- //обращение к логированию из ядра
- //отправка данных графиков только в выбранный сокет
+ // обращение к логированию из ядра
+ // отправка данных графиков только в выбранный сокет
for (std::list::iterator it = IoTItems.begin(); it != IoTItems.end(); ++it) {
- //сбрасываем даты графиков
- // if ((*it)->getID().endsWith("-date")) {
- // (*it)->setTodayDate();
- //}
+ // сбрасываем даты графиков
+ // if ((*it)->getID().endsWith("-date")) {
+ // (*it)->setTodayDate();
+ // }
if ((*it)->getSubtype() == "Loging" || "LogingDaily") {
(*it)->setPublishDestination(TO_WS, num);
(*it)->publishValue();
@@ -95,7 +95,7 @@ void webSocketEvent(uint8_t num, WStype_t type, uint8_t* payload, size_t length)
// Страница веб интерфейса configutation
//----------------------------------------------------------------------//
- //отвечаем данными на запрос страницы
+ // отвечаем данными на запрос страницы
if (headerStr == "/config|") {
sendFileToWsByFrames("/items.json", "itemsj", "", num, WEB_SOCKETS_FRAME_SIZE);
sendFileToWsByFrames("/widgets.json", "widget", "", num, WEB_SOCKETS_FRAME_SIZE);
@@ -104,7 +104,7 @@ void webSocketEvent(uint8_t num, WStype_t type, uint8_t* payload, size_t length)
sendStringToWs("settin", settingsFlashJson, num);
}
- //обработка кнопки сохранить
+ // обработка кнопки сохранить
if (headerStr == "/gifnoc|") {
writeFileUint8tByFrames("config.json", payload, length, headerLenth, 256);
}
@@ -124,7 +124,7 @@ void webSocketEvent(uint8_t num, WStype_t type, uint8_t* payload, size_t length)
// Страница веб интерфейса connection
//----------------------------------------------------------------------//
- //отвечаем данными на запрос страницы
+ // отвечаем данными на запрос страницы
if (headerStr == "/connection|") {
sendStringToWs("settin", settingsFlashJson, num);
sendStringToWs("ssidli", ssidListHeapJson, num);
@@ -133,7 +133,7 @@ void webSocketEvent(uint8_t num, WStype_t type, uint8_t* payload, size_t length)
// RouterFind(jsonReadStr(settingsFlashJson, F("routerssid")));
}
- //обработка кнопки сохранить настройки wifi
+ // обработка кнопки сохранить настройки wifi
if (headerStr == "/sgnittes|") {
writeUint8tToString(payload, length, headerLenth, settingsFlashJson);
writeFileUint8tByFrames("settings.json", payload, length, headerLenth, 256);
@@ -141,16 +141,16 @@ void webSocketEvent(uint8_t num, WStype_t type, uint8_t* payload, size_t length)
addThisDeviceToList();
}
- //обработка кнопки сохранить настройки mqtt
+ // обработка кнопки сохранить настройки mqtt
if (headerStr == "/mqtt|") {
- sendStringToWs("settin", settingsFlashJson, num); //отправляем в ответ новые полученные настройки
- handleMqttStatus(false, 8); //меняем статус на неопределенный
- mqttReconnect(); //начинаем переподключение
- sendStringToWs("errors", errorsHeapJson, num); //отправляем что статус неопределен
+ sendStringToWs("settin", settingsFlashJson, num); // отправляем в ответ новые полученные настройки
+ handleMqttStatus(false, 8); // меняем статус на неопределенный
+ mqttReconnect(); // начинаем переподключение
+ sendStringToWs("errors", errorsHeapJson, num); // отправляем что статус неопределен
sendStringToWs("ssidli", ssidListHeapJson, num);
}
- //запуск асинхронного сканирования wifi сетей при нажатии выпадающего списка
+ // запуск асинхронного сканирования wifi сетей при нажатии выпадающего списка
if (headerStr == "/scan|") {
RouterFind(jsonReadStr(settingsFlashJson, F("routerssid")));
sendStringToWs("ssidli", ssidListHeapJson, num);
@@ -160,7 +160,7 @@ void webSocketEvent(uint8_t num, WStype_t type, uint8_t* payload, size_t length)
// Страница веб интерфейса list
//----------------------------------------------------------------------//
- //отвечаем данными на запрос страницы
+ // отвечаем данными на запрос страницы
if (headerStr == "/list|") {
sendStringToWs("devlis", devListHeapJson, num);
}
@@ -169,7 +169,7 @@ void webSocketEvent(uint8_t num, WStype_t type, uint8_t* payload, size_t length)
// Страница веб интерфейса system
//----------------------------------------------------------------------//
- //отвечаем данными на запрос страницы
+ // отвечаем данными на запрос страницы
if (headerStr == "/system|") {
sendStringToWs("errors", errorsHeapJson, num);
sendStringToWs("settin", settingsFlashJson, num);
@@ -193,27 +193,27 @@ void webSocketEvent(uint8_t num, WStype_t type, uint8_t* payload, size_t length)
// отдельные команды веб интерфейса
//----------------------------------------------------------------------//
- //переписать любое поле в errors json
+ // переписать любое поле в errors json
if (headerStr == "/rorre|") {
writeUint8tValueToJsonString(payload, length, headerLenth, errorsHeapJson);
}
- //команда перезагрузки esp
+ // команда перезагрузки esp
if (headerStr == "/reboot|") {
ESP.restart();
}
- //команда очистки всех логов esp
+ // команда очистки всех логов esp
if (headerStr == "/clean|") {
cleanLogs();
}
- //команда обновления прошивки esp
+ // команда обновления прошивки esp
if (headerStr == "/update|") {
upgrade_firmware(3);
}
- //Прием команд control c dashboard
+ // Прием команд control c dashboard
if (headerStr == "/control|") {
String msg;
writeUint8tToString(payload, length, headerLenth, msg);
@@ -227,6 +227,24 @@ void webSocketEvent(uint8_t num, WStype_t type, uint8_t* payload, size_t length)
standWebSocket.sendTXT(num, "/tstr|");
}
+ // получаем команду посланную из модуля
+ if (headerStr == "/order|") {
+ SerialPrint("i", F("=>WS"), "Msg from module");
+ String json;
+ writeUint8tToString(payload, length, headerLenth, json);
+
+ String id, key, value;
+ jsonRead(json, "id", id);
+ jsonRead(json, "key", key);
+ jsonRead(json, "value", value);
+
+ for (std::list::iterator it = IoTItems.begin(); it != IoTItems.end(); ++it) {
+ if ((*it)->getID() == id) {
+ (*it)->onModuleOrder(key, value);
+ }
+ }
+ }
+
} break;
case WStype_BIN: {
@@ -265,7 +283,7 @@ void webSocketEvent(uint8_t num, WStype_t type, uint8_t* payload, size_t length)
}
}
-//публикация статус сообщений в ws (недостаток в том что делаем бродкаст всем клиентам поднятым в свелте!!!)
+// публикация статус сообщений в ws (недостаток в том что делаем бродкаст всем клиентам поднятым в свелте!!!)
void publishStatusWs(const String& topic, const String& data) {
String path = mqttRootDevice + "/" + topic;
String json = "{}";
@@ -274,7 +292,7 @@ void publishStatusWs(const String& topic, const String& data) {
sendStringToWs("status", json, -1);
}
-//публикация дополнительных json сообщений в ws
+// публикация дополнительных json сообщений в ws
void publishJsonWs(const String& topic, String& json) {
String path = mqttRootDevice + "/" + topic;
jsonWriteStr(json, "topic", path);
@@ -282,7 +300,7 @@ void publishJsonWs(const String& topic, String& json) {
// sendStringToWs("status", json, -1);
}
-//данные которые мы отправляем в сокеты переодически
+// данные которые мы отправляем в сокеты переодически
void periodicWsSend() {
sendStringToWs("ssidli", ssidListHeapJson, -1);
sendStringToWs("errors", errorsHeapJson, -1);
diff --git a/src/classes/IoTItem.cpp b/src/classes/IoTItem.cpp
index bb57d4f0..f3f35c89 100644
--- a/src/classes/IoTItem.cpp
+++ b/src/classes/IoTItem.cpp
@@ -178,6 +178,7 @@ void IoTItem::checkIntFromNet() {
void IoTItem::onRegEvent(IoTItem* item) {}
void IoTItem::onMqttRecive(String& topic, String& msg) {}
void IoTItem::onMqttWsAppConnectEvent() {}
+void IoTItem::onModuleOrder(String& key, String& value) {}
// делаем доступным модулям отправку сообщений в телеграм
void IoTItem::sendTelegramMsg(bool often, String msg) {}
diff --git a/src/modules/virtual/LogingDaily/LogingDaily.cpp b/src/modules/virtual/LogingDaily/LogingDaily.cpp
index e0e7bb9a..e0973b46 100644
--- a/src/modules/virtual/LogingDaily/LogingDaily.cpp
+++ b/src/modules/virtual/LogingDaily/LogingDaily.cpp
@@ -240,6 +240,13 @@ class LogingDaily : public IoTItem {
int calculateMaxCount() {
return 86400;
}
+
+ void onModuleOrder(String &key, String &value) {
+ if (key == "defvalue") {
+ } else if (key == "reset") {
+ }
+ SerialPrint("i", F("LogingDaily"), "key " + key + ", value " + value);
+ }
};
void *getAPI_LogingDaily(String subtype, String param) {
diff --git a/src/modules/virtual/LogingDaily/modinfo.json b/src/modules/virtual/LogingDaily/modinfo.json
index c34cdc81..1f4edd66 100644
--- a/src/modules/virtual/LogingDaily/modinfo.json
+++ b/src/modules/virtual/LogingDaily/modinfo.json
@@ -15,7 +15,9 @@
"logid": "t",
"points": 365,
"telegram": 0,
- "test": 0
+ "test": 0,
+ "btn-defvalue": 0,
+ "btn-reset": "nil"
}
],
"about": {