#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 "SensorTimer.h" #include "SensorLcd.h" #include "SensorBuzzer.h" #include "SensorBMP180.h" #include "SensorPotenI2c.h" #include "SensorRF.h" #include "SensorSplitter.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); } }; //---------------------------------------------------------------------------------------------------------------------------------------------- class AutomatismoPulsarBoton//automatismo para simular pulsado de boton { Actuador presenciaOn; Actuador presenciaOff; //Actuador nivelLuzOff; float fnivelLuz; public: AutomatismoPulsarBoton() { strcpy(presenciaOn.id, "PresOn"); strcpy(presenciaOff.id, "PresOff"); //strcpy(nivelLuzOff.id, "luzOff"); } void inicia(ISensorManager* man, DomoEspSensorReceiver* timerIn, DomoEspSensorReceiver* out ) { presenciaOn.set(timerIn->topic, out->topic, "1"); presenciaOn.AddActivador(timerIn,'>',0, 1);//nivel de luz bajo presenciaOn.AddActivador(out,'<',1, 0);//out apagada presenciaOff.set(timerIn->topic, out->topic,"0"); presenciaOff.AddActivador(timerIn,'<',1,1);//out encendido presenciaOff.AddActivador(out,'>',0,0);//out encendido man->Add(&presenciaOn); //man->Add(&nivelLuzOff); man->Add(&presenciaOff); } }; //---------------------------------------------------------------------------------------------------------------------------------------------- //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=40; 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