добавление кнопок в элемент

This commit is contained in:
Dmitry Borisenko
2022-12-14 00:56:25 +01:00
parent d2a615c9e5
commit 2db14ed21a
9 changed files with 67 additions and 36 deletions

Binary file not shown.

Binary file not shown.

View File

@@ -4,12 +4,12 @@
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width,initial-scale=1" />
<title>IoT Manager 4.4.3</title>
<title>IoT Manager 4.4.4</title>
<link rel="icon" type="image/png" href="/favicon.ico" />
<link rel="stylesheet" href="/build/bundle.css?443" />
<link rel="stylesheet" href="/build/bundle.css?444" />
<script defer src="/build/bundle.js?443"></script>
<script defer src="/build/bundle.js?444"></script>
</head>
<body></body>

View File

@@ -62,7 +62,9 @@
"logid": "t",
"points": 365,
"telegram": 0,
"test": 0
"test": 0,
"btn-defvalue": 0,
"btn-reset": "nil"
},
{
"global": 0,

View File

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

View File

@@ -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<IoTItem*>::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<IoTItem*>::iterator it = IoTItems.begin(); it != IoTItems.end(); ++it) {
if ((*it)->iAmLocal) (*it)->onMqttWsAppConnectEvent();
}
}
//отвечаем на запрос графиков
// отвечаем на запрос графиков
if (headerStr == "/charts|") {
//обращение к логированию из ядра
//отправка данных графиков только в выбранный сокет
// обращение к логированию из ядра
// отправка данных графиков только в выбранный сокет
for (std::list<IoTItem*>::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<IoTItem*>::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);

View File

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

View File

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

View File

@@ -15,7 +15,9 @@
"logid": "t",
"points": 365,
"telegram": 0,
"test": 0
"test": 0,
"btn-defvalue": 0,
"btn-reset": "nil"
}
],
"about": {