añadida clase timer

main
Gerardo 2024-10-01 09:41:27 +02:00
parent 6dfafd1390
commit 07a0f53eb8
3 changed files with 57 additions and 8 deletions

View File

@ -6,8 +6,7 @@ class SensorTimer: public DomoEspSensorReceiver
{ {
bool val; bool val;
bool valDef; bool valDef;
unsigned long tiempo_sens; Ctimer t;
unsigned long incre_tsens;
public: public:
SensorTimer() SensorTimer()
@ -17,8 +16,7 @@ class SensorTimer: public DomoEspSensorReceiver
} }
void set(char* topic_id, bool _valdef, int segTime) void set(char* topic_id, bool _valdef, int segTime)
{ {
incre_tsens=1000*segTime; t.set(segTime);
valDef=_valdef; valDef=_valdef;
val=valDef; val=valDef;
strcpy(topic, topic_id); strcpy(topic, topic_id);
@ -31,7 +29,7 @@ class SensorTimer: public DomoEspSensorReceiver
{ {
if(val!=valDef) if(val!=valDef)
{ {
if(MqttUtiles::pasa_incre(&tiempo_sens, incre_tsens)) if(t.onTimer())
{ {
val=valDef; val=valDef;
tiempo=2; tiempo=2;
@ -70,8 +68,8 @@ class SensorTimer: public DomoEspSensorReceiver
val=1; val=1;
else else
val=0; val=0;
t.inicia();
MqttUtiles::reinicia_incre(&tiempo_sens, incre_tsens); //MqttUtiles::reinicia_incre(&tiempo_sens, incre_tsens);
} }
else if(tipo==Topic::SET) else if(tipo==Topic::SET)
{ {
@ -80,7 +78,8 @@ class SensorTimer: public DomoEspSensorReceiver
else else
val=atof(payload); val=atof(payload);
if(val!=valDef) if(val!=valDef)
MqttUtiles::reinicia_incre(&tiempo_sens, incre_tsens); t.inicia();
//MqttUtiles::reinicia_incre(&tiempo_sens, incre_tsens);
} }
if(valOld!=val) if(valOld!=val)

View File

@ -47,7 +47,43 @@ void MqttUtiles::resetFunc()
ESP.wdtEnable(1); ESP.wdtEnable(1);
while(1){}; while(1){};
} }
//**************************************************************************************************************************************************
Ctimer::Ctimer()
{
t=0;
}
void Ctimer::set(int incremento_seg)
{
incre=1000*incremento_seg;
}
void Ctimer::inicia()
{
t=millis();
}
bool Ctimer::onTimer()
{
unsigned long ta=millis();
if(ta<t)
return true;
if((t+incre)>=ta)
return false;
return true;
}
bool Ctimer::onTimerReset()
{
unsigned long ta=millis();
if(ta<t)
{
t=ta;
return true;
}
if((t+incre)>=ta)
return false;
t=ta;
return true;
}
//************************************************************************************************************************************************** //**************************************************************************************************************************************************
WifiManager::WifiManager() WifiManager::WifiManager()
{ {

View File

@ -13,6 +13,20 @@ class MqttUtiles
static void resetFunc(); static void resetFunc();
}; };
class Ctimer
{
unsigned long t;
unsigned long incre;
public:
Ctimer();
void set(int incremento_seg);
void inicia();//inicia contador de incremento
bool onTimer();//devuelve true si ha pasado el tiempo
bool onTimerReset();//pasa incremento y si ha pasado se reinicia
};
class MqttOnVarChangeListenner class MqttOnVarChangeListenner
{ {
public: public: