From 7a256eb46f285e55b8f60bca9d0b92a6d4ab5c01 Mon Sep 17 00:00:00 2001 From: Gerardo Date: Mon, 30 Sep 2024 22:03:36 +0200 Subject: [PATCH] arreglos spliter y configuraciones pulsador salon. negacion de dout --- DomoEspSensor/SensorDout.h | 17 ++- DomoEspSensor/SensorSplitter.h | 25 ++-- DomoEspSensor/configuracionActual.h | 170 +++++++++++++++++++++++++++- 3 files changed, 194 insertions(+), 18 deletions(-) diff --git a/DomoEspSensor/SensorDout.h b/DomoEspSensor/SensorDout.h index 1b0b572..1277367 100644 --- a/DomoEspSensor/SensorDout.h +++ b/DomoEspSensor/SensorDout.h @@ -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]; diff --git a/DomoEspSensor/SensorSplitter.h b/DomoEspSensor/SensorSplitter.h index f6989fd..7977ce1 100644 --- a/DomoEspSensor/SensorSplitter.h +++ b/DomoEspSensor/SensorSplitter.h @@ -22,9 +22,9 @@ class SensorSplitter: public DomoEspSensorReceiver for(int i=0; iMqttSubs(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; itopic); man->MqttSend(buffer_t, payload); } - } } - else if(tipo==Topic::PUL ) - { + + } + else if(tipo==Topic::PUL ) + { for(int i=0; iAdd(&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 \ No newline at end of file