diff --git a/DomoEsp_v01/DomoEspManager.h b/DomoEsp_v01/DomoEspManager.h index 6e78b4e..f0d8bdc 100644 --- a/DomoEsp_v01/DomoEspManager.h +++ b/DomoEsp_v01/DomoEspManager.h @@ -13,6 +13,7 @@ #include "MqttVarManager.h" #include "MqttUtiles.h" #include "MqttSensManager.h" +#include "MqttDesencadenadorManager.h" class PubSubClient; class WiFiClient; class MqttSensManager; @@ -54,6 +55,7 @@ class DomoEspManager: public MqttReceiver WifiManager wifi; MqttManager mqtt; + MqttDesencadenadorManager des; bool suscrito; //PubSubClient client_qqtt(WifiManager::espClient); diff --git a/DomoEsp_v01/MqttDesencadenadorManager.cpp b/DomoEsp_v01/MqttDesencadenadorManager.cpp index 239f7c3..2774e6f 100644 --- a/DomoEsp_v01/MqttDesencadenadorManager.cpp +++ b/DomoEsp_v01/MqttDesencadenadorManager.cpp @@ -9,7 +9,40 @@ MqttOper::MqttOper() } bool MqttOper::Test(MqttVarManager* vars) { - return false; + bool res=false; + switch(oper) + { + case(Igual_val_oper): + { + MqttVar* v=vars->Get(x); + if(v->flags & MqttVar::FLOAT_VAR ) + res=val.f==v->val.f; + else + res=val.i==v->val.i; + break; + } + case(Menor_val_oper): + { + MqttVar* v=vars->Get(x); + if(v->flags & MqttVar::FLOAT_VAR ) + res=val.fval.f; + else + res=val.ival.i; + break; + } + case(Mayor_val_oper): + { + MqttVar* v=vars->Get(x); + if(v->flags & MqttVar::FLOAT_VAR ) + res=val.f>v->val.f; + else + res=val.i>v->val.i; + break; + } + default: + break; + } + return res; } //******************************************************************* MqttOperArray::MqttOperArray() @@ -89,6 +122,23 @@ void MqttEfecto::Exe(MqttVarManager *vars) } } //******************************************************************* +MqttEfectoArray::MqttEfectoArray() +{ + n=0; +} + +MqttEfecto* MqttEfectoArray:: Get(int i) +{ + return &(data[i]); +} + +int MqttEfectoArray::Add(MqttEfecto* var) +{ + data[n]=*var; + n++; + return n-1; +} +//******************************************************************* MqttDesencadenador::MqttDesencadenador() { tipo=0; diff --git a/DomoEsp_v01/MqttDesencadenadorManager.h b/DomoEsp_v01/MqttDesencadenadorManager.h index 212b703..77066cd 100644 --- a/DomoEsp_v01/MqttDesencadenadorManager.h +++ b/DomoEsp_v01/MqttDesencadenadorManager.h @@ -6,10 +6,18 @@ //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 - byte oper; + MQTTvalor val; + byte oper;//tipo de operacion MqttOper(); diff --git a/DomoEsp_v01/MqttSensManager.cpp b/DomoEsp_v01/MqttSensManager.cpp index 154627d..c75d26c 100644 --- a/DomoEsp_v01/MqttSensManager.cpp +++ b/DomoEsp_v01/MqttSensManager.cpp @@ -59,7 +59,6 @@ MqttSensManager::MqttSensManager() SetTimeRefres(15);//por defecto 15 segundos n_inter=0; pMqttSensManager=this; - cambioInterrup=0; } void MqttSensManager::SetTimeRefres(int seg) { @@ -362,18 +361,8 @@ void MqttSensManager::procesaInterrupciones() void MqttSensManager::OnInterrupcion(int i) { - MqttSensor* s=sens.Get(ind_interrup[i]); - - - #ifdef DEBUG_PS - - Serial.print("OnInterrupcion: "); - Serial.print(i); - Serial.print(" Sensor en cambio:"); - Serial.println(chg_interrup[i]); - #endif - chg_interrup[i]=true; - MqttChangeInterrup=true; + //MqttSensor* s=sens.Get(ind_interrup[i]); + MqttChangeInterrup=true; } void MqttSensManager::ConfiguraInterrupcion(int isen) { diff --git a/DomoEsp_v01/MqttVarManager.h b/DomoEsp_v01/MqttVarManager.h index 8a2b7bb..f8d9255 100644 --- a/DomoEsp_v01/MqttVarManager.h +++ b/DomoEsp_v01/MqttVarManager.h @@ -41,7 +41,7 @@ class MqttVar OUT_VAR=0x01,//variable de salida (acepta set) IN_VAR=0x02,//variable de entrada (publica get) PRIV_VAR=0x04,//variable privada de entrada (acepta get como si fueran set) - FLOAT_VAR=0x08, + FLOAT_VAR=0x08,//variable en coma flotante ACCION_VAR=0x10,//variable de accion (publica en cada cambio) VOLATILE_VAR=0X20 //marca variable que una vez revisada se cambia internamente su valor (usado en desencadenadores para variables de accion) diff --git a/DomoEsp_v01/config_rf.h b/DomoEsp_v01/config_rf.h index 6f32305..c2ac2c9 100644 --- a/DomoEsp_v01/config_rf.h +++ b/DomoEsp_v01/config_rf.h @@ -9,7 +9,7 @@ class ActualDomoConfig: public DomoConfig strcpy(ssidWifi,"Idhun");//nombre wifi strcpy(keyWifi,"Ardileorca1234.");//key wifi - strcpy(ideEsp,"Esp8266_010");//idenitificador del esp (sera único) + strcpy(ideEsp,"Esp8266_011");//idenitificador del esp (sera único) strcpy(hostMQTT,"192.168.2.50");//servidor mqttBroker portMQTT=1883;//puerto del servidor mqtt Broker @@ -41,6 +41,29 @@ class ActualDomoConfig: public DomoConfig } }; +class CocinaDomoConfig: public DomoConfig +{ + public: + CocinaDomoConfig() + { + velocidadPortSerie=115200; + strcpy(ssidWifi,"Idhun");//nombre wifi + strcpy(keyWifi,"Ardileorca1234.");//key wifi + strcpy(ideEsp,"Esp8266_010");//idenitificador del esp (sera único) + strcpy(hostMQTT,"192.168.2.50");//servidor mqttBroker + portMQTT=1883;//puerto del servidor mqtt Broker + refresTimeVars=30;//tiempo de refresco en segundos de las variables + refresTimeSens=15;//tiempo de refresco en segundos de los sensores + } + //configuracion de sensores--------------------------------- + virtual void ConfigSens(MqttSensManager* sens) + { + sens->AddHDT22(D4, "casa/cocina"); + sens->AddDinAccion(D5, "casa/cocina/mov"); + sens->AddAnalogIn(0, "casa/cocina/luz",true); + } +}; + //configuracion que se usara-------------------------- ActualDomoConfig ConfiguracionActual;