101 lines
2.9 KiB
C++
101 lines
2.9 KiB
C++
#ifndef AutomatismosDefSensorV
|
|
#define AutomatismosDef 1
|
|
#include "DomoEspConfig.h"
|
|
#include "SensorDout.h"
|
|
#include "SensorDHT.h"
|
|
#include "SensorDin.h"
|
|
#include "SensorPulsante.h"
|
|
#include "SensorAin.h"
|
|
#include "SensorVF.h"
|
|
#include "SensorRF.h"
|
|
#include "SensorTimer.h"
|
|
|
|
#include "Actuador.h"
|
|
//----------------------------------------------------------------------------------------------------------------------------------------------
|
|
|
|
//----------------------------------------------------------------------------------------------------------------------------------------------
|
|
class AutomatismoPulsador//automatismo para encender luz con interruptor o pulsador
|
|
{
|
|
|
|
Actuador 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, "X");
|
|
pulsador.setId("Pulsa");
|
|
if(bloqueo)
|
|
{
|
|
pulsador.AddActivador(bloqueo,'>',0);
|
|
}
|
|
man->Add(&pulsador);
|
|
}
|
|
};
|
|
|
|
//----------------------------------------------------------------------------------------------------------------------------------------------
|
|
|
|
//automatismo para luz con sensor de presencia y de nivel de luz
|
|
class AutomatismoPresencia//automatismo para encender luz con presencia
|
|
{
|
|
|
|
Actuador presenciaOn;
|
|
Actuador presenciaOff;
|
|
Actuador 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, "1");
|
|
presenciaOn.AddActivador(nivelluz,'<',fnivelLuz, 1);//nivel de luz bajo
|
|
presenciaOn.AddActivador(out,'<',1, 0);//out apagada
|
|
presenciaOn.AddActivador(presencia,'>',0, 0);//presencia
|
|
if(bloqueo)
|
|
{
|
|
presenciaOn.AddActivador(bloqueo,'>',0);
|
|
}
|
|
presenciaOff.set(presencia->topic, out->topic,"0");
|
|
presenciaOff.AddActivador(out,'>',0,0);//out encendido
|
|
presenciaOff.AddActivador(presencia,'<',1, 0);//no presencia
|
|
if(bloqueo)
|
|
{
|
|
presenciaOff.AddActivador(bloqueo,'>',0);
|
|
}
|
|
|
|
nivelLuzOff.set(nivelluz->topic, out->topic, "0");
|
|
nivelLuzOff.AddActivador(out,'>',0, 0);//out encendido
|
|
nivelLuzOff.AddActivador(nivelluz,'>',fnivelLuz, 0);//no luz
|
|
if(bloqueo)
|
|
{
|
|
nivelLuzOff.AddActivador(bloqueo,'>',0);
|
|
}
|
|
|
|
|
|
man->Add(&presenciaOn);
|
|
man->Add(&nivelLuzOff);
|
|
man->Add(&presenciaOff);
|
|
|
|
|
|
}
|
|
};
|
|
|
|
|
|
|
|
|
|
#endif |