From 532925756fb88f65d9cfeb5d1b06bedb83ec441e Mon Sep 17 00:00:00 2001 From: Dmitry Borisenko <49808844+DmitryBorisenko33@users.noreply.github.com> Date: Tue, 25 Aug 2020 18:36:05 +0300 Subject: [PATCH] process to asinc --- data/set.device.json | 204 ++++++++++++--------------------------- data/set.deviceold.json | 143 +++++++++++++++++++++++++++ data/setn.device.json | 123 ----------------------- include/Class/NotAsinc.h | 31 ++++++ include/Consts.h | 5 + include/DeviceList.h | 8 +- include/Global.h | 2 +- src/Class/NotAsinc.cpp | 30 ++++++ src/Cmd.cpp | 3 +- src/DeviceList.cpp | 140 +++++++++++++-------------- src/MqttClient.cpp | 3 +- src/Upgrade.cpp | 18 ++-- src/Web.cpp | 32 +++--- src/main.cpp | 28 ++---- 14 files changed, 382 insertions(+), 388 deletions(-) create mode 100644 data/set.deviceold.json delete mode 100644 data/setn.device.json create mode 100644 include/Class/NotAsinc.h create mode 100644 src/Class/NotAsinc.cpp diff --git a/data/set.device.json b/data/set.device.json index 340d21b7..cf059244 100644 --- a/data/set.device.json +++ b/data/set.device.json @@ -1,143 +1,65 @@ { - "configs": [ - "/config.setup.json", - "/config.option.json", - "/config.live.json", - "/lang/lang.ru.json" - ], - "class": "col-sm-offset-1 col-sm-10", - "content": [ - { - "type": "h5", - "title": "{{name}}", - "class": "alert-default" - }, - { - "type": "link", - "title": "{{ButMainPage}}", - "action": "/", - "class": "btn btn-block btn-default" - }, - { - "type": "hr" - }, - { - "type": "h4", - "title": "Device ID: {{chipID}}" - }, - { - "type": "h4", - "title": "IP address: {{ip}}" - }, - { - "type": "h4", - "title": "Time: {{time}}" - }, - { - "type": "h4", - "title": "Uptime: {{uptime}}" - }, - { - "type": "h4", - "title": "Build version: {{firmware_version}}" - }, - { - "type": "h4", - "title": "LittleFS version: 2.3.5" - }, - { - "type": "hr" - }, - { - "type": "dropdown", - "name": "help-url", - "class": "btn btn-default", - "style": "display:inline", - "title": { - "#": "{{SetDevPreset}}", - "/set?preset=001": "1.Вкл. выкл. локального реле", - "/set?preset=002": "2.Вкл. выкл. локального реле в определенное время", - "/set?preset=003": "3.Вкл. выкл. локального реле на определенный период времени", - "/set?preset=004": "4.Вкл. выкл. нескольких локальных реле кнопкой в приложении", - "/set?preset=005": "5.Вкл. выкл. локального реле физической кнопкой и кнопкой в приложении параллельно (для выключателя света)", - "/set?preset=006": "6.Вкл. выкл. нескольких удаленных реле кнопкой в приложении (нужно указать Device ID)", - "/set?preset=007": "7.Вкл. выкл. нескольких удаленных реле физической кнопкой (нужно указать Device ID)", - "/set?preset=008": "8.Широтно импульсная модуляция", - "/set?preset=009": "9.Сенсор DHT11 (темп, влажность) и логгирование", - "/set?preset=010": "10.Сенсор DHT22, DHT33, DHT44, AM2302, RHT03 (темп, влажность) и логгирование", - "/set?preset=011": "11.Аналоговый сенсор и логгирование", - "/set?preset=012": "12.Cенсор bmp280 (темп, давление) и логгирование", - "/set?preset=013": "13.Cенсор bme280 (темп, давление, влажность, высота) и логгирование", - "/set?preset=014": "14.Сенсор DS18B20 (темп) и логгирование", - "/set?preset=015": "15.Термостат на DS18B20 с переключением в ручной режим и логгированием", - "/set?preset=016": "16.Котроль уровня в баке (датчик расстояния) на сенсорах: JSN-SR04T, HC-SR04, HY-SRF05 и логгирование", - "/set?preset=017": "17.Датчик движения включающий свет", - "/set?preset=018": "18.Охранный датчик движения", - "/set?preset=019": "19.Система управления шаговыми двигателями на основе драйвера A4988 (открытие закрытие штор)", - "/set?preset=020": "20.Система управления сервоприводами", - "/set?preset=021": "21.Модуль uart (serial). Двухстороняя связь с устройством через uart. Получение данных и отправка команд", - "/set?preset=100": "22.Настройки по умолчанию" - } - }, - { - "type": "h2", - "title": "{{SetDevConf}}" - }, - { - "type": "file", - "state": "dev_conf.txt", - "style": "width:100%;height:350px", - "title": "Сохранить", - "action": "/set?devinit", - "class": "btn btn-block btn-default" - }, - - { - "type": "h2", - "title": "Сценарии" - }, - { - "type": "checkbox", - "name": "scen", - "title": "Включить сценарии", - "action": "/set?scen=[[scen]]", - "state": "{{scen}}" - }, - { - "type": "file", - "state": "dev_scen.txt", - "style": "width:100%;height:350px", - "title": "Сохранить", - "action": "/set?sceninit", - "class": "btn btn-block btn-default" - }, - { - "type": "link", - "title": "Инструкция к системе автоматизации", - "action": "https://github.com/DmitryBorisenko33/esp32-esp8266_iot-manager_modules_firmware/wiki/Instruction", - "class": "btn btn-block btn-default" - }, - { - "type": "link", - "title": "Очистить логи сенсоров", - "action": "/set?cleanlog", - "class": "btn btn-block btn-default" - }, - { - "type": "hr" - }, - { - "type": "h3", - "name": "my-block", - "style": "position:fixed;top:50%;left:50%;width:400px;margin-left:-200px;text-align:center;", - "class": "hidden" - }, - { - "type": "button", - "title": "Обновить прошивку устройства", - "action": "/check", - "response": "[[my-block]]", - "class": "btn btn-block btn-default" - } - ] + "configs": [ + "/config.setup.json", + "/config.option.json", + "/config.live.json", + "/lang/lang.ru.json" + ], + "class": "col-sm-offset-1 col-sm-10", + "content": [ + { + "type": "h5", + "title": "{{name}}", + "class": "alert-default" + }, + { + "type": "link", + "title": "{{ButMainPage}}", + "action": "/", + "class": "btn btn-block btn-default" + }, + { + "type": "hr" + }, + { + "type": "dropdown", + "name": "help-url", + "class": "btn btn-default", + "style": "display:inline", + "title": { + "#": "Выберите элемент из списка", + "/set?addItem=button-out": "1.Кнопка управляющая пином", + "/set?addItem=button-out-i": "2.Кнопка управляющая пином с инверсией", + "/set?addItem=pwm-out": "3.Широтно импульсная подуляция", + "/set?addItem=button-in": "4.Физическая кнопка" + } + }, + { + "type": "hr" + }, + { + "type": "csv", + "title": [ + "html", + "text", + "text", + "text", + "text", + "text" + ], + "state": "conf.csv", + "style": "width:100%;", + "action": "/set?saveItems", + "class": "btn btn-block btn-default" + }, + { + "type": "link", + "title": "Удалить все", + "action": "/set?delAllItems", + "class": "btn btn-block btn-default" + }, + { + "type": "hr" + } + ] } \ No newline at end of file diff --git a/data/set.deviceold.json b/data/set.deviceold.json new file mode 100644 index 00000000..340d21b7 --- /dev/null +++ b/data/set.deviceold.json @@ -0,0 +1,143 @@ +{ + "configs": [ + "/config.setup.json", + "/config.option.json", + "/config.live.json", + "/lang/lang.ru.json" + ], + "class": "col-sm-offset-1 col-sm-10", + "content": [ + { + "type": "h5", + "title": "{{name}}", + "class": "alert-default" + }, + { + "type": "link", + "title": "{{ButMainPage}}", + "action": "/", + "class": "btn btn-block btn-default" + }, + { + "type": "hr" + }, + { + "type": "h4", + "title": "Device ID: {{chipID}}" + }, + { + "type": "h4", + "title": "IP address: {{ip}}" + }, + { + "type": "h4", + "title": "Time: {{time}}" + }, + { + "type": "h4", + "title": "Uptime: {{uptime}}" + }, + { + "type": "h4", + "title": "Build version: {{firmware_version}}" + }, + { + "type": "h4", + "title": "LittleFS version: 2.3.5" + }, + { + "type": "hr" + }, + { + "type": "dropdown", + "name": "help-url", + "class": "btn btn-default", + "style": "display:inline", + "title": { + "#": "{{SetDevPreset}}", + "/set?preset=001": "1.Вкл. выкл. локального реле", + "/set?preset=002": "2.Вкл. выкл. локального реле в определенное время", + "/set?preset=003": "3.Вкл. выкл. локального реле на определенный период времени", + "/set?preset=004": "4.Вкл. выкл. нескольких локальных реле кнопкой в приложении", + "/set?preset=005": "5.Вкл. выкл. локального реле физической кнопкой и кнопкой в приложении параллельно (для выключателя света)", + "/set?preset=006": "6.Вкл. выкл. нескольких удаленных реле кнопкой в приложении (нужно указать Device ID)", + "/set?preset=007": "7.Вкл. выкл. нескольких удаленных реле физической кнопкой (нужно указать Device ID)", + "/set?preset=008": "8.Широтно импульсная модуляция", + "/set?preset=009": "9.Сенсор DHT11 (темп, влажность) и логгирование", + "/set?preset=010": "10.Сенсор DHT22, DHT33, DHT44, AM2302, RHT03 (темп, влажность) и логгирование", + "/set?preset=011": "11.Аналоговый сенсор и логгирование", + "/set?preset=012": "12.Cенсор bmp280 (темп, давление) и логгирование", + "/set?preset=013": "13.Cенсор bme280 (темп, давление, влажность, высота) и логгирование", + "/set?preset=014": "14.Сенсор DS18B20 (темп) и логгирование", + "/set?preset=015": "15.Термостат на DS18B20 с переключением в ручной режим и логгированием", + "/set?preset=016": "16.Котроль уровня в баке (датчик расстояния) на сенсорах: JSN-SR04T, HC-SR04, HY-SRF05 и логгирование", + "/set?preset=017": "17.Датчик движения включающий свет", + "/set?preset=018": "18.Охранный датчик движения", + "/set?preset=019": "19.Система управления шаговыми двигателями на основе драйвера A4988 (открытие закрытие штор)", + "/set?preset=020": "20.Система управления сервоприводами", + "/set?preset=021": "21.Модуль uart (serial). Двухстороняя связь с устройством через uart. Получение данных и отправка команд", + "/set?preset=100": "22.Настройки по умолчанию" + } + }, + { + "type": "h2", + "title": "{{SetDevConf}}" + }, + { + "type": "file", + "state": "dev_conf.txt", + "style": "width:100%;height:350px", + "title": "Сохранить", + "action": "/set?devinit", + "class": "btn btn-block btn-default" + }, + + { + "type": "h2", + "title": "Сценарии" + }, + { + "type": "checkbox", + "name": "scen", + "title": "Включить сценарии", + "action": "/set?scen=[[scen]]", + "state": "{{scen}}" + }, + { + "type": "file", + "state": "dev_scen.txt", + "style": "width:100%;height:350px", + "title": "Сохранить", + "action": "/set?sceninit", + "class": "btn btn-block btn-default" + }, + { + "type": "link", + "title": "Инструкция к системе автоматизации", + "action": "https://github.com/DmitryBorisenko33/esp32-esp8266_iot-manager_modules_firmware/wiki/Instruction", + "class": "btn btn-block btn-default" + }, + { + "type": "link", + "title": "Очистить логи сенсоров", + "action": "/set?cleanlog", + "class": "btn btn-block btn-default" + }, + { + "type": "hr" + }, + { + "type": "h3", + "name": "my-block", + "style": "position:fixed;top:50%;left:50%;width:400px;margin-left:-200px;text-align:center;", + "class": "hidden" + }, + { + "type": "button", + "title": "Обновить прошивку устройства", + "action": "/check", + "response": "[[my-block]]", + "class": "btn btn-block btn-default" + } + ] +} \ No newline at end of file diff --git a/data/setn.device.json b/data/setn.device.json deleted file mode 100644 index b3931aee..00000000 --- a/data/setn.device.json +++ /dev/null @@ -1,123 +0,0 @@ -{ - "configs": [ - "/config.setup.json", - "/config.option.json", - "/config.live.json", - "/lang/lang.ru.json" - ], - "class": "col-sm-offset-1 col-sm-10", - "content": [ - { - "type": "h5", - "title": "{{name}}", - "class": "alert-default" - }, - { - "type": "link", - "title": "{{ButMainPage}}", - "action": "/", - "class": "btn btn-block btn-default" - }, - { - "type": "hr" - }, - { - "type": "dropdown", - "name": "help-url", - "class": "btn btn-default", - "style": "display:inline", - "title": { - "#": "Выберите элемент из списка", - "/set?element=button-out": "1.Кнопка управляющая пином", - "/set?element=button-out-i": "2.Кнопка управляющая пином с инверсией", - "/set?element=pwm-out": "3.Широтно импульсная подуляция", - "/set?element=button-in": "4.Физическая кнопка" - } - }, - { - "type": "hr" - }, - { - "type": "csv", - "title": [ - "html", - "text", - "text", - "text", - "text", - "text" - ], - "state": "conf.csv", - "style": "width:100%;", - "action": "/set?save", - "class": "btn btn-block btn-default" - }, - { - "type": "link", - "title": "Удалить все", - "action": "/set?cleanconf", - "class": "btn btn-block btn-default" - }, - { - "type": "hr" - }, - { - "type": "h4", - "title": "Если", - "style": "width:25%;float:left;" - }, - { - "type": "select", - "name": "id-arg", - "action": "/set?id=[[id-arg]]", - "state": "en", - "title": "items/elements.json", - "style": "width:25%;float:left" - }, - { - "type": "select", - "name": "id-arg2", - "action": "/set?id=[[id-arg2]]", - "state": "en", - "title": "items/signs.json", - "style": "width:25%;float:left" - }, - { - "type": "input", - "title": "", - "name": "fsi-arg", - "pattern": "", - "state": "{{fsi}}", - "style": "width:25%;float:left" - }, - { - "type": "hr" - }, - { - "type": "h4", - "title": "То", - "style": "width:25%;float:left;" - }, - { - "type": "select", - "name": "id-arg3", - "action": "/set?id=[[id-arg3]]", - "state": "en", - "title": "items/elements.json", - "style": "width:25%;float:left" - }, - { - "type": "h4", - "title": "=", - "style": "width:25%;float:left;" - }, - { - "type": "input", - "title": "", - "name": "fsi-arg", - "pattern": "", - "state": "{{fsi}}", - "style": "width:25%;float:left" - } - ] -} \ No newline at end of file diff --git a/include/Class/NotAsinc.h b/include/Class/NotAsinc.h new file mode 100644 index 00000000..73d45196 --- /dev/null +++ b/include/Class/NotAsinc.h @@ -0,0 +1,31 @@ +#pragma once +#include +#include + +#include + +typedef std::function NotAsincCb; + +struct NotAsincItem { + bool test; + NotAsincCb cb; + void * cb_arg; + volatile bool is_used = false; +}; + +class NotAsinc { + private: + uint8_t size; + uint8_t task = 0; + NotAsincItem* items = NULL; + void handle(NotAsincCb f, void* arg); + + public: + NotAsinc(uint8_t size); + ~NotAsinc(); + + void add(uint8_t i, NotAsincCb, void* arg); + void make(uint8_t task); + void loop(); +}; +extern NotAsinc* myNotAsincActions; \ No newline at end of file diff --git a/include/Consts.h b/include/Consts.h index 0f8fd7e0..f468114e 100644 --- a/include/Consts.h +++ b/include/Consts.h @@ -84,6 +84,11 @@ enum TimerTask_t { WIFI_SCAN, UDP_DB, TEST }; +enum notAsincActions { + ZERO, + do_UPGRADE, +}; + enum ErrorType_t { ET_NONE, ET_FUNCTION, diff --git a/include/DeviceList.h b/include/DeviceList.h index 1d6be8a7..44bd7801 100644 --- a/include/DeviceList.h +++ b/include/DeviceList.h @@ -3,10 +3,6 @@ #include #include "Global.h" -extern void addElement(String name); -extern void delAllElement(); +extern void addItem(String name); +extern void delAllItems(); extern int getNewElementNumber(String file); -extern void do_getJsonListFromCsv(); -extern String getJsonListFromCsv(String csvFile,int colum); -extern void do_delElement(); -extern void delElement(String itemsFile, String itemsLine); \ No newline at end of file diff --git a/include/Global.h b/include/Global.h index 06437aef..2047d21a 100644 --- a/include/Global.h +++ b/include/Global.h @@ -211,7 +211,7 @@ extern void timerStop_(); extern void delTimer(String number); extern int readTimer(int number); -extern void initUpdater(); +extern void upgradeInit(); // widget extern void createWidgetByType(String widget_name, String page_name, String page_number, String file, String topic); diff --git a/src/Class/NotAsinc.cpp b/src/Class/NotAsinc.cpp new file mode 100644 index 00000000..f1c8f5f9 --- /dev/null +++ b/src/Class/NotAsinc.cpp @@ -0,0 +1,30 @@ +#include "Class/NotAsinc.h" + +NotAsinc::NotAsinc(uint8_t size) { + this->items = new NotAsincItem[size]; + this->size = size; +} + +NotAsinc::~NotAsinc() {} + +void NotAsinc::add(uint8_t i, NotAsincCb f, void* arg) { + this->items[i].cb = f; + this->items[i].cb_arg = arg; + this->items[i].is_used = true; +} + +void NotAsinc::loop() { + if (this->items[task].is_used) { + handle(this->items[task].cb, this->items[task].cb_arg); + task = 0; + } +} + +void NotAsinc::make(uint8_t task) { + this->task = task; +} + +void NotAsinc::handle(NotAsincCb f, void* arg) { + f(arg); +} +NotAsinc* myNotAsincActions; \ No newline at end of file diff --git a/src/Cmd.cpp b/src/Cmd.cpp index b158d0aa..ca4a1329 100644 --- a/src/Cmd.cpp +++ b/src/Cmd.cpp @@ -6,6 +6,7 @@ #include "Class/Pwm.h" #include "Class/Switch.h" //----------------------------- +#include "Class/NotAsinc.h" #include "Global.h" #include "Module/Terminal.h" #include "Servo/Servos.h" @@ -439,7 +440,7 @@ void httpOrderSend() { } void firmwareUpdate() { - updateFlag = true; + myNotAsincActions->make(do_UPGRADE); } void firmwareVersion() { diff --git a/src/DeviceList.cpp b/src/DeviceList.cpp index 60410aa8..b3411920 100644 --- a/src/DeviceList.cpp +++ b/src/DeviceList.cpp @@ -2,19 +2,17 @@ static const char* firstLine PROGMEM = "Тип элемента;Id;Виджет;Имя вкладки;Имя виджета;Позиция виджета"; -void addElement(String name) { +void addItem(String name) { String item = readFile("items/" + name + ".txt", 1024); - item.replace("id", "id" + String(getNewElementNumber("id.txt"))); item.replace("order", String(getNewElementNumber("order.txt"))); - item.replace("\r\n", ""); item.replace("\r", ""); item.replace("\n", ""); addFile("conf.csv", "\n" + item); } -void delAllElement() { +void delAllItems() { removeFile("conf.csv"); addFile("conf.csv", String(firstLine)); removeFile("id.txt"); @@ -29,71 +27,73 @@ int getNewElementNumber(String file) { return number; } -void do_getJsonListFromCsv() { - if (getJsonListFromCsvFlag) { - getJsonListFromCsvFlag = false; - removeFile("items/elements.json"); - addFile("items/elements.json", getJsonListFromCsv("conf.csv", 1)); - } -} -String getJsonListFromCsv(String csvFile, int colum) { - File configFile = LittleFS.open("/" + csvFile, "r"); - if (!configFile) { - return "error"; - } - configFile.seek(0, SeekSet); - String outJson = "{}"; - - int count = -1; - - while (configFile.position() != configFile.size()) { - count++; - String item = configFile.readStringUntil('\n'); - if (count > 0) { - String line = selectFromMarkerToMarker(item, ";", colum); - jsonWriteStr(outJson, line, line); - } - } - configFile.close(); - csvFile = ""; - return outJson; -} - -void do_delElement() { - if (delElementFlag) { - delElementFlag = false; - delElement(itemsFile, itemsLine); - } -} - -void delElement(String _itemsFile, String _itemsLine) { - File configFile = LittleFS.open("/" + _itemsFile, "r"); - if (!configFile) { - return; - } - configFile.seek(0, SeekSet); - String finalConf; - int count = -1; - while (configFile.position() != configFile.size()) { - count++; - String item = configFile.readStringUntil('\n'); - Serial.print(_itemsLine); - Serial.print(" "); - Serial.println(count); - if (count != _itemsLine.toInt()) { - if (count == 0) { - finalConf += item; - } else { - finalConf += "\n" + item; - } - } - } - removeFile(_itemsFile); - addFile(_itemsFile, finalConf); - Serial.println(finalConf); - itemsFile = ""; - itemsLine = ""; - configFile.close(); -} \ No newline at end of file +//void do_getJsonListFromCsv() { +// if (getJsonListFromCsvFlag) { +// getJsonListFromCsvFlag = false; +// removeFile("items/items.json"); +// addFile("items/items.json", getJsonListFromCsv("conf.csv", 1)); +// } +//} +// +//String getJsonListFromCsv(String csvFile, int colum) { +// File configFile = LittleFS.open("/" + csvFile, "r"); +// if (!configFile) { +// return "error"; +// } +// configFile.seek(0, SeekSet); +// +// String outJson = "{}"; +// +// int count = -1; +// +// while (configFile.position() != configFile.size()) { +// count++; +// String item = configFile.readStringUntil('\n'); +// if (count > 0) { +// String line = selectFromMarkerToMarker(item, ";", colum); +// jsonWriteStr(outJson, line, line); +// } +// } +// configFile.close(); +// csvFile = ""; +// return outJson; +//} +// +//void do_delElement() { +// if (delElementFlag) { +// delElementFlag = false; +// delElement(itemsFile, itemsLine); +// } +//} +// +//void delElement(String _itemsFile, String _itemsLine) { +// File configFile = LittleFS.open("/" + _itemsFile, "r"); +// if (!configFile) { +// return; +// } +// configFile.seek(0, SeekSet); +// String finalConf; +// int count = -1; +// while (configFile.position() != configFile.size()) { +// count++; +// String item = configFile.readStringUntil('\n'); +// Serial.print(_itemsLine); +// Serial.print(" "); +// Serial.println(count); +// if (count != _itemsLine.toInt()) { +// if (count == 0) { +// finalConf += item; +// } else { +// finalConf += "\n" + item; +// } +// } +// } +// removeFile(_itemsFile); +// addFile(_itemsFile, finalConf); +// Serial.println(finalConf); +// itemsFile = ""; +// itemsLine = ""; +// configFile.close(); +//} \ No newline at end of file diff --git a/src/MqttClient.cpp b/src/MqttClient.cpp index 9841fefe..5137f324 100644 --- a/src/MqttClient.cpp +++ b/src/MqttClient.cpp @@ -2,6 +2,7 @@ #include "Global.h" #include "Init.h" #include +#include "Class/NotAsinc.h" static const char* MODULE = "Mqtt"; @@ -151,7 +152,7 @@ void handleSubscribedUpdates(char* topic, uint8_t* payload, size_t length) { } else if (topicStr.indexOf("update")) { if (payloadStr == "1") { - updateFlag = true; + myNotAsincActions->make(do_UPGRADE); } } else if (topicStr.indexOf("devc")) { diff --git a/src/Upgrade.cpp b/src/Upgrade.cpp index 0ebfbc6c..2f517372 100644 --- a/src/Upgrade.cpp +++ b/src/Upgrade.cpp @@ -1,5 +1,5 @@ #include "Upgrade.h" - +#include "Class/NotAsinc.h" #include "Global.h" #include "ESP8266.h" @@ -27,7 +27,14 @@ void getLastVersion() { } } -void initUpdater() { +void upgradeInit() { + + myNotAsincActions->add( + do_UPGRADE, [&](void*) { + upgrade_firmware(); + }, + nullptr); + if (isNetworkActive()) { getLastVersion(); if (lastVersion.length()) { @@ -78,10 +85,3 @@ void upgrade_firmware() { pm.error("on firmware"); } } - -void do_update() { - if (updateFlag) { - updateFlag = false; - upgrade_firmware(); - } -} \ No newline at end of file diff --git a/src/Web.cpp b/src/Web.cpp index 8d27006b..25a21dd9 100644 --- a/src/Web.cpp +++ b/src/Web.cpp @@ -1,6 +1,7 @@ #include "DeviceList.h" #include "Global.h" #include "Init.h" +#include "Class/NotAsinc.h" static const char* MODULE = "Web"; @@ -26,6 +27,8 @@ void web_init() { }); server.on("/set", HTTP_GET, [](AsyncWebServerRequest* request) { + + //==============================presets=========================================================================================================== uint8_t preset; if (parseRequestForPreset(request, preset)) { pm.info("activate #" + String(preset, DEC)); @@ -38,37 +41,30 @@ void web_init() { request->redirect("/?set.device"); } - //==============================list of items===================================================== - if (request->hasArg("element")) { - String name = request->getParam("element")->value(); - addElement(name); - getJsonListFromCsvFlag = true; + //==============================list of items==================================================================================================== + if (request->hasArg("addItem")) { + String name = request->getParam("addItem")->value(); + addItem(name); Device_init(); request->redirect("/?setn.device"); } - if (request->hasArg("cleanconf")) { - delAllElement(); - removeFile("items/elements.json"); + if (request->hasArg("delAllItems")) { + delAllItems(); Device_init(); request->redirect("/?setn.device"); } - if (request->hasArg("save")) { + if (request->hasArg("saveItems")) { Device_init(); - getJsonListFromCsvFlag = true; request->redirect("/?setn.device"); } - - - - //-------------------------------------------------------------------------------- if (request->hasArg("devinit")) { Device_init(); request->send(200); } - //-------------------------------------------------------------------------------- + if (request->hasArg("scen")) { bool value = request->getParam("scen")->value().toInt(); jsonWriteBool(configSetupJson, "scen", value); @@ -76,12 +72,12 @@ void web_init() { loadScenario(); request->send(200); } - //-------------------------------------------------------------------------------- + if (request->hasArg("sceninit")) { loadScenario(); request->send(200); } - //-------------------------------------------------------------------------------- + #ifdef LOGGING_ENABLED if (request->hasArg("cleanlog")) { clean_log_date(); @@ -295,7 +291,7 @@ void web_init() { * Upgrade */ server.on("/upgrade", HTTP_GET, [](AsyncWebServerRequest* request) { - updateFlag = true; + myNotAsincActions->make(do_UPGRADE);; request->send(200, "text/html"); }); } \ No newline at end of file diff --git a/src/main.cpp b/src/main.cpp index 93605b1f..4ac7524d 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -1,5 +1,6 @@ #include "Bus/BusScannerFactory.h" -#include "Class/AsyncActions.h" +#include "Class/CallBackTest.h" +#include "Class/NotAsinc.h" #include "Class/Switch.h" #include "Cmd.h" #include "DeviceList.h" @@ -56,7 +57,7 @@ void setup() { telemetry_init(); pm.info("Updater"); - initUpdater(); + upgradeInit(); pm.info("HttpServer"); HttpServer::init(); @@ -70,22 +71,15 @@ void setup() { #endif ts.add( - TEST, 1000 * 60, [&](void*) { pm.info(printMemoryStatus()); }, nullptr, true); + TEST, 1000 * 60, [&](void*) { + pm.info(printMemoryStatus()); + }, + nullptr, true); just_load = false; initialized = true; - CB = new CallBackTest(); - - CB->setCallback([]() { - Serial.println("123"); - }); - - CB->setCallback([](const String str) { - Serial.println(str); - return true; - }); - + myNotAsincActions = new NotAsinc(5); } void loop() { @@ -102,7 +96,7 @@ void loop() { loopUdp(); #endif timeNow->loop(); - async->loop(); + myNotAsincActions->loop(); not_async_actions(); MqttClient::loop(); loopCmd(); @@ -124,10 +118,8 @@ void not_async_actions() { getLastVersion(); - do_update(); + do_scan_bus(); - do_delElement(); - do_getJsonListFromCsv(); } String getURL(const String& urls) {