arreglos spliter y configuraciones pulsador salon. negacion de dout
parent
e963db4213
commit
7a256eb46f
|
|
@ -6,7 +6,7 @@ class SensorDout: public DomoEspSensorReceiver
|
|||
{
|
||||
bool val;
|
||||
uint8_t pin;
|
||||
|
||||
bool negado;
|
||||
public:
|
||||
virtual float getVal()
|
||||
{
|
||||
|
|
@ -17,11 +17,13 @@ class SensorDout: public DomoEspSensorReceiver
|
|||
pin=0;
|
||||
val=0;
|
||||
topic[0]=0;
|
||||
negado=false;
|
||||
}
|
||||
void set(uint8_t _pin, char* topic_id, bool valdef)
|
||||
void set(uint8_t _pin, char* topic_id, bool valdef,bool _negado=false)
|
||||
{
|
||||
pin=_pin;
|
||||
val=valdef;
|
||||
negado=_negado;
|
||||
strcpy(topic, topic_id);
|
||||
}
|
||||
virtual void procesa(IMqttManager * man, int tiempo)
|
||||
|
|
@ -44,7 +46,10 @@ class SensorDout: public DomoEspSensorReceiver
|
|||
virtual void inicia()
|
||||
{
|
||||
pinMode(pin, OUTPUT);
|
||||
digitalWrite(pin, val);
|
||||
if(negado)
|
||||
digitalWrite(pin, val==0);
|
||||
else
|
||||
digitalWrite(pin, val>0);
|
||||
}
|
||||
virtual void SubscribeMqtt(IMqttManager* man){
|
||||
//char buffer_t[MAXTOPICVAR];
|
||||
|
|
@ -62,8 +67,10 @@ class SensorDout: public DomoEspSensorReceiver
|
|||
else
|
||||
val=(atoi(payload)==1);
|
||||
//cambia estado relle
|
||||
|
||||
digitalWrite(pin, val);
|
||||
if(negado)
|
||||
digitalWrite(pin, val==0);
|
||||
else
|
||||
digitalWrite(pin, val>0);
|
||||
//loguea------------
|
||||
//char buffer_t[MAXTOPICVAR];
|
||||
//char buffer_p[MAXTOPICVAR];
|
||||
|
|
|
|||
|
|
@ -22,9 +22,9 @@ class SensorSplitter: public DomoEspSensorReceiver
|
|||
for(int i=0; i<MAX_ACTIVADORES; i++)
|
||||
sensorSend[i].sen=0;
|
||||
}
|
||||
void set(char* topic_id, float valdef)
|
||||
void set(char* topic_id, float =0)
|
||||
{
|
||||
val=valdef;
|
||||
val=0;
|
||||
strcpy(topic, topic_id);
|
||||
}
|
||||
void AddSens(DomoEspSensorReceiver* sen)
|
||||
|
|
@ -49,12 +49,13 @@ class SensorSplitter: public DomoEspSensorReceiver
|
|||
virtual void SubscribeMqtt(IMqttManager* man){
|
||||
//char buffer_t[MAXTOPICVAR];
|
||||
sprintf(buffer_t, "%s/set",topic);
|
||||
man->MqttSubs(buffer_t);
|
||||
sprintf(buffer_t, "%s/pul",topic);
|
||||
man->MqttSubs(buffer_t);
|
||||
}
|
||||
virtual void OnMqtt(IMqttManager * man, char* _topic, char* payload, int tipo)
|
||||
{
|
||||
if(tipo!=Topic::SET || tipo!=Topic::PUL)
|
||||
if(tipo!=Topic::SET && tipo!=Topic::PUL)
|
||||
return;
|
||||
if(strcmp(_topic, topic))
|
||||
return;
|
||||
|
|
@ -66,20 +67,22 @@ class SensorSplitter: public DomoEspSensorReceiver
|
|||
if(val==0)
|
||||
val=1;
|
||||
else
|
||||
val=0; }
|
||||
else
|
||||
val=0;
|
||||
}
|
||||
else
|
||||
val=atof(payload);
|
||||
for(int i=0; i<MAX_ACTIVADORES; i++)
|
||||
{
|
||||
if(sensorSend[i].sen)
|
||||
for(int i=0; i<MAX_ACTIVADORES; i++)
|
||||
{
|
||||
if(sensorSend[i].sen)
|
||||
{
|
||||
sprintf(buffer_t, "%s/set",sensorSend[i].sen->topic);
|
||||
man->MqttSend(buffer_t, payload);
|
||||
}
|
||||
}
|
||||
}
|
||||
else if(tipo==Topic::PUL )
|
||||
{
|
||||
|
||||
}
|
||||
else if(tipo==Topic::PUL )
|
||||
{
|
||||
for(int i=0; i<MAX_ACTIVADORES; i++)
|
||||
{
|
||||
|
||||
|
|
|
|||
|
|
@ -43,7 +43,42 @@ class ConfAutomatismos: public DomoEspConfig
|
|||
}
|
||||
|
||||
};
|
||||
class ConfSpliter: public DomoEspConfig
|
||||
{
|
||||
|
||||
SensorDout luz;
|
||||
SensorDout luz2;
|
||||
|
||||
SensorSplitter sp;
|
||||
public:
|
||||
ConfSpliter()
|
||||
{
|
||||
strcpy(ssidWifi,"IdhunAux");//nombre wifi
|
||||
strcpy(ideEsp,"Esp8266_pruebas");//idenitificador del esp (sera único)
|
||||
|
||||
luz.set(D1, "casa/pruebas/luz",0);
|
||||
luz2.set(D5, "casa/pruebas/luz2",0);
|
||||
|
||||
sp.set("casa/pruebas/sp");
|
||||
sp.AddSens(&luz2);
|
||||
sp.AddSens(&luz);
|
||||
|
||||
}
|
||||
virtual void inicia(ISensorManager* man)
|
||||
{
|
||||
man->Add(&luz);
|
||||
man->Add(&luz2);
|
||||
man->Add(&sp);
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
};
|
||||
class ConfActual: public DomoEspConfig
|
||||
{
|
||||
|
||||
|
|
@ -120,7 +155,7 @@ class Confdespacho: public DomoEspConfig
|
|||
strcpy(ideEsp,"Esp8266_Despacho");//idenitificador del esp (sera único)
|
||||
|
||||
dht.set(D4, "casa/desp");
|
||||
nivelLuz.set(0,"casa/desp/luz",0, 0);
|
||||
nivelLuz.set(0,"casa/desp/luz",1, 0);
|
||||
|
||||
senlcd.set("casa/desp/lcd", &lcd, 16,2, 7);
|
||||
tcocina.set("casa/cocina/t");
|
||||
|
|
@ -151,10 +186,141 @@ class Confdespacho: public DomoEspConfig
|
|||
|
||||
|
||||
|
||||
}
|
||||
};
|
||||
class ConfigSalon: public DomoEspConfig
|
||||
{
|
||||
SensorDHT dht;
|
||||
SensorAin nivelLuz;
|
||||
SensorDin presencia;
|
||||
SensorTimer presenciaTimer;
|
||||
Actuador actTimer;
|
||||
public:
|
||||
ConfigSalon()
|
||||
{
|
||||
|
||||
strcpy(ssidWifi,"Idhun");//nombre wifi
|
||||
strcpy(ideEsp,"Esp8266_Salon");//idenitificador del esp (sera único)
|
||||
|
||||
dht.set(D4, "casa/Salon");
|
||||
nivelLuz.set(0,"casa/Salon/luz",1, 0);
|
||||
presencia.set(D5, "casa/Salon/movEven");
|
||||
presenciaTimer.set("casa/Salon/mov",0,60);
|
||||
actTimer.set("casa/Salon/movEven", "casa/Salon/mov","1");
|
||||
actTimer.AddActivador(&presencia, '>', 0);
|
||||
}
|
||||
|
||||
virtual void inicia(ISensorManager* man)
|
||||
{
|
||||
man->Add(&dht);
|
||||
man->Add(&nivelLuz);
|
||||
man->Add(&presencia);
|
||||
man->Add(&presenciaTimer);
|
||||
man->Add(&actTimer);
|
||||
|
||||
}
|
||||
};
|
||||
|
||||
class ConfPulSalon: public DomoEspConfig
|
||||
{
|
||||
SensorPulsante pul1;
|
||||
SensorPulsante pul2;
|
||||
SensorPulsante pul3;
|
||||
SensorPulsante pul4;
|
||||
|
||||
SensorRF lchimenea;
|
||||
SensorDout lentrada;
|
||||
SensorRF lambiente;
|
||||
|
||||
Actuador actp1;
|
||||
Actuador actp2on;
|
||||
Actuador actp2off;
|
||||
|
||||
Actuador actp3on;
|
||||
Actuador actp3off;
|
||||
|
||||
|
||||
Actuador actAllOn;
|
||||
Actuador actAllOff;
|
||||
|
||||
SensorSplitter sp;
|
||||
|
||||
|
||||
public:
|
||||
ConfPulSalon()
|
||||
{
|
||||
strcpy(ssidWifi,"Idhun");//nombre wifi
|
||||
strcpy(ideEsp,"Esp8266_PulSalon");//idenitificador del esp (sera único)
|
||||
|
||||
lchimenea.set("casa/Salon/LChime");
|
||||
lambiente.set("casa/Salon/LAmb");
|
||||
lentrada.set(D7,"casa/Salon/LEnt",1, 1);
|
||||
|
||||
pul1.set(D1,"casa/Salon/pul1",0);
|
||||
pul2.set(D2,"casa/Salon/pul2",0);
|
||||
|
||||
pul3.set(D5,"casa/Salon/pul3",0);
|
||||
pul4.set(D6,"casa/Salon/pulAll",0);
|
||||
|
||||
actp1.set("casa/Salon/pul1","casa/Salon/LEnt","X");
|
||||
actp2on.set("casa/Salon/pul2","casa/Salon/LAmb","0");
|
||||
actp2off.set("casa/Salon/pul2","casa/Salon/LAmb","1");
|
||||
|
||||
actp3on.set("casa/Salon/pul3","casa/Salon/LChime","0");
|
||||
actp3off.set("casa/Salon/pul3","casa/Salon/LChime","1");
|
||||
|
||||
actp2on.AddActivador(&lambiente, '>', 0);
|
||||
actp2off.AddActivador(&lambiente, '<', 1);
|
||||
|
||||
actp3on.AddActivador(&lchimenea, '>', 0);
|
||||
actp3off.AddActivador(&lchimenea, '<', 1);
|
||||
|
||||
sp.set("casa/Salon/pulAllSP");
|
||||
sp.AddSens(&lchimenea);
|
||||
sp.AddSens(&lambiente);
|
||||
sp.AddSens(&lentrada);
|
||||
actAllOn.set("casa/Salon/pulAll", "casa/Salon/pulAllSP","0");
|
||||
actAllOff.set("casa/Salon/pulAll", "casa/Salon/pulAllSP","1");
|
||||
actAllOn.AddActivador(&lentrada, '>', 0);
|
||||
actAllOff.AddActivador(&lentrada, '<', 1);
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
virtual void inicia(ISensorManager* man)
|
||||
{
|
||||
man->Add(&lambiente);
|
||||
man->Add(&lentrada);
|
||||
man->Add(&lchimenea);
|
||||
|
||||
man->Add(&pul1);
|
||||
man->Add(&pul2);
|
||||
man->Add(&pul3);
|
||||
man->Add(&pul4);
|
||||
|
||||
man->Add(&actp1);
|
||||
|
||||
man->Add(&actp2on);
|
||||
man->Add(&actp2off);
|
||||
|
||||
man->Add(&actp3on);
|
||||
man->Add(&actp3off);
|
||||
|
||||
|
||||
man->Add(&sp);
|
||||
man->Add(&actAllOn);
|
||||
man->Add(&actAllOff);
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
ConfActual ConfiguracionActual;
|
||||
|
||||
|
||||
|
||||
ConfPulSalon ConfiguracionActual;
|
||||
|
||||
#endif
|
||||
Loading…
Reference in New Issue