process to asinc

This commit is contained in:
Dmitry Borisenko
2020-08-25 18:36:05 +03:00
parent b1318de1dc
commit 532925756f
14 changed files with 382 additions and 388 deletions

View File

@@ -1,143 +1,65 @@
{ {
"configs": [ "configs": [
"/config.setup.json", "/config.setup.json",
"/config.option.json", "/config.option.json",
"/config.live.json", "/config.live.json",
"/lang/lang.ru.json" "/lang/lang.ru.json"
], ],
"class": "col-sm-offset-1 col-sm-10", "class": "col-sm-offset-1 col-sm-10",
"content": [ "content": [
{ {
"type": "h5", "type": "h5",
"title": "{{name}}", "title": "{{name}}",
"class": "alert-default" "class": "alert-default"
}, },
{ {
"type": "link", "type": "link",
"title": "{{ButMainPage}}", "title": "{{ButMainPage}}",
"action": "/", "action": "/",
"class": "btn btn-block btn-default" "class": "btn btn-block btn-default"
}, },
{ {
"type": "hr" "type": "hr"
}, },
{ {
"type": "h4", "type": "dropdown",
"title": "Device ID: {{chipID}}" "name": "help-url",
}, "class": "btn btn-default",
{ "style": "display:inline",
"type": "h4", "title": {
"title": "IP address: {{ip}}" "#": "Выберите элемент из списка<span class=\"caret\"></span>",
}, "/set?addItem=button-out": "1.Кнопка управляющая пином",
{ "/set?addItem=button-out-i": "2.Кнопка управляющая пином с инверсией",
"type": "h4", "/set?addItem=pwm-out": "3.Широтно импульсная подуляция",
"title": "Time: {{time}}" "/set?addItem=button-in": "4.Физическая кнопка"
}, }
{ },
"type": "h4", {
"title": "Uptime: {{uptime}}" "type": "hr"
}, },
{ {
"type": "h4", "type": "csv",
"title": "Build version: {{firmware_version}}" "title": [
}, "html",
{ "text",
"type": "h4", "text",
"title": "LittleFS version: 2.3.5" "text",
}, "text",
{ "text"
"type": "hr" ],
}, "state": "conf.csv",
{ "style": "width:100%;",
"type": "dropdown", "action": "/set?saveItems",
"name": "help-url", "class": "btn btn-block btn-default"
"class": "btn btn-default", },
"style": "display:inline", {
"title": { "type": "link",
"#": "{{SetDevPreset}}<span class=\"caret\"></span>", "title": "Удалить все",
"/set?preset=001": "1.Вкл. выкл. локального реле", "action": "/set?delAllItems",
"/set?preset=002": "2.Вкл. выкл. локального реле в определенное время", "class": "btn btn-block btn-default"
"/set?preset=003": "3.Вкл. выкл. локального реле на определенный период времени", },
"/set?preset=004": "4.Вкл. выкл. нескольких локальных реле кнопкой в приложении", {
"/set?preset=005": "5.Вкл. выкл. локального реле физической кнопкой и кнопкой в приложении параллельно (для выключателя света)", "type": "hr"
"/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"
}
]
} }

143
data/set.deviceold.json Normal file
View File

@@ -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}}<span class=\"caret\"></span>",
"/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"
}
]
}

View File

@@ -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": {
"#": "Выберите элемент из списка<span class=\"caret\"></span>",
"/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"
}
]
}

31
include/Class/NotAsinc.h Normal file
View File

@@ -0,0 +1,31 @@
#pragma once
#include <Arduino.h>
#include <stdint.h>
#include <functional>
typedef std::function<void(void*)> 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;

View File

@@ -84,6 +84,11 @@ enum TimerTask_t { WIFI_SCAN,
UDP_DB, UDP_DB,
TEST }; TEST };
enum notAsincActions {
ZERO,
do_UPGRADE,
};
enum ErrorType_t { enum ErrorType_t {
ET_NONE, ET_NONE,
ET_FUNCTION, ET_FUNCTION,

View File

@@ -3,10 +3,6 @@
#include <Arduino.h> #include <Arduino.h>
#include "Global.h" #include "Global.h"
extern void addElement(String name); extern void addItem(String name);
extern void delAllElement(); extern void delAllItems();
extern int getNewElementNumber(String file); 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);

View File

@@ -211,7 +211,7 @@ extern void timerStop_();
extern void delTimer(String number); extern void delTimer(String number);
extern int readTimer(int number); extern int readTimer(int number);
extern void initUpdater(); extern void upgradeInit();
// widget // widget
extern void createWidgetByType(String widget_name, String page_name, String page_number, String file, String topic); extern void createWidgetByType(String widget_name, String page_name, String page_number, String file, String topic);

30
src/Class/NotAsinc.cpp Normal file
View File

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

View File

@@ -6,6 +6,7 @@
#include "Class/Pwm.h" #include "Class/Pwm.h"
#include "Class/Switch.h" #include "Class/Switch.h"
//----------------------------- //-----------------------------
#include "Class/NotAsinc.h"
#include "Global.h" #include "Global.h"
#include "Module/Terminal.h" #include "Module/Terminal.h"
#include "Servo/Servos.h" #include "Servo/Servos.h"
@@ -439,7 +440,7 @@ void httpOrderSend() {
} }
void firmwareUpdate() { void firmwareUpdate() {
updateFlag = true; myNotAsincActions->make(do_UPGRADE);
} }
void firmwareVersion() { void firmwareVersion() {

View File

@@ -2,19 +2,17 @@
static const char* firstLine PROGMEM = "Тип элемента;Id;Виджет;Имя вкладки;Имя виджета;Позиция виджета"; static const char* firstLine PROGMEM = "Тип элемента;Id;Виджет;Имя вкладки;Имя виджета;Позиция виджета";
void addElement(String name) { void addItem(String name) {
String item = readFile("items/" + name + ".txt", 1024); String item = readFile("items/" + name + ".txt", 1024);
item.replace("id", "id" + String(getNewElementNumber("id.txt"))); item.replace("id", "id" + String(getNewElementNumber("id.txt")));
item.replace("order", String(getNewElementNumber("order.txt"))); item.replace("order", String(getNewElementNumber("order.txt")));
item.replace("\r\n", ""); item.replace("\r\n", "");
item.replace("\r", ""); item.replace("\r", "");
item.replace("\n", ""); item.replace("\n", "");
addFile("conf.csv", "\n" + item); addFile("conf.csv", "\n" + item);
} }
void delAllElement() { void delAllItems() {
removeFile("conf.csv"); removeFile("conf.csv");
addFile("conf.csv", String(firstLine)); addFile("conf.csv", String(firstLine));
removeFile("id.txt"); removeFile("id.txt");
@@ -29,71 +27,73 @@ int getNewElementNumber(String file) {
return number; 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 = "{}"; //void do_getJsonListFromCsv() {
// if (getJsonListFromCsvFlag) {
int count = -1; // getJsonListFromCsvFlag = false;
// removeFile("items/items.json");
while (configFile.position() != configFile.size()) { // addFile("items/items.json", getJsonListFromCsv("conf.csv", 1));
count++; // }
String item = configFile.readStringUntil('\n'); //}
if (count > 0) { //
String line = selectFromMarkerToMarker(item, ";", colum); //String getJsonListFromCsv(String csvFile, int colum) {
jsonWriteStr(outJson, line, line); // File configFile = LittleFS.open("/" + csvFile, "r");
} // if (!configFile) {
} // return "error";
configFile.close(); // }
csvFile = ""; // configFile.seek(0, SeekSet);
return outJson; //
} // String outJson = "{}";
//
void do_delElement() { // int count = -1;
if (delElementFlag) { //
delElementFlag = false; // while (configFile.position() != configFile.size()) {
delElement(itemsFile, itemsLine); // count++;
} // String item = configFile.readStringUntil('\n');
} // if (count > 0) {
// String line = selectFromMarkerToMarker(item, ";", colum);
void delElement(String _itemsFile, String _itemsLine) { // jsonWriteStr(outJson, line, line);
File configFile = LittleFS.open("/" + _itemsFile, "r"); // }
if (!configFile) { // }
return; // configFile.close();
} // csvFile = "";
configFile.seek(0, SeekSet); // return outJson;
String finalConf; //}
int count = -1; //
while (configFile.position() != configFile.size()) { //void do_delElement() {
count++; // if (delElementFlag) {
String item = configFile.readStringUntil('\n'); // delElementFlag = false;
Serial.print(_itemsLine); // delElement(itemsFile, itemsLine);
Serial.print(" "); // }
Serial.println(count); //}
if (count != _itemsLine.toInt()) { //
if (count == 0) { //void delElement(String _itemsFile, String _itemsLine) {
finalConf += item; // File configFile = LittleFS.open("/" + _itemsFile, "r");
} else { // if (!configFile) {
finalConf += "\n" + item; // return;
} // }
} // configFile.seek(0, SeekSet);
} // String finalConf;
removeFile(_itemsFile); // int count = -1;
addFile(_itemsFile, finalConf); // while (configFile.position() != configFile.size()) {
Serial.println(finalConf); // count++;
itemsFile = ""; // String item = configFile.readStringUntil('\n');
itemsLine = ""; // Serial.print(_itemsLine);
configFile.close(); // 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();
//}

View File

@@ -2,6 +2,7 @@
#include "Global.h" #include "Global.h"
#include "Init.h" #include "Init.h"
#include <LittleFS.h> #include <LittleFS.h>
#include "Class/NotAsinc.h"
static const char* MODULE = "Mqtt"; static const char* MODULE = "Mqtt";
@@ -151,7 +152,7 @@ void handleSubscribedUpdates(char* topic, uint8_t* payload, size_t length) {
} else if (topicStr.indexOf("update")) { } else if (topicStr.indexOf("update")) {
if (payloadStr == "1") { if (payloadStr == "1") {
updateFlag = true; myNotAsincActions->make(do_UPGRADE);
} }
} else if (topicStr.indexOf("devc")) { } else if (topicStr.indexOf("devc")) {

View File

@@ -1,5 +1,5 @@
#include "Upgrade.h" #include "Upgrade.h"
#include "Class/NotAsinc.h"
#include "Global.h" #include "Global.h"
#include "ESP8266.h" #include "ESP8266.h"
@@ -27,7 +27,14 @@ void getLastVersion() {
} }
} }
void initUpdater() { void upgradeInit() {
myNotAsincActions->add(
do_UPGRADE, [&](void*) {
upgrade_firmware();
},
nullptr);
if (isNetworkActive()) { if (isNetworkActive()) {
getLastVersion(); getLastVersion();
if (lastVersion.length()) { if (lastVersion.length()) {
@@ -78,10 +85,3 @@ void upgrade_firmware() {
pm.error("on firmware"); pm.error("on firmware");
} }
} }
void do_update() {
if (updateFlag) {
updateFlag = false;
upgrade_firmware();
}
}

View File

@@ -1,6 +1,7 @@
#include "DeviceList.h" #include "DeviceList.h"
#include "Global.h" #include "Global.h"
#include "Init.h" #include "Init.h"
#include "Class/NotAsinc.h"
static const char* MODULE = "Web"; static const char* MODULE = "Web";
@@ -26,6 +27,8 @@ void web_init() {
}); });
server.on("/set", HTTP_GET, [](AsyncWebServerRequest* request) { server.on("/set", HTTP_GET, [](AsyncWebServerRequest* request) {
//==============================presets===========================================================================================================
uint8_t preset; uint8_t preset;
if (parseRequestForPreset(request, preset)) { if (parseRequestForPreset(request, preset)) {
pm.info("activate #" + String(preset, DEC)); pm.info("activate #" + String(preset, DEC));
@@ -38,37 +41,30 @@ void web_init() {
request->redirect("/?set.device"); request->redirect("/?set.device");
} }
//==============================list of items===================================================== //==============================list of items====================================================================================================
if (request->hasArg("element")) { if (request->hasArg("addItem")) {
String name = request->getParam("element")->value(); String name = request->getParam("addItem")->value();
addElement(name); addItem(name);
getJsonListFromCsvFlag = true;
Device_init(); Device_init();
request->redirect("/?setn.device"); request->redirect("/?setn.device");
} }
if (request->hasArg("cleanconf")) { if (request->hasArg("delAllItems")) {
delAllElement(); delAllItems();
removeFile("items/elements.json");
Device_init(); Device_init();
request->redirect("/?setn.device"); request->redirect("/?setn.device");
} }
if (request->hasArg("save")) { if (request->hasArg("saveItems")) {
Device_init(); Device_init();
getJsonListFromCsvFlag = true;
request->redirect("/?setn.device"); request->redirect("/?setn.device");
} }
//--------------------------------------------------------------------------------
if (request->hasArg("devinit")) { if (request->hasArg("devinit")) {
Device_init(); Device_init();
request->send(200); request->send(200);
} }
//--------------------------------------------------------------------------------
if (request->hasArg("scen")) { if (request->hasArg("scen")) {
bool value = request->getParam("scen")->value().toInt(); bool value = request->getParam("scen")->value().toInt();
jsonWriteBool(configSetupJson, "scen", value); jsonWriteBool(configSetupJson, "scen", value);
@@ -76,12 +72,12 @@ void web_init() {
loadScenario(); loadScenario();
request->send(200); request->send(200);
} }
//--------------------------------------------------------------------------------
if (request->hasArg("sceninit")) { if (request->hasArg("sceninit")) {
loadScenario(); loadScenario();
request->send(200); request->send(200);
} }
//--------------------------------------------------------------------------------
#ifdef LOGGING_ENABLED #ifdef LOGGING_ENABLED
if (request->hasArg("cleanlog")) { if (request->hasArg("cleanlog")) {
clean_log_date(); clean_log_date();
@@ -295,7 +291,7 @@ void web_init() {
* Upgrade * Upgrade
*/ */
server.on("/upgrade", HTTP_GET, [](AsyncWebServerRequest* request) { server.on("/upgrade", HTTP_GET, [](AsyncWebServerRequest* request) {
updateFlag = true; myNotAsincActions->make(do_UPGRADE);;
request->send(200, "text/html"); request->send(200, "text/html");
}); });
} }

View File

@@ -1,5 +1,6 @@
#include "Bus/BusScannerFactory.h" #include "Bus/BusScannerFactory.h"
#include "Class/AsyncActions.h" #include "Class/CallBackTest.h"
#include "Class/NotAsinc.h"
#include "Class/Switch.h" #include "Class/Switch.h"
#include "Cmd.h" #include "Cmd.h"
#include "DeviceList.h" #include "DeviceList.h"
@@ -56,7 +57,7 @@ void setup() {
telemetry_init(); telemetry_init();
pm.info("Updater"); pm.info("Updater");
initUpdater(); upgradeInit();
pm.info("HttpServer"); pm.info("HttpServer");
HttpServer::init(); HttpServer::init();
@@ -70,22 +71,15 @@ void setup() {
#endif #endif
ts.add( ts.add(
TEST, 1000 * 60, [&](void*) { pm.info(printMemoryStatus()); }, nullptr, true); TEST, 1000 * 60, [&](void*) {
pm.info(printMemoryStatus());
},
nullptr, true);
just_load = false; just_load = false;
initialized = true; initialized = true;
CB = new CallBackTest(); myNotAsincActions = new NotAsinc(5);
CB->setCallback([]() {
Serial.println("123");
});
CB->setCallback([](const String str) {
Serial.println(str);
return true;
});
} }
void loop() { void loop() {
@@ -102,7 +96,7 @@ void loop() {
loopUdp(); loopUdp();
#endif #endif
timeNow->loop(); timeNow->loop();
async->loop(); myNotAsincActions->loop();
not_async_actions(); not_async_actions();
MqttClient::loop(); MqttClient::loop();
loopCmd(); loopCmd();
@@ -124,10 +118,8 @@ void not_async_actions() {
getLastVersion(); getLastVersion();
do_update();
do_scan_bus(); do_scan_bus();
do_delElement();
do_getJsonListFromCsv();
} }
String getURL(const String& urls) { String getURL(const String& urls) {