#ifndef MecanismoPulsoDef #define MecanismoPulsoDef 1 #include "defines.h" //sensor activador envia a topicOut el valor val_send si los activadores cumplen umbral class Cactivador { public: Cactivador(){} DomoEspSensorReceiver *sen; float umbral; char operacion;//< > = val oper umbral }; #define MAX_ACTIVADORES 5 class MecanismoPulso: public DomoEspSensorReceiver { float val; char topicOut[MAXTOPICVAR]; char valSend[3]; Cactivador activador[MAX_ACTIVADORES]; public: char id[10]; MecanismoPulso() { strcpy(id, "Meca"); topic[0]=0; for(int i=0; iMqttSubs(buffer_t); sprintf(buffer_t, "%s/pul",topic); man->MqttSubs(buffer_t); } virtual void OnMqtt(IMqttManager * man, char* _topic, char* payload, int tipo) { if(strcmp(_topic, topic)) return; if(tipo==Topic::GET) { float val_act=atof(payload); if (val_act!=val) { val=val_act; ejecuta(man); } } else if(tipo==Topic::PUL) { ejecuta(man); } } private: void ejecuta(IMqttManager * man) { if(valida()) { #ifdef DEBUG_PS Serial.print("Ejecuta id: "); Serial.println(id); #endif strcpy(buffer_p, valSend); sprintf(buffer_t, "%s/set",topicOut); man->MqttSend(buffer_t, buffer_p); } } bool valida() { for(int i=0; i') return activador[i].sen->getVal()>activador[i].umbral; if(activador[i].operacion=='<') return activador[i].sen->getVal()getVal()==activador[i].umbral; return false; } }; #endif