Añadir variables virtuales y desencadenadores con condicionales varios

master
Gerardo 2022-02-01 21:16:26 +01:00
parent 877d54fe0e
commit 9630d9ce07
5 changed files with 27 additions and 17 deletions

View File

@ -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;

View File

@ -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

View File

@ -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);

View File

@ -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();

View File

@ -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;