From 6bc3355cbe200972ff2821e183cff7298b419c06 Mon Sep 17 00:00:00 2001 From: biver Date: Wed, 8 Feb 2023 11:20:58 +0300 Subject: [PATCH] =?UTF-8?q?=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D1=8F=D0=B5=D0=BC=20=D0=BE=D1=88=D0=B8=D0=B1=D0=BA=D1=83=20?= =?UTF-8?q?=D1=83=D0=B4=D0=B0=D0=BB=D0=B5=D0=BD=D0=B8=D1=8F=20=D1=81=D0=B5?= =?UTF-8?q?=D1=82=D0=B5=D0=B2=D1=8B=D1=85=20=D1=8D=D0=BB=D0=B5=D0=BC=D0=B5?= =?UTF-8?q?=D0=BD=D1=82=D0=BE=D0=B2=20=D1=81=20=D0=B8=D1=81=D1=82=D0=B5?= =?UTF-8?q?=D0=BA=D1=88=D0=B8=D0=BC=20=D1=81=D1=80=D0=BE=D0=BA=D0=BE=D0=BC?= =?UTF-8?q?=20=D0=B6=D0=B8=D0=B7=D0=BD=D0=B8=20=D0=B2=D0=BA=D0=BB=D1=8E?= =?UTF-8?q?=D1=87=D0=B0=D1=8F=20=D1=81=D0=BE=D0=BE=D0=B1=D1=89=D0=B5=D0=BD?= =?UTF-8?q?=D0=B8=D1=8F=20=D0=BE=D0=B1=20=D0=BE=D1=88=D0=B8=D0=B1=D0=BA?= =?UTF-8?q?=D0=B0=D1=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- include/classes/IoTItem.h | 4 ++-- src/Main.cpp | 2 +- src/WsServer.cpp | 2 +- src/classes/IoTItem.cpp | 7 +++++-- src/utils/SerialPrint.cpp | 2 +- 5 files changed, 10 insertions(+), 7 deletions(-) diff --git a/include/classes/IoTItem.h b/include/classes/IoTItem.h index 81405849..41cd0794 100644 --- a/include/classes/IoTItem.h +++ b/include/classes/IoTItem.h @@ -73,8 +73,8 @@ class IoTItem { String _id = "errorId"; // если будет попытка создания Item без указания id, то элемент оставит это значение long _interval = 0; int _intFromNet = -2; // количество секунд доверия, пришедших из сети вместе с данными для текущего ИД - // -2 - данные не приходили, скорее всего, элемент локальный, доверие есть - // -1 - данные приходили и обратный отсчет дошел до нуля, значит доверия нет + // -2 - данные не приходили, скорее всего, элемент локальный, доверие есть, в случае прихода сетевого значения с int=0, будет выключен механизм проверки доверия + // -1 - данные приходили и обратный отсчет дошел до нуля, значит доверия нет и элемент будет удален при следующем такте loop float _multiply; // умножаем на значение float _plus; // увеличиваем на значение diff --git a/src/Main.cpp b/src/Main.cpp index ea73e295..815c56dd 100644 --- a/src/Main.cpp +++ b/src/Main.cpp @@ -91,7 +91,7 @@ void setup() { iotScen.loadScenario("/scenario.txt"); // создаем событие завершения конфигурирования для возможности выполнения блока кода при загрузке - createItemFromNet("onStart", "1", -4); + createItemFromNet("onStart", "1", 1); stInit(); diff --git a/src/WsServer.cpp b/src/WsServer.cpp index bee9cea3..6eec69aa 100644 --- a/src/WsServer.cpp +++ b/src/WsServer.cpp @@ -119,7 +119,7 @@ void webSocketEvent(uint8_t num, WStype_t type, uint8_t* payload, size_t length) configure("/config.json"); iotScen.loadScenario("/scenario.txt"); // создаем событие завершения конфигурирования для возможности выполнения блока кода при загрузке - createItemFromNet("onStart", "1", -4); + createItemFromNet("onStart", "1", 1); } //----------------------------------------------------------------------// diff --git a/src/classes/IoTItem.cpp b/src/classes/IoTItem.cpp index 545ca059..f807675c 100644 --- a/src/classes/IoTItem.cpp +++ b/src/classes/IoTItem.cpp @@ -7,7 +7,7 @@ IoTItem::IoTItem(const String& parameters) { jsonRead(parameters, F("int"), _interval, false); - if (_interval = 0) enableDoByInt = false; // выключаем использование периодического выполнения в модуле + if (_interval == 0) enableDoByInt = false; // выключаем использование периодического выполнения в модуле if (_interval > 0) _interval = _interval * 1000; // если int положителен, то считаем, что получены секунды if (_interval < 0) _interval = _interval * -1; // если int отрицательный, то миллисекунды jsonRead(parameters, F("subtype"), _subtype, false); @@ -171,7 +171,7 @@ void IoTItem::setIntFromNet(int interval) { void IoTItem::checkIntFromNet() { // проверяем элемент на доверие данным. if (_intFromNet >= 0) { - // если время жизни истекло, то удаляем элемент + // если время жизни истекло, то удаляем элемент чуть позже на следующем такте loop // если это было уведомление не об ошибке или начале работы, то сообщаем, что сетевое событие давно не приходило if (_intFromNet == 0 && _id.indexOf("onError") == -1 && _id.indexOf("onStart") == -1) { SerialPrint("E", _id, "The new data did not come from the network. The level of trust is low.", _id); @@ -271,6 +271,9 @@ IoTItem* createItemFromNet(const String& itemId, const String& value, int interv // создаем временную копию элемента из сети на основе события IoTItem* createItemFromNet(const String& msgFromNet) { IoTItem* tmpp = new IoTItem(msgFromNet); + + Serial.println("vvvvvvvvvvv " + msgFromNet + " " + (String)tmpp->getInterval()); + if (tmpp->getInterval()) tmpp->setIntFromNet(tmpp->getInterval() / 1000 + 5); tmpp->iAmLocal = false; IoTItems.push_back(tmpp); diff --git a/src/utils/SerialPrint.cpp b/src/utils/SerialPrint.cpp index 8ed907e2..4b3d1434 100644 --- a/src/utils/SerialPrint.cpp +++ b/src/utils/SerialPrint.cpp @@ -21,7 +21,7 @@ void SerialPrint(const String& errorLevel, const String& module, const String& m cleanString(tosend); // создаем событие об ошибке для возможной реакции в сценарии if (itemId != "") { - createItemFromNet(itemId + F("_onError"), tosend, -4); + createItemFromNet(itemId + F("_onError"), tosend, 1); } else { // createItemFromNet("onError", tosend, -4); }