mirror of
https://github.com/IoTManagerProject/IoTManager.git
synced 2026-03-27 06:32:19 +03:00
Исправляем ошибку удаления сетевых элементов с истекшим сроком жизни
включая сообщения об ошибках
This commit is contained in:
@@ -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; // увеличиваем на значение
|
||||
|
||||
@@ -91,7 +91,7 @@ void setup() {
|
||||
iotScen.loadScenario("/scenario.txt");
|
||||
|
||||
// создаем событие завершения конфигурирования для возможности выполнения блока кода при загрузке
|
||||
createItemFromNet("onStart", "1", -4);
|
||||
createItemFromNet("onStart", "1", 1);
|
||||
|
||||
stInit();
|
||||
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------//
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user