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);
|
||||
#endif
|
||||
|
||||
|
||||
switch(oper[0])
|
||||
{
|
||||
case('!'):
|
||||
|
|
@ -242,7 +241,7 @@ void MqttDesencadenador::Exe(MqttVarManager *vars)
|
|||
|
||||
Serial.println("operador and ");
|
||||
#endif*/
|
||||
p.tcausa=true;
|
||||
//p.tcausa=true;
|
||||
p.toper=false;
|
||||
p.noper=0;
|
||||
p.esAnd=true;
|
||||
|
|
@ -254,7 +253,7 @@ void MqttDesencadenador::Exe(MqttVarManager *vars)
|
|||
|
||||
Serial.println("operador or ");
|
||||
#endif*/
|
||||
p.tcausa=true;
|
||||
//p.tcausa=true;
|
||||
p.toper=false;
|
||||
p.noper=0;
|
||||
p.esAnd=false;
|
||||
|
|
|
|||
|
|
@ -11,7 +11,7 @@
|
|||
|
||||
MqttSensor::MqttSensor()
|
||||
{
|
||||
|
||||
ivar=-1;
|
||||
}
|
||||
void MqttSensor::Set(MqttSensor *s)
|
||||
{
|
||||
|
|
@ -299,12 +299,10 @@ void MqttSensManager::procesaSensor(int i)
|
|||
}
|
||||
void MqttSensManager::OnVarChange(int ivar)
|
||||
{
|
||||
|
||||
MqttVar *v=vars->Get(ivar);
|
||||
MqttSensor *s = sens.Ivar2Sen(ivar);
|
||||
|
||||
if(s==NULL)
|
||||
return;
|
||||
MqttVar *v=vars->Get(ivar);
|
||||
#ifdef DEBUG_PS
|
||||
Serial.println("MqttSensManager::OnChange ");
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -288,6 +288,10 @@ int MqttVarManager::AddInternalVarInt( char*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)
|
||||
{
|
||||
return vars->Get(i);
|
||||
|
|
|
|||
|
|
@ -108,6 +108,7 @@ class MqttVarManager
|
|||
int GetId(char* topic);//devuelve el id de una variable
|
||||
|
||||
int AddVar(byte flags, char*topic);
|
||||
int AddVirtualOutVarInt( char*topic);
|
||||
int AddInternalVarFloat( char*topic);
|
||||
int AddInternalVarInt( char*topic);
|
||||
void PublicaVars();
|
||||
|
|
|
|||
|
|
@ -389,17 +389,25 @@ class CocinaDomoConfig: public DomoConfig
|
|||
{
|
||||
sens->AddHDT22(D4, "casa/cocina");//01
|
||||
sens->AddDinRetardOff(D5, 60,"casa/cocina/mov");//2
|
||||
int mov=2;
|
||||
sens->AddAnalogIn(0, "casa/cocina/luz",true);//3
|
||||
int luz=3;
|
||||
sens->AddDin( D1, "casa/cocina/inter");//4
|
||||
sens->AddDout(D2, "casa/cocina/lam", false);//5
|
||||
|
||||
int lam=5;
|
||||
int lauto= vars->AddVirtualOutVarInt( "casa/cocina/luzAuto");//variable privada
|
||||
char st[64];
|
||||
|
||||
//Efecto Pulsadores
|
||||
sprintf(st,"{%d}>0 -> !{%d} ",4,5);//terminar en espacios
|
||||
sprintf(st,"{%d}>0 -> !{%d} ",4,5);//accion interruptor
|
||||
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);
|
||||
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
|
||||
|
|
@ -481,4 +489,4 @@ class ExteriorDomoConfig: public DomoConfig
|
|||
|
||||
|
||||
//configuracion que se usara--------------------------
|
||||
ActDomoConfig ConfiguracionActual;
|
||||
CocinaDomoConfig ConfiguracionActual;
|
||||
|
|
|
|||
Loading…
Reference in New Issue