#ifndef MqttDesencadenadorManagerDef #define MqttDesencadenadorManagerDef 1 #include #include "MqttVarManager.h" //clase de relacciones/operaciones************************************************ class MqttOper { // public: enum TipoOperacion { Igual_val_oper, Menor_val_oper, Mayor_val_oper, }; byte x;//indice a variable 1 byte y;//indice a variable 2 MQTTvalor val; byte oper;//tipo de operacion MqttOper(); bool Test(MqttVarManager* vars); }; //array de operaciones-------------------------------------------------------------- class MqttOperArray { public: MqttOper data[32]; int n; MqttOperArray(); MqttOper* Get(int i); int Add(MqttOper* var); }; class MqttCausa { public: enum TipoCausa { AND_CAUSA=1, OR_CAUSA, }; byte ini;//indice a primer oper byte n;//numero de operadores totales byte tipo;//tipo de causa (and or ...) MqttCausa(); bool Test(MqttVarManager *i); }; class MqttCausaArray { public: MqttCausa data[16]; int n; MqttCausaArray(); MqttCausa* Get(int i); int Add(MqttCausa* var);; }; class MqttCausaManager { public: MqttCausaArray caus; MqttOperArray oper; MqttCausaManager(); bool IsTrue(int icau, MqttVarManager *vars); }; class MqttEfecto { public: enum TipoEfecto { InvierteValVar=1,//invierte valor a variable SetValVar//setea el valor asignado en el efecto a la variable }; MQTTvalor val; byte ia;//indice externo (dependiendo del tipo puede ser a una variable o topic o sensor ...) byte tipo;//tipo de accion (and or ...) MqttEfecto(); void Exe(MqttVarManager *i); }; class MqttEfectoArray { public: MqttEfecto data[16]; int n; MqttEfectoArray(); MqttEfecto* Get(int i); int Add(MqttEfecto* var); }; class MqttDesencadenador { public: MQTTvalor val; byte ie;//indice a efecto byte ic;//indice a causa byte tipo;//tipo de accion (and or ...) MqttDesencadenador(); void Exe(MqttVarManager *i, MqttEfectoArray *act, MqttCausaManager* caus); }; class MqttDesencadenadorArray { public: MqttDesencadenador data[16]; int n; MqttDesencadenadorArray(); MqttDesencadenador* Get(int i); int Add(MqttDesencadenador* var); }; //falta acciones y efectos //acciones tienen valor, tipo y ivar(indice a variable) class MqttDesencadenadorManager: public MqttOnVarChangeListenner { public: MqttVarManager *vars; MqttEfectoArray act; MqttCausaManager caus; MqttDesencadenadorArray des; bool revisa; MqttDesencadenadorManager(); void inicia( MqttVarManager *vars);//inicia variables si hace falta void Suscribe();//subscribe variables a mqtt int OnMqtt(char* topic, char* payload);//entra trama mqtt devuelve indice a sensor cambiado void loop();//publica datos variables virtual void OnVarChange(int ivar); void RevisaDesencadenadores(); }; /* * */ #endif