Solucion errores en desencadenadores y configuraciones varias
parent
9dbe05dbad
commit
8fe41ffcac
|
|
@ -25,8 +25,10 @@ void DomoEspManager::inicia( LiquidCrystal *lcd, PubSubClient *mqttClient, WiFiC
|
|||
#endif
|
||||
//pasar funcion de configuracion de añadir sensores
|
||||
|
||||
des.inicia(&vars);
|
||||
|
||||
conf->ConfigGen(&sens, &vars, &lcdm, &des);
|
||||
|
||||
|
||||
#ifdef DEBUG_PS
|
||||
Serial.println("Inicia variables");
|
||||
#endif
|
||||
|
|
@ -36,9 +38,10 @@ void DomoEspManager::inicia( LiquidCrystal *lcd, PubSubClient *mqttClient, WiFiC
|
|||
Serial.println("Inicia Sensores");
|
||||
#endif
|
||||
sens.inicia();
|
||||
#ifdef DEBUG_PS
|
||||
Serial.println("Iniciado esp");
|
||||
#ifdef DEBUG_PS
|
||||
Serial.println("Iniciado Desencadenadores");
|
||||
#endif
|
||||
des.inicia(&vars);
|
||||
#if CON_LCD
|
||||
|
||||
lcdm.inicia(&vars, lcd, conf->lcd.colum, conf->lcd.lines);
|
||||
|
|
|
|||
|
|
@ -55,7 +55,7 @@ void MqttDesencadenador::ExeEfecto(MqttVarManager *vars, char *oper, char*x, ch
|
|||
{
|
||||
MqttVar* v=GetVar(x, vars);
|
||||
MQTTvalor val=GetVarValue(x, vars);
|
||||
if(v->flags | MqttVar::FLOAT_VAR)
|
||||
if(v->flags & MqttVar::FLOAT_VAR)
|
||||
val.f=atof(y);
|
||||
else
|
||||
val.i=atoi(y);
|
||||
|
|
@ -125,10 +125,10 @@ void MqttDesencadenador::procesaOper(MqttExeParam *p)
|
|||
p->estado=0;
|
||||
p->toper=true;
|
||||
p->oper[p->noper]=0;
|
||||
#ifdef DEBUG_PS
|
||||
/* #ifdef DEBUG_PS
|
||||
Serial.print("encontrado oper: ");
|
||||
Serial.println( p->oper);
|
||||
#endif
|
||||
#endif*/
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
@ -165,19 +165,19 @@ void MqttDesencadenador::procesaVar(MqttExeParam *p)
|
|||
{
|
||||
p->var2[p->nvar2]=0;
|
||||
p->tvar2=true;
|
||||
#ifdef DEBUG_PS
|
||||
/* #ifdef DEBUG_PS
|
||||
Serial.print("encontrado var2: ");
|
||||
Serial.println( p->var2);
|
||||
#endif
|
||||
#endif*/
|
||||
}
|
||||
else
|
||||
{
|
||||
p->var1[p->nvar1]=0;
|
||||
p->tvar1=true;
|
||||
#ifdef DEBUG_PS
|
||||
/* #ifdef DEBUG_PS
|
||||
Serial.print("encontrado var1: ");
|
||||
Serial.println( p->var1);
|
||||
#endif
|
||||
#endif*/
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -220,27 +220,28 @@ void MqttDesencadenador::Exe(MqttVarManager *vars)
|
|||
if(!p.res || !activo)
|
||||
{
|
||||
activo=!p.res;
|
||||
#ifdef DEBUG_PS
|
||||
/* #ifdef DEBUG_PS
|
||||
|
||||
Serial.println("Fin causa sale ");
|
||||
#endif
|
||||
#endif*/
|
||||
p.sigue=false;
|
||||
break;
|
||||
}
|
||||
else
|
||||
{
|
||||
#ifdef DEBUG_PS
|
||||
activo=false;
|
||||
/*#ifdef DEBUG_PS
|
||||
activo=false;
|
||||
Serial.println("Fin causa sigue ");
|
||||
#endif
|
||||
#endif*/
|
||||
}
|
||||
}
|
||||
else if(p.oper[0]=='&')
|
||||
{
|
||||
#ifdef DEBUG_PS
|
||||
/* #ifdef DEBUG_PS
|
||||
|
||||
Serial.println("operador and ");
|
||||
#endif
|
||||
#endif*/
|
||||
p.tcausa=true;
|
||||
p.toper=false;
|
||||
p.noper=0;
|
||||
|
|
@ -249,10 +250,10 @@ void MqttDesencadenador::Exe(MqttVarManager *vars)
|
|||
}
|
||||
else if(p.oper[0]=='|')
|
||||
{
|
||||
#ifdef DEBUG_PS
|
||||
/*#ifdef DEBUG_PS
|
||||
|
||||
Serial.println("operador or ");
|
||||
#endif
|
||||
#endif*/
|
||||
p.tcausa=true;
|
||||
p.toper=false;
|
||||
p.noper=0;
|
||||
|
|
@ -271,12 +272,12 @@ void MqttDesencadenador::Exe(MqttVarManager *vars)
|
|||
else
|
||||
p.res=p.res || Eval(vars, p.oper, p.var1, p.var2 );
|
||||
|
||||
#ifdef DEBUG_PS
|
||||
/* #ifdef DEBUG_PS
|
||||
Serial.print("validaCausa res: ");
|
||||
Serial.print(p.res);
|
||||
Serial.print(" esAnd: ");
|
||||
Serial.println(p.esAnd);
|
||||
#endif
|
||||
#endif*/
|
||||
|
||||
}
|
||||
else
|
||||
|
|
@ -284,10 +285,10 @@ void MqttDesencadenador::Exe(MqttVarManager *vars)
|
|||
//ejecuta efecto
|
||||
ExeEfecto( vars,p.oper, p.var1, p.var2 );
|
||||
}
|
||||
#ifdef DEBUG_PS
|
||||
/*#ifdef DEBUG_PS
|
||||
|
||||
Serial.println("Fin oper ");
|
||||
#endif
|
||||
#endif*/
|
||||
p.tvar1=p.tvar2=p.toper=false;
|
||||
p.nvar1=p.nvar2=p.noper=0;
|
||||
p.var1[0]=0;
|
||||
|
|
@ -333,7 +334,11 @@ void MqttDesencadenador::Exe(MqttVarManager *vars)
|
|||
break;
|
||||
}
|
||||
}
|
||||
Serial.println("MqttDesencadenador::Exe fin");
|
||||
#ifdef DEBUG_PS
|
||||
|
||||
Serial.println("MqttDesencadenador::Exe fin");
|
||||
#endif
|
||||
|
||||
}
|
||||
//*******************************************************************
|
||||
MqttDesencadenadorArray::MqttDesencadenadorArray()
|
||||
|
|
@ -349,6 +354,7 @@ MqttDesencadenador* MqttDesencadenadorArray::Get(int i)
|
|||
int MqttDesencadenadorArray::Add(MqttDesencadenador* var)
|
||||
{
|
||||
data[n]=*var;
|
||||
strcpy( data[n].expresion,var->expresion);
|
||||
n++;
|
||||
return n-1;
|
||||
}
|
||||
|
|
@ -368,7 +374,13 @@ void MqttDesencadenadorManager::inicia( MqttVarManager *v)
|
|||
{
|
||||
vars=v;
|
||||
if(des.n>0)
|
||||
{
|
||||
#ifdef DEBUG_PS
|
||||
|
||||
Serial.println("MqttDesencadenador::inicia como listenner");
|
||||
#endif
|
||||
vars->AddListenner(this);
|
||||
}
|
||||
}
|
||||
|
||||
void MqttDesencadenadorManager::Suscribe()
|
||||
|
|
|
|||
|
|
@ -45,7 +45,7 @@ struct MqttExeParam
|
|||
class MqttDesencadenador
|
||||
{
|
||||
public:
|
||||
char expresion[24];//{1}=1->!{2}
|
||||
char expresion[64];//{1}=1->!{2}
|
||||
bool activo;//se desactivan automaticamente cuando se cumple la condicion y se vuelve activar cuando deja de cumplirse
|
||||
|
||||
MqttDesencadenador();
|
||||
|
|
@ -85,7 +85,7 @@ class MqttDesencadenadorManager: public MqttOnVarChangeListenner
|
|||
{
|
||||
public:
|
||||
MqttVarManager *vars;
|
||||
byte ivars[24];
|
||||
//byte ivars[24];
|
||||
int nv;
|
||||
MqttDesencadenadorArray des;
|
||||
bool revisa;
|
||||
|
|
|
|||
|
|
@ -243,7 +243,7 @@ void MqttSensManager::procesaSensor(int i)
|
|||
}
|
||||
case((int)MqttSensor::SENS_ANALOG_IN)://pilla temperatura y humedad
|
||||
{
|
||||
if(s->flags | MqttSensor::FLAG_NEG)
|
||||
if(s->flags & MqttSensor::FLAG_NEG)
|
||||
v->val.f=100.*((float)(1024- analogRead(s->pin)))/1024;
|
||||
else
|
||||
v->val.f=100.*((float)(analogRead(s->pin)))/1024;
|
||||
|
|
@ -260,7 +260,7 @@ void MqttSensManager::procesaSensor(int i)
|
|||
}
|
||||
case((int)MqttSensor::SENS_DIGI_IN)://pilla temperatura y humedad
|
||||
{
|
||||
if(s->flags | MqttSensor::FLAG_NEG)
|
||||
if(s->flags & MqttSensor::FLAG_NEG)
|
||||
v->val.i=(byte)(1- digitalRead(s->pin));
|
||||
else
|
||||
v->val.i=(byte)digitalRead(s->pin);
|
||||
|
|
|
|||
|
|
@ -354,7 +354,21 @@ void MqttVarManager::InvierteVar(int ivar)
|
|||
}
|
||||
void MqttVarManager::SetVal(int ivar,MQTTvalor val)
|
||||
{
|
||||
#ifdef DEBUG_PS
|
||||
|
||||
Serial.print("MqttVarManager::SetVal int i: ");
|
||||
Serial.print( val.i);
|
||||
Serial.print(" f: ");
|
||||
Serial.println( val.f);
|
||||
#endif
|
||||
MqttVar* v=vars->Get(ivar);
|
||||
v->val=val;
|
||||
#ifdef DEBUG_PS
|
||||
|
||||
Serial.print("MqttVarManager::SetVal out i: ");
|
||||
Serial.print( v->val.i);
|
||||
Serial.print(" f: ");
|
||||
Serial.println( v->val.f);
|
||||
#endif
|
||||
OnChange(ivar);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -56,7 +56,11 @@ class ActualDomoConfig: public DomoConfig
|
|||
*/
|
||||
int lamb= vars->AddInternalVarInt( "casa/Salon/LAmb");
|
||||
int lchim= vars->AddInternalVarInt( "casa/Salon/LChime");
|
||||
int lent= vars->AddInternalVarInt( "casa/Salon/LEnt");
|
||||
int pul1= vars->AddInternalVarInt( "casa/Salon/pul1");
|
||||
int pul2= vars->AddInternalVarInt( "casa/Salon/pul2");
|
||||
int pul3= vars->AddInternalVarInt( "casa/Salon/pul3");
|
||||
int pul4= vars->AddInternalVarInt( "casa/Salon/pul4");
|
||||
//lcd---------------------------------------------------------
|
||||
|
||||
//lcd->add(0,"T des: %s",0,0);
|
||||
|
|
@ -72,11 +76,17 @@ class ActualDomoConfig: public DomoConfig
|
|||
lcd->add(-1,"Mi ritmo",0,1);
|
||||
lcd->add(-1,"bueno pa goza",1,1);*/
|
||||
//desencadenaores----------
|
||||
char st[32];
|
||||
sprintf(st,"{%d}>0 -> !{%d} & !{%d} ",pul1,lamb,lchim);//terminar en espacios
|
||||
char st[64];
|
||||
sprintf(st,"{%d}>0 -> {%d}=1 & {%d}=1 & {%d}=1 ",pul1,lamb,lchim, lent);//terminar en espacios
|
||||
des->AddDes(st);
|
||||
sprintf(st,"{%d}<1 -> {%d}=0 & {%d}=0 & {%d}=0 ",pul1,lamb,lchim, lent);//terminar en espacios
|
||||
des->AddDes(st);
|
||||
sprintf(st,"{%d}>0 -> !{%d} ",pul2,lamb);//terminar en espacios
|
||||
des->AddDes(st);
|
||||
sprintf(st,"{%d}>0 -> !{%d} ",pul3,lchim);//terminar en espacios
|
||||
des->AddDes(st);
|
||||
sprintf(st,"{%d}>0 -> !{%d} ",pul4,lent);//terminar en espacios
|
||||
des->AddDes(st);
|
||||
|
||||
|
||||
|
||||
}
|
||||
};
|
||||
|
|
@ -203,4 +213,4 @@ class CocinaDomoConfig: public DomoConfig
|
|||
|
||||
|
||||
//configuracion que se usara--------------------------
|
||||
PulSalonConfig ConfiguracionActual;
|
||||
ActualDomoConfig ConfiguracionActual;
|
||||
|
|
|
|||
Loading…
Reference in New Issue