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": {