175 lines
4.3 KiB
C++
175 lines
4.3 KiB
C++
|
|
#ifndef DomoConfActualDef
|
|
#define DomoConfActualDef 1
|
|
#include "DomoEspConfig.h"
|
|
#include "SensorDout.h"
|
|
#include "SensorDHT.h"
|
|
#include "SensorDin.h"
|
|
#include "SensorPulsante.h"
|
|
#include "SensorAin.h"
|
|
#include "SensorVD.h"
|
|
#include "SensorRF.h"
|
|
|
|
|
|
#include "MecanismoPulso.h"
|
|
//----------------------------------------------------------------------------------------------------------------------------------------------
|
|
class AutomatismoPulsador//automatismo para encender luz con interruptor o pulsador
|
|
{
|
|
|
|
MecanismoPulso pulsador;//cambia estado con pulsador
|
|
public:
|
|
AutomatismoPulsador(){}
|
|
void inicia(ISensorManager* man, DomoEspSensorReceiver* tp_pul, DomoEspSensorReceiver* tpOut, DomoEspSensorReceiver* bloqueo=NULL )
|
|
{
|
|
inicia(man, tp_pul->topic, tpOut->topic, bloqueo);
|
|
}
|
|
void inicia(ISensorManager* man, char* tp_pul, char* tpOut, DomoEspSensorReceiver* bloqueo=NULL )
|
|
{
|
|
pulsador.set(tp_pul, tpOut, 0);
|
|
pulsador.setValSend("X");
|
|
if(bloqueo)
|
|
{
|
|
pulsador.AddActivador(bloqueo,'>',0);
|
|
}
|
|
man->Add(&pulsador);
|
|
}
|
|
};
|
|
class AutomatismoPresencia//automatismo para encender luz con presencia
|
|
{
|
|
|
|
MecanismoPulso presenciaOn;
|
|
MecanismoPulso presenciaOff;
|
|
MecanismoPulso nivelLuzOff;
|
|
float fnivelLuz;
|
|
public:
|
|
AutomatismoPresencia()
|
|
{
|
|
fnivelLuz=50;
|
|
|
|
|
|
strcpy(presenciaOn.id, "PresOn");
|
|
strcpy(presenciaOff.id, "PresOff");
|
|
strcpy(nivelLuzOff.id, "luzOff");
|
|
|
|
}
|
|
|
|
|
|
void inicia(ISensorManager* man, DomoEspSensorReceiver* presencia, DomoEspSensorReceiver* nivelluz, DomoEspSensorReceiver* out, DomoEspSensorReceiver* bloqueo=NULL )
|
|
{
|
|
|
|
presenciaOn.set(presencia->topic, out->topic, 0);
|
|
presenciaOn.setValSend("1");
|
|
presenciaOn.AddActivador(nivelluz,'<',fnivelLuz);//nivel de luz bajo
|
|
presenciaOn.AddActivador(out,'<',1);//out apagada
|
|
presenciaOn.AddActivador(presencia,'>',0);//presencia
|
|
if(bloqueo)
|
|
{
|
|
presenciaOn.AddActivador(bloqueo,'>',0);
|
|
}
|
|
presenciaOff.set(presencia->topic, out->topic, 0);
|
|
presenciaOff.setValSend("0");
|
|
presenciaOff.AddActivador(out,'>',0);//out encendido
|
|
presenciaOff.AddActivador(presencia,'<',1);//no presencia
|
|
if(bloqueo)
|
|
{
|
|
presenciaOff.AddActivador(bloqueo,'>',0);
|
|
}
|
|
|
|
nivelLuzOff.set(nivelluz->topic, out->topic, 0);
|
|
nivelLuzOff.setValSend("0");
|
|
nivelLuzOff.AddActivador(out,'>',0);//out encendido
|
|
nivelLuzOff.AddActivador(nivelluz,'>',fnivelLuz);//no luz
|
|
if(bloqueo)
|
|
{
|
|
nivelLuzOff.AddActivador(bloqueo,'>',0);
|
|
}
|
|
|
|
|
|
man->Add(&presenciaOn);
|
|
man->Add(&nivelLuzOff);
|
|
man->Add(&presenciaOff);
|
|
|
|
|
|
}
|
|
};
|
|
//configuraciones-----------------------------------------------------
|
|
class Automatismos: public DomoEspConfig
|
|
{
|
|
SensorRF presencia;
|
|
SensorRF nivelLuz;
|
|
SensorRF out;
|
|
SensorVD bloqueo;
|
|
|
|
//AutomatismoPulsador pulsadorSalon;
|
|
AutomatismoPresencia Apresen;
|
|
public:
|
|
Automatismos()
|
|
{
|
|
strcpy(ssidWifi,"IdhunAux");//nombre wifi
|
|
strcpy(ideEsp,"Esp8266_auto");//idenitificador del esp (sera único)
|
|
//pulsador sin activadores
|
|
presencia.set("casa/pruebas/inter",0);
|
|
nivelLuz.set("casa/pruebas/ana",0);
|
|
out.set("casa/pruebas/luz",0);
|
|
bloqueo.set("casa/pruebas/auto", true);
|
|
|
|
}
|
|
|
|
|
|
|
|
virtual void inicia(ISensorManager* man)
|
|
{
|
|
man->Add(&presencia);
|
|
man->Add(&nivelLuz);
|
|
man->Add(&out);
|
|
man->Add(&bloqueo);
|
|
Apresen.inicia(man,&presencia,&nivelLuz,&out,&bloqueo);
|
|
//pulsadorSalon.inicia(man,"casa/pruebas/pul", "casa/pruebas/luz");
|
|
}
|
|
|
|
};
|
|
|
|
class ConfActual: public DomoEspConfig
|
|
{
|
|
|
|
SensorDout luz;
|
|
SensorDHT dht;
|
|
SensorPulsante pul;
|
|
SensorDin interup;
|
|
SensorAin analog;
|
|
SensorVD sv;
|
|
|
|
public:
|
|
ConfActual()
|
|
{
|
|
strcpy(ssidWifi,"IdhunAux");//nombre wifi
|
|
strcpy(ideEsp,"Esp8266_pruebas");//idenitificador del esp (sera único)
|
|
|
|
luz.set(D1, "casa/pruebas/luz",0);
|
|
dht.set(D0, "casa/pruebas/dht");
|
|
pul.set(D2,"casa/pruebas/pul",1);
|
|
interup.set(D3,"casa/pruebas/inter");
|
|
analog.set(0,"casa/pruebas/ana",0, 1);
|
|
//analog.set(0,"casa/pruebas/ana",0, 0);*/
|
|
|
|
sv.set("casa/pruebas/vir",0);
|
|
|
|
|
|
}
|
|
virtual void inicia(ISensorManager* man)
|
|
{
|
|
man->Add(&luz);
|
|
man->Add(&dht);
|
|
man->Add(&pul);
|
|
man->Add(&interup);
|
|
man->Add(&analog);
|
|
man->Add(&sv);
|
|
|
|
}
|
|
|
|
};
|
|
|
|
|
|
Automatismos ConfiguracionActual;
|
|
|
|
#endif |