#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