From 72c36a25a7f70723e3a56e64589239812ae92980 Mon Sep 17 00:00:00 2001 From: biver Date: Thu, 2 Jun 2022 23:17:52 +0300 Subject: [PATCH] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D1=8F?= =?UTF-8?q?=D0=B5=D0=BC=20=D1=80=D0=B0=D1=81=D1=88=D0=B8=D1=80=D0=B5=D0=BD?= =?UTF-8?q?=D0=BD=D1=8B=D0=B5=20=D0=B4=D0=B0=D0=BD=D0=BD=D1=8B=D0=B5=20?= =?UTF-8?q?=D0=BA=20IoTValue=20=D0=B8=20=D0=BE=D1=82=D0=BA=D0=BB=D1=8E?= =?UTF-8?q?=D1=87=D0=B5=D0=BD=D0=B8=D0=B5=20doByInterval=20=D0=BF=D1=80?= =?UTF-8?q?=D0=B8=20Int=20=3D=200=20=D1=87=D1=82=D0=BE=D0=B1=20=D0=BF?= =?UTF-8?q?=D0=BE=D0=BB=D1=8C=D0=B7=D0=BE=D0=B2=D0=B0=D1=82=D0=B5=D0=BB?= =?UTF-8?q?=D1=8C=20=D0=BD=D0=B5=20=D1=81=D0=BE=D0=B7=D0=B4=D0=B0=D0=B2?= =?UTF-8?q?=D0=B0=D0=BB=20=D1=87=D0=B0=D1=81=D1=82=D1=8B=D0=B5=20=D0=B3?= =?UTF-8?q?=D0=B5=D0=BD=D0=B5=D1=80=D0=B0=D1=86=D0=B8=D0=B8=20=D1=81=D0=BE?= =?UTF-8?q?=D0=B1=D1=8B=D1=82=D0=B8=D0=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- include/classes/IoTItem.h | 6 +++++- src/classes/IoTItem.cpp | 13 ++++++++----- 2 files changed, 13 insertions(+), 6 deletions(-) diff --git a/include/classes/IoTItem.h b/include/classes/IoTItem.h index cadcd1fc..bda22c1f 100644 --- a/include/classes/IoTItem.h +++ b/include/classes/IoTItem.h @@ -6,6 +6,9 @@ struct IoTValue { float valD = 0; String valS = ""; bool isDecimal = true; + + uint8_t *extBinInfo = NULL; // дополнительные бинарные данные из модуля + size_t extBinInfoSize = 0; // размер дополнительных данных в байтах }; class IoTItem { @@ -29,12 +32,13 @@ class IoTItem { unsigned long prevMillis; unsigned long difference; - IoTValue value; // хранение основного значения, котрое обновляется из сценария, execute(), loop() или doByInterval() + IoTValue value; // хранение основного значения, которое обновляется из сценария, execute(), loop() или doByInterval() bool iAmDead = false; // признак необходимости удалить объект из базы bool iAmLocal = true; // признак локальной переменной bool needSave = false; + bool enableDoByInt = true; virtual IoTGpio* getGpioDriver(); virtual iarduino_RTC_BASE* getRtcDriver(); diff --git a/src/classes/IoTItem.cpp b/src/classes/IoTItem.cpp index e95097d6..aa937cd0 100644 --- a/src/classes/IoTItem.cpp +++ b/src/classes/IoTItem.cpp @@ -7,6 +7,7 @@ IoTItem::IoTItem(String parameters) { jsonRead(parameters, F("int"), _interval); + if (_interval == 0) enableDoByInt = false; _interval = _interval * 1000; jsonRead(parameters, F("subtype"), _subtype); jsonRead(parameters, F("id"), _id); @@ -57,11 +58,13 @@ String IoTItem::getValue() { } void IoTItem::loop() { - currentMillis = millis(); - difference = currentMillis - prevMillis; - if (difference >= _interval) { - prevMillis = millis(); - this->doByInterval(); + if (enableDoByInt) { + currentMillis = millis(); + difference = currentMillis - prevMillis; + if (difference >= _interval) { + prevMillis = millis(); + this->doByInterval(); + } } }