#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