56 lines
1.2 KiB
C++
56 lines
1.2 KiB
C++
#ifndef SensorAinDef
|
|
#define SensorAinDef 1
|
|
#include "utiles.h"
|
|
|
|
class SensorAin: public DomoEspSensorReceiver
|
|
{
|
|
float val;
|
|
bool negado;
|
|
uint8_t pin;
|
|
float dif;
|
|
Ctimer timer;
|
|
public:
|
|
virtual float getVal()
|
|
{
|
|
return val;
|
|
}
|
|
SensorAin(){}
|
|
void set(uint8_t _pin, char* topic_id, bool _negado, float _dif)
|
|
{
|
|
timer.inicia();
|
|
timer.set(1);
|
|
dif=_dif;
|
|
negado=_negado;
|
|
pin=_pin;
|
|
val=0;
|
|
strcpy(topic, topic_id);
|
|
}
|
|
virtual void procesa(IMqttManager * man, int tiempo)
|
|
{
|
|
//mirar para configurar por interrupcion
|
|
if((dif!=0 && timer.onTimerReset()) || tiempo==2)
|
|
{
|
|
float val_act;
|
|
if(negado)
|
|
val_act =100.*((float)(1024- analogRead(pin)))/1024;
|
|
else
|
|
val_act =100.*((float)(analogRead(pin)))/1024;
|
|
if(dif<=abs(val_act-val) || tiempo==2)
|
|
{
|
|
val=val_act;
|
|
#ifdef DEBUG_PS
|
|
Serial.print("Sensor Analog log ");
|
|
Serial.println(val);
|
|
#endif
|
|
//loguea------------
|
|
|
|
dtostrf(val,3, 2, buffer_p);
|
|
sprintf(buffer_t, "%s/get",topic);
|
|
man->MqttSend(buffer_t, buffer_p);
|
|
}
|
|
}
|
|
|
|
}
|
|
};
|
|
|
|
#endif |