diff --git a/include/classes/IoTItem.h b/include/classes/IoTItem.h index f80d3098..c0b1e26e 100644 --- a/include/classes/IoTItem.h +++ b/include/classes/IoTItem.h @@ -31,6 +31,8 @@ class IoTItem { bool iAmDead = false; // признак необходимости удалить объект из базы bool iAmLocal = true; // признак локальной переменной + bool needSave = false; + virtual IoTGpio* getGpioDriver(); virtual void setValue(IoTValue Value); diff --git a/src/modules/exec/Timer/Timer.cpp b/src/modules/exec/Timer/Timer.cpp index 2e1251db..63fa66fd 100644 --- a/src/modules/exec/Timer/Timer.cpp +++ b/src/modules/exec/Timer/Timer.cpp @@ -12,18 +12,19 @@ class Timer : public IoTItem { public: Timer(String parameters): IoTItem(parameters) { - jsonRead(parameters, "countDown", value.valD); + float valDtmp; + jsonRead(parameters, "countDown", valDtmp); + if (value.valD == 0) value.valD = valDtmp; jsonRead(parameters, "ticker", _ticker); jsonRead(parameters, "repeat", _repeat); - if (_repeat) _repeat = value.valD; // если в параметрах просят повторить, то запоминаем настроечное значение отчета + if (_repeat) _repeat = valDtmp; // если в параметрах просят повторить, то запоминаем настроечное значение отчета _unfin = !value.valD; - - } void doByInterval() { if (!_unfin && value.valD) { value.valD--; + needSave = true; if (value.valD == 0) { regEvent(value.valD, "Time's up"); if (_repeat) value.valD = _repeat;