mirror of
https://github.com/IoTManagerProject/IoTManager.git
synced 2026-03-27 06:32:19 +03:00
Ускоряем начало выполнения сценариев и добавляем событие onInit
Которое появляется и выполняется до инициализации сети
This commit is contained in:
61
src/Main.cpp
61
src/Main.cpp
@@ -10,6 +10,26 @@ String volStrForSave = "";
|
||||
unsigned long currentMillis;
|
||||
unsigned long prevMillis;
|
||||
|
||||
|
||||
|
||||
void elementsLoop() {
|
||||
// передаем управление каждому элементу конфигурации для выполнения своих функций
|
||||
for (std::list<IoTItem *>::iterator it = IoTItems.begin(); it != IoTItems.end(); ++it) {
|
||||
(*it)->loop();
|
||||
|
||||
// if ((*it)->iAmDead) {
|
||||
if (!((*it)->iAmLocal) && (*it)->getIntFromNet() == -1) {
|
||||
delete *it;
|
||||
IoTItems.erase(it);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
handleOrder();
|
||||
handleEvent();
|
||||
}
|
||||
|
||||
|
||||
void setup() {
|
||||
Serial.begin(115200);
|
||||
Serial.flush();
|
||||
@@ -33,6 +53,24 @@ void setup() {
|
||||
// синхронизация глобальных переменных с flash
|
||||
globalVarsSync();
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
// настраиваем микроконтроллер
|
||||
configure("/config.json");
|
||||
|
||||
// подготавливаем сценарии
|
||||
iotScen.loadScenario("/scenario.txt");
|
||||
|
||||
// создаем событие завершения инициализации основных моментов для возможности выполнения блока кода при загрузке
|
||||
createItemFromNet("onInit", "1", 1);
|
||||
|
||||
elementsLoop();
|
||||
|
||||
|
||||
|
||||
|
||||
// подключаемся к роутеру
|
||||
routerConnect();
|
||||
|
||||
@@ -75,8 +113,7 @@ void setup() {
|
||||
SerialPrint("i", "i2c", F("i2c pins overriding done"));
|
||||
}
|
||||
|
||||
// настраиваем микроконтроллер
|
||||
configure("/config.json");
|
||||
|
||||
|
||||
// инициализация задач переодического выполнения
|
||||
periodicTasksInit();
|
||||
@@ -87,9 +124,6 @@ void setup() {
|
||||
// запуск работы udp
|
||||
asyncUdpInit();
|
||||
|
||||
// подготавливаем сценарии
|
||||
iotScen.loadScenario("/scenario.txt");
|
||||
|
||||
// создаем событие завершения конфигурирования для возможности выполнения блока кода при загрузке
|
||||
createItemFromNet("onStart", "1", 1);
|
||||
|
||||
@@ -134,6 +168,8 @@ void setup() {
|
||||
// }
|
||||
}
|
||||
|
||||
|
||||
|
||||
void loop() {
|
||||
#ifdef LOOP_DEBUG
|
||||
unsigned long st = millis();
|
||||
@@ -151,20 +187,9 @@ void loop() {
|
||||
|
||||
mqttLoop();
|
||||
|
||||
// передаем управление каждому элементу конфигурации для выполнения своих функций
|
||||
for (std::list<IoTItem *>::iterator it = IoTItems.begin(); it != IoTItems.end(); ++it) {
|
||||
(*it)->loop();
|
||||
|
||||
elementsLoop();
|
||||
|
||||
// if ((*it)->iAmDead) {
|
||||
if (!((*it)->iAmLocal) && (*it)->getIntFromNet() == -1) {
|
||||
delete *it;
|
||||
IoTItems.erase(it);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
handleOrder();
|
||||
handleEvent();
|
||||
|
||||
// #ifdef LOOP_DEBUG
|
||||
// loopPeriod = millis() - st;
|
||||
|
||||
@@ -173,7 +173,7 @@ void IoTItem::checkIntFromNet() {
|
||||
if (_intFromNet >= 0) {
|
||||
// если время жизни истекло, то удаляем элемент чуть позже на следующем такте loop
|
||||
// если это было уведомление не об ошибке или начале работы, то сообщаем, что сетевое событие давно не приходило
|
||||
if (_intFromNet == 0 && _id.indexOf("onError") == -1 && _id.indexOf("onStart") == -1) {
|
||||
if (_intFromNet == 0 && _id.indexOf("onError") == -1 && _id.indexOf("onStart") == -1 && _id.indexOf("onInit") == -1) {
|
||||
SerialPrint("E", _id, "The new data did not come from the network. The level of trust is low.", _id);
|
||||
}
|
||||
_intFromNet--;
|
||||
|
||||
Reference in New Issue
Block a user