95 lines
2.0 KiB
C++
95 lines
2.0 KiB
C++
#ifndef SensorPotenI2cDef
|
|
#define SensorPotenI2cDef 1
|
|
#include "defines.h"
|
|
#include "PotenciometroI2C.h"
|
|
|
|
class SensorPotenI2c: public DomoEspSensorReceiver
|
|
{
|
|
float val;
|
|
|
|
|
|
PotenciometroI2C poten;
|
|
|
|
bool negado;
|
|
public:
|
|
virtual float getVal()
|
|
{
|
|
return (float)val;
|
|
}
|
|
SensorPotenI2c()
|
|
{
|
|
val=0;
|
|
topic[0]=0;
|
|
negado=false;
|
|
}
|
|
void IniciaWire(uint8_t _pin_SDA, uint8_t _pin_SCL)
|
|
{
|
|
Wire.begin(_pin_SDA, _pin_SCL);
|
|
initDS1803();
|
|
}
|
|
|
|
void set( const char* topic_id, int valdef,bool _negado=false)
|
|
{
|
|
val=valdef;
|
|
negado=_negado;
|
|
strcpy(topic, topic_id);
|
|
}
|
|
virtual void procesa(IMqttManager * man, int tiempo)
|
|
{
|
|
if(tiempo==2)
|
|
{
|
|
#ifdef DEBUG_PS
|
|
Serial.print("SensorPotenI2c ");
|
|
Serial.println(val);
|
|
#endif
|
|
//loguea------------
|
|
//char buffer_t[MAXTOPICVAR];
|
|
//char buffer_p[MAXTOPICVAR];
|
|
sprintf(buffer_p, "%d", (int)val);
|
|
sprintf(buffer_t, "%s/get",topic);
|
|
man->MqttSend(buffer_t, buffer_p);
|
|
}
|
|
}
|
|
|
|
|
|
virtual void SubscribeMqtt(IMqttManager* man){
|
|
//char buffer_t[MAXTOPICVAR];
|
|
sprintf(buffer_t, "%s/set",topic);
|
|
man->MqttSubs(buffer_t);
|
|
}
|
|
virtual void OnMqtt(IMqttManager * man, char* _topic, char* payload, int tipo)
|
|
{
|
|
if(tipo!=Topic::SET)
|
|
return;
|
|
if(!strcmp(_topic, topic))
|
|
{
|
|
if(payload[0]=='X')
|
|
val=100-val;
|
|
else
|
|
val=atoi(payload);
|
|
if(val<0)
|
|
val=0;
|
|
else if(val>100)
|
|
val=100;
|
|
//cambia estado relleH
|
|
setPotenciometro();
|
|
//loguea------------
|
|
//char buffer_t[MAXTOPICVAR];
|
|
//char buffer_p[MAXTOPICVAR];
|
|
sprintf(buffer_p, "%d", (int)val);
|
|
sprintf(buffer_t, "%s/get",topic);
|
|
man->MqttSend(buffer_t, buffer_p);
|
|
}
|
|
|
|
}
|
|
|
|
void setPotenciometro()
|
|
{
|
|
if(negado)
|
|
poten.setv(100-val);
|
|
else
|
|
poten.setv(val);
|
|
};
|
|
};
|
|
|
|
#endif |