Añadir variables virtuales y desencadenadores con condicionales varios
parent
877d54fe0e
commit
9630d9ce07
|
|
@ -43,7 +43,6 @@ void MqttDesencadenador::ExeEfecto(MqttVarManager *vars, char *oper, char*x, ch
|
||||||
Serial.println(y);
|
Serial.println(y);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
switch(oper[0])
|
switch(oper[0])
|
||||||
{
|
{
|
||||||
case('!'):
|
case('!'):
|
||||||
|
|
@ -242,7 +241,7 @@ void MqttDesencadenador::Exe(MqttVarManager *vars)
|
||||||
|
|
||||||
Serial.println("operador and ");
|
Serial.println("operador and ");
|
||||||
#endif*/
|
#endif*/
|
||||||
p.tcausa=true;
|
//p.tcausa=true;
|
||||||
p.toper=false;
|
p.toper=false;
|
||||||
p.noper=0;
|
p.noper=0;
|
||||||
p.esAnd=true;
|
p.esAnd=true;
|
||||||
|
|
@ -254,7 +253,7 @@ void MqttDesencadenador::Exe(MqttVarManager *vars)
|
||||||
|
|
||||||
Serial.println("operador or ");
|
Serial.println("operador or ");
|
||||||
#endif*/
|
#endif*/
|
||||||
p.tcausa=true;
|
//p.tcausa=true;
|
||||||
p.toper=false;
|
p.toper=false;
|
||||||
p.noper=0;
|
p.noper=0;
|
||||||
p.esAnd=false;
|
p.esAnd=false;
|
||||||
|
|
|
||||||
|
|
@ -11,7 +11,7 @@
|
||||||
|
|
||||||
MqttSensor::MqttSensor()
|
MqttSensor::MqttSensor()
|
||||||
{
|
{
|
||||||
|
ivar=-1;
|
||||||
}
|
}
|
||||||
void MqttSensor::Set(MqttSensor *s)
|
void MqttSensor::Set(MqttSensor *s)
|
||||||
{
|
{
|
||||||
|
|
@ -299,12 +299,10 @@ void MqttSensManager::procesaSensor(int i)
|
||||||
}
|
}
|
||||||
void MqttSensManager::OnVarChange(int ivar)
|
void MqttSensManager::OnVarChange(int ivar)
|
||||||
{
|
{
|
||||||
|
|
||||||
MqttVar *v=vars->Get(ivar);
|
|
||||||
MqttSensor *s = sens.Ivar2Sen(ivar);
|
MqttSensor *s = sens.Ivar2Sen(ivar);
|
||||||
|
|
||||||
if(s==NULL)
|
if(s==NULL)
|
||||||
return;
|
return;
|
||||||
|
MqttVar *v=vars->Get(ivar);
|
||||||
#ifdef DEBUG_PS
|
#ifdef DEBUG_PS
|
||||||
Serial.println("MqttSensManager::OnChange ");
|
Serial.println("MqttSensManager::OnChange ");
|
||||||
#endif
|
#endif
|
||||||
|
|
|
||||||
|
|
@ -288,6 +288,10 @@ int MqttVarManager::AddInternalVarInt( char*topic)
|
||||||
{
|
{
|
||||||
return AddVar((byte)(MqttVar::PRIV_VAR| MqttVar::CHANGE_VAR|MqttVar::ACCION_VAR),topic);
|
return AddVar((byte)(MqttVar::PRIV_VAR| MqttVar::CHANGE_VAR|MqttVar::ACCION_VAR),topic);
|
||||||
}
|
}
|
||||||
|
int MqttVarManager::AddVirtualOutVarInt( char* topic)
|
||||||
|
{
|
||||||
|
return AddVar((byte)(MqttVar::IN_VAR|MqttVar::OUT_VAR|MqttVar::ACCION_VAR),topic);
|
||||||
|
}
|
||||||
MqttVar* MqttVarManager::Get(int i)
|
MqttVar* MqttVarManager::Get(int i)
|
||||||
{
|
{
|
||||||
return vars->Get(i);
|
return vars->Get(i);
|
||||||
|
|
|
||||||
|
|
@ -108,6 +108,7 @@ class MqttVarManager
|
||||||
int GetId(char* topic);//devuelve el id de una variable
|
int GetId(char* topic);//devuelve el id de una variable
|
||||||
|
|
||||||
int AddVar(byte flags, char*topic);
|
int AddVar(byte flags, char*topic);
|
||||||
|
int AddVirtualOutVarInt( char*topic);
|
||||||
int AddInternalVarFloat( char*topic);
|
int AddInternalVarFloat( char*topic);
|
||||||
int AddInternalVarInt( char*topic);
|
int AddInternalVarInt( char*topic);
|
||||||
void PublicaVars();
|
void PublicaVars();
|
||||||
|
|
|
||||||
|
|
@ -389,17 +389,25 @@ class CocinaDomoConfig: public DomoConfig
|
||||||
{
|
{
|
||||||
sens->AddHDT22(D4, "casa/cocina");//01
|
sens->AddHDT22(D4, "casa/cocina");//01
|
||||||
sens->AddDinRetardOff(D5, 60,"casa/cocina/mov");//2
|
sens->AddDinRetardOff(D5, 60,"casa/cocina/mov");//2
|
||||||
|
int mov=2;
|
||||||
sens->AddAnalogIn(0, "casa/cocina/luz",true);//3
|
sens->AddAnalogIn(0, "casa/cocina/luz",true);//3
|
||||||
|
int luz=3;
|
||||||
sens->AddDin( D1, "casa/cocina/inter");//4
|
sens->AddDin( D1, "casa/cocina/inter");//4
|
||||||
sens->AddDout(D2, "casa/cocina/lam", false);//5
|
sens->AddDout(D2, "casa/cocina/lam", false);//5
|
||||||
|
int lam=5;
|
||||||
|
int lauto= vars->AddVirtualOutVarInt( "casa/cocina/luzAuto");//variable privada
|
||||||
char st[64];
|
char st[64];
|
||||||
|
|
||||||
//Efecto Pulsadores
|
//Efecto Pulsadores
|
||||||
sprintf(st,"{%d}>0 -> !{%d} ",4,5);//terminar en espacios
|
sprintf(st,"{%d}>0 -> !{%d} ",4,5);//accion interruptor
|
||||||
des->AddDes(st);
|
des->AddDes(st);
|
||||||
sprintf(st,"{%d}<1 -> !{%d} ",4,5);//terminar en espacios
|
sprintf(st,"{%d}<1 -> !{%d} ",4,5);//accion interruptor
|
||||||
des->AddDes(st);
|
des->AddDes(st);
|
||||||
|
sprintf(st,"{%d}<1&{%d}>0&{%d}=0 -> {%d}=1 ",mov,lauto,lam,lam);//apaga luz si no hay nadie
|
||||||
|
des->AddDes(st);
|
||||||
|
sprintf(st,"{%d}<20&{%d}>0&{%d}>0 -> {%d}=0 ",luz,mov,lauto,lam);//enciende luz si hay presencia y esta oscuro
|
||||||
|
des->AddDes(st);
|
||||||
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
class SalonDomoConfig: public DomoConfig
|
class SalonDomoConfig: public DomoConfig
|
||||||
|
|
@ -481,4 +489,4 @@ class ExteriorDomoConfig: public DomoConfig
|
||||||
|
|
||||||
|
|
||||||
//configuracion que se usara--------------------------
|
//configuracion que se usara--------------------------
|
||||||
ActDomoConfig ConfiguracionActual;
|
CocinaDomoConfig ConfiguracionActual;
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue