2022-03-26 20:58:15 +03:00
|
|
|
#include "Global.h"
|
|
|
|
|
#include "classes/IoTItem.h"
|
|
|
|
|
|
|
|
|
|
extern IoTGpio IoTgpio;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class Timer : public IoTItem {
|
|
|
|
|
private:
|
|
|
|
|
bool _unfin = false;
|
|
|
|
|
bool _ticker = false;
|
2022-03-26 21:35:51 +03:00
|
|
|
bool _repeat = false;
|
2022-03-26 20:58:15 +03:00
|
|
|
|
|
|
|
|
public:
|
|
|
|
|
Timer(String parameters): IoTItem(parameters) {
|
2022-03-27 09:11:24 +03:00
|
|
|
float valDtmp;
|
|
|
|
|
jsonRead(parameters, "countDown", valDtmp);
|
|
|
|
|
if (value.valD == 0) value.valD = valDtmp;
|
2022-03-26 20:58:15 +03:00
|
|
|
jsonRead(parameters, "ticker", _ticker);
|
2022-03-26 21:35:51 +03:00
|
|
|
jsonRead(parameters, "repeat", _repeat);
|
2022-03-27 09:11:24 +03:00
|
|
|
if (_repeat) _repeat = valDtmp; // если в параметрах просят повторить, то запоминаем настроечное значение отчета
|
2022-03-26 20:58:15 +03:00
|
|
|
_unfin = !value.valD;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void doByInterval() {
|
|
|
|
|
if (!_unfin && value.valD) {
|
|
|
|
|
value.valD--;
|
2022-03-27 09:11:24 +03:00
|
|
|
needSave = true;
|
2022-03-26 21:35:51 +03:00
|
|
|
if (value.valD == 0) {
|
|
|
|
|
regEvent(value.valD, "Time's up");
|
|
|
|
|
if (_repeat) value.valD = _repeat;
|
|
|
|
|
}
|
2022-03-26 20:58:15 +03:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (_ticker) regEvent(value.valD, "Timer tick");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
~Timer() {};
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
void* getAPI_Timer(String subtype, String param) {
|
|
|
|
|
if (subtype == F("Timer")) {
|
|
|
|
|
return new Timer(param);
|
|
|
|
|
} else {
|
|
|
|
|
return nullptr;
|
|
|
|
|
}
|
|
|
|
|
}
|