69 lines
1.3 KiB
C++
69 lines
1.3 KiB
C++
#ifndef SensorPulsanteDef
|
|
#define SensorPulsanteDef 1
|
|
#include "defines.h"
|
|
//sensor que avisa del cambio cuando deja de ser el valor por defecto
|
|
class SensorPulsante: public DomoEspSensorReceiver
|
|
{
|
|
bool val;
|
|
bool valDef;
|
|
uint8_t pin;
|
|
Ctimer timer;
|
|
bool espera;
|
|
public:
|
|
virtual float getVal()
|
|
{
|
|
return (float)val;
|
|
}
|
|
SensorPulsante()
|
|
{
|
|
espera=false;
|
|
timer.setmilis(500);
|
|
}
|
|
void set(uint8_t _pin, char* topic_id, bool _valDef)
|
|
{
|
|
pin=_pin;
|
|
valDef=_valDef;
|
|
val=valDef;
|
|
strcpy(topic, topic_id);
|
|
}
|
|
void setIncremento(int milis)
|
|
{
|
|
timer.setmilis(milis);
|
|
}
|
|
|
|
virtual void procesa(IMqttManager * man, int tiempo)
|
|
{
|
|
//mirar para configurar por interrupcion
|
|
int val_ac=val;
|
|
if(!espera || timer.onTimer())
|
|
{
|
|
val_ac=digitalRead(pin);
|
|
espera=false;
|
|
}
|
|
|
|
|
|
if(val_ac!=val && val_ac!=valDef)
|
|
{
|
|
#ifdef DEBUG_PS
|
|
Serial.println("SensorPulsante log ");
|
|
#endif
|
|
//loguea------------
|
|
sprintf(buffer_p, "%d", (int)val_ac);
|
|
sprintf(buffer_t, "%s/pul",topic);
|
|
man->MqttSend(buffer_t, buffer_p);
|
|
//delay(100);
|
|
timer.inicia();
|
|
espera=true;
|
|
|
|
}
|
|
val=val_ac;
|
|
}
|
|
|
|
virtual void inicia()
|
|
{
|
|
pinMode(pin, INPUT);
|
|
val=digitalRead(pin);
|
|
}
|
|
};
|
|
|
|
#endif |