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