From 0f9a185163e60b9ca10d800836b2ccd9e15277fd Mon Sep 17 00:00:00 2001 From: biver Date: Fri, 17 Feb 2023 22:21:10 +0300 Subject: [PATCH] =?UTF-8?q?=D0=A3=D1=81=D0=BA=D0=BE=D1=80=D1=8F=D0=B5?= =?UTF-8?q?=D0=BC=20=D0=BD=D0=B0=D1=87=D0=B0=D0=BB=D0=BE=20=D0=B2=D1=8B?= =?UTF-8?q?=D0=BF=D0=BE=D0=BB=D0=BD=D0=B5=D0=BD=D0=B8=D1=8F=20=D1=81=D1=86?= =?UTF-8?q?=D0=B5=D0=BD=D0=B0=D1=80=D0=B8=D0=B5=D0=B2=20=D0=B8=20=D0=B4?= =?UTF-8?q?=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D1=8F=D0=B5=D0=BC=20=D1=81=D0=BE?= =?UTF-8?q?=D0=B1=D1=8B=D1=82=D0=B8=D0=B5=20onInit=20=D0=9A=D0=BE=D1=82?= =?UTF-8?q?=D0=BE=D1=80=D0=BE=D0=B5=20=D0=BF=D0=BE=D1=8F=D0=B2=D0=BB=D1=8F?= =?UTF-8?q?=D0=B5=D1=82=D1=81=D1=8F=20=D0=B8=20=D0=B2=D1=8B=D0=BF=D0=BE?= =?UTF-8?q?=D0=BB=D0=BD=D1=8F=D0=B5=D1=82=D1=81=D1=8F=20=D0=B4=D0=BE=20?= =?UTF-8?q?=D0=B8=D0=BD=D0=B8=D1=86=D0=B8=D0=B0=D0=BB=D0=B8=D0=B7=D0=B0?= =?UTF-8?q?=D1=86=D0=B8=D0=B8=20=D1=81=D0=B5=D1=82=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/Main.cpp | 61 +++++++++++++++++++++++++++++------------ src/classes/IoTItem.cpp | 2 +- 2 files changed, 44 insertions(+), 19 deletions(-) diff --git a/src/Main.cpp b/src/Main.cpp index 815c56dd..95cf99ab 100644 --- a/src/Main.cpp +++ b/src/Main.cpp @@ -10,6 +10,26 @@ String volStrForSave = ""; unsigned long currentMillis; unsigned long prevMillis; + + +void elementsLoop() { + // передаем управление каждому элементу конфигурации для выполнения своих функций + for (std::list::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::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; diff --git a/src/classes/IoTItem.cpp b/src/classes/IoTItem.cpp index c3606775..26fb41d1 100644 --- a/src/classes/IoTItem.cpp +++ b/src/classes/IoTItem.cpp @@ -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--;