diff --git a/DomoEsp_v02/.vs/DomoEsp_v02/v16/.suo b/DomoEsp_v02/.vs/DomoEsp_v02/v16/.suo index 9b905fb..0d6ecf8 100644 Binary files a/DomoEsp_v02/.vs/DomoEsp_v02/v16/.suo and b/DomoEsp_v02/.vs/DomoEsp_v02/v16/.suo differ diff --git a/DomoEsp_v02/.vs/DomoEsp_v02/v16/Browse.VC.db b/DomoEsp_v02/.vs/DomoEsp_v02/v16/Browse.VC.db index 98fc664..e280234 100644 Binary files a/DomoEsp_v02/.vs/DomoEsp_v02/v16/Browse.VC.db and b/DomoEsp_v02/.vs/DomoEsp_v02/v16/Browse.VC.db differ diff --git a/DomoEsp_v02/.vs/DomoEsp_v02/v17/.suo b/DomoEsp_v02/.vs/DomoEsp_v02/v17/.suo index 76d231c..eb79e99 100644 Binary files a/DomoEsp_v02/.vs/DomoEsp_v02/v17/.suo and b/DomoEsp_v02/.vs/DomoEsp_v02/v17/.suo differ diff --git a/DomoEsp_v02/.vs/DomoEsp_v02/v17/Browse.VC.db b/DomoEsp_v02/.vs/DomoEsp_v02/v17/Browse.VC.db index 84655c9..bfd9de9 100644 Binary files a/DomoEsp_v02/.vs/DomoEsp_v02/v17/Browse.VC.db and b/DomoEsp_v02/.vs/DomoEsp_v02/v17/Browse.VC.db differ diff --git a/DomoEsp_v02/DomoEsp_v02.vcxproj b/DomoEsp_v02/DomoEsp_v02.vcxproj index a032423..afce49c 100644 --- a/DomoEsp_v02/DomoEsp_v02.vcxproj +++ b/DomoEsp_v02/DomoEsp_v02.vcxproj @@ -68,17 +68,18 @@ - C:\Program Files (x86)\Windows Kits\10\Include\10.0.10240.0\ucrt + + Level3 Disabled true - $(ProjectDir)..\DomoEsp_v02;C:\Users\Gerardo\AppData\Local\arduino15\packages\esp8266\hardware\esp8266\3.0.2\libraries\SPI;C:\Users\Gerardo\AppData\Local\arduino15\packages\esp8266\hardware\esp8266\3.0.2\libraries\ESP8266WiFi\src;C:\Users\Gerardo\AppData\Local\arduino15\packages\esp8266\hardware\esp8266\3.0.2\libraries\ESP8266mDNS\src;C:\Users\Gerardo\AppData\Local\arduino15\packages\esp8266\hardware\esp8266\3.0.2\libraries\ArduinoOTA;C:\Program Files (x86)\Arduino\libraries\SimpleDHT-master;C:\Users\Gerardo\AppData\Local\arduino15\packages\esp8266\hardware\esp8266\3.0.2\libraries\Wire;C:\Program Files (x86)\Arduino\libraries\Adafruit-BMP085-Library-master;C:\Program Files (x86)\Arduino\libraries\LiquidCrystal\src;C:\Users\Gerardo\Documents\Arduino\libraries\PubSubClient\src;C:\Users\Gerardo\Documents\Arduino\libraries\WakeOnLan\src;C:\Users\Gerardo\AppData\Local\arduino15\packages\esp8266\hardware\esp8266\3.0.2\libraries\EEPROM;C:\Users\Gerardo\AppData\Local\arduino15\packages\esp8266\hardware\esp8266\3.0.2\cores\esp8266;C:\Users\Gerardo\AppData\Local\arduino15\packages\esp8266\hardware\esp8266\3.0.2\cores\esp8266\avr;C:\Users\Gerardo\AppData\Local\arduino15\packages\esp8266\hardware\esp8266\3.0.2\cores\esp8266\libb64;C:\Users\Gerardo\AppData\Local\arduino15\packages\esp8266\hardware\esp8266\3.0.2\cores\esp8266\spiffs;C:\Users\Gerardo\AppData\Local\arduino15\packages\esp8266\hardware\esp8266\3.0.2\cores\esp8266\umm_malloc;C:\Users\Gerardo\AppData\Local\arduino15\packages\esp8266\hardware\esp8266\3.0.2\variants\nodemcu;C:\Users\Gerardo\AppData\Local\arduino15\packages\esp8266\hardware\esp8266\3.0.2\tools\sdk\include;C:\Users\Gerardo\AppData\Local\arduino15\packages\esp8266\hardware\esp8266\3.0.2\tools\sdk\lwip2\include;C:\Users\Gerardo\AppData\Local\arduino15\packages\esp8266\hardware\esp8266\3.0.2\tools\sdk\libc\xtensa-lx106-elf\include;C:\Users\Gerardo\AppData\Local\arduino15\packages\esp8266\tools\xtensa-lx106-elf-gcc\3.0.4-gcc10.3-1757bed\xtensa-lx106-elf\include\c++\4.8.2;C:\Users\Gerardo\AppData\Local\arduino15\packages\esp8266\tools\xtensa-lx106-elf-gcc\3.0.4-gcc10.3-1757bed\xtensa-lx106-elf\include\c++\4.8.2\xtensa-lx106-elf;C:\Users\Gerardo\AppData\Local\arduino15\packages\esp8266\tools\xtensa-lx106-elf-gcc\3.0.4-gcc10.3-1757bed\xtensa-lx106-elf\include;C:\Users\Gerardo\AppData\Local\arduino15\packages\esp8266\tools\xtensa-lx106-elf-gcc\3.0.4-gcc10.3-1757bed\lib\gcc\xtensa-lx106-elf\4.8.2\include;C:\Users\Gerardo\AppData\Local\arduino15\packages\esp8266\hardware\esp8266\3.0.2\tools\sdk\include;%(AdditionalIncludeDirectories) + $(ProjectDir)..\DomoEsp_v02;C:\Users\Gerardo\AppData\Local\arduino15\packages\esp8266\hardware\esp8266\3.0.2\libraries\SPI;C:\Users\Gerardo\AppData\Local\arduino15\packages\esp8266\hardware\esp8266\3.0.2\libraries\ESP8266WiFi\src;C:\Users\Gerardo\AppData\Local\arduino15\packages\esp8266\hardware\esp8266\3.0.2\libraries\ESP8266mDNS\src;C:\Users\Gerardo\AppData\Local\arduino15\packages\esp8266\hardware\esp8266\3.0.2\libraries\ArduinoOTA;C:\Users\Gerardo\Documents\Arduino\libraries\SimpleDHT;C:\Users\Gerardo\AppData\Local\arduino15\packages\esp8266\hardware\esp8266\3.0.2\libraries\Wire;C:\Users\Gerardo\Documents\Arduino\libraries\WakeOnLan\src;C:\Program Files (x86)\Arduino\libraries\Adafruit-BMP085-Library-master;C:\Users\Gerardo\AppData\Local\arduino15\packages\esp8266\hardware\esp8266\3.0.2\cores\esp8266;C:\Users\Gerardo\AppData\Local\arduino15\packages\esp8266\hardware\esp8266\3.0.2\cores\esp8266\avr;C:\Users\Gerardo\AppData\Local\arduino15\packages\esp8266\hardware\esp8266\3.0.2\cores\esp8266\libb64;C:\Users\Gerardo\AppData\Local\arduino15\packages\esp8266\hardware\esp8266\3.0.2\cores\esp8266\spiffs;C:\Users\Gerardo\AppData\Local\arduino15\packages\esp8266\hardware\esp8266\3.0.2\cores\esp8266\umm_malloc;C:\Users\Gerardo\AppData\Local\arduino15\packages\esp8266\hardware\esp8266\3.0.2\variants\nodemcu;C:\Users\Gerardo\AppData\Local\arduino15\packages\esp8266\hardware\esp8266\3.0.2\tools\sdk\include;C:\Users\Gerardo\AppData\Local\arduino15\packages\esp8266\hardware\esp8266\3.0.2\tools\sdk\lwip2\include;C:\Users\Gerardo\AppData\Local\arduino15\packages\esp8266\hardware\esp8266\3.0.2\tools\sdk\libc\xtensa-lx106-elf\include;C:\Users\Gerardo\AppData\Local\arduino15\packages\esp8266\tools\xtensa-lx106-elf-gcc\3.0.4-gcc10.3-1757bed\xtensa-lx106-elf\include\c++\4.8.2;C:\Users\Gerardo\AppData\Local\arduino15\packages\esp8266\tools\xtensa-lx106-elf-gcc\3.0.4-gcc10.3-1757bed\xtensa-lx106-elf\include\c++\4.8.2\xtensa-lx106-elf;C:\Users\Gerardo\AppData\Local\arduino15\packages\esp8266\tools\xtensa-lx106-elf-gcc\3.0.4-gcc10.3-1757bed\xtensa-lx106-elf\include;C:\Users\Gerardo\AppData\Local\arduino15\packages\esp8266\tools\xtensa-lx106-elf-gcc\3.0.4-gcc10.3-1757bed\lib\gcc\xtensa-lx106-elf\4.8.2\include;C:\Users\Gerardo\AppData\Local\arduino15\packages\esp8266\hardware\esp8266\3.0.2\tools\sdk\include;%(AdditionalIncludeDirectories) $(ProjectDir)__vm\.DomoEsp_v02.vsarduino.h;%(ForcedIncludeFiles) true - __ESP8266_esp8266__;__ESP8266_ESP8266__;__ets__;ICACHE_FLASH;_GNU_SOURCE;MMU_IRAM_SIZE=0x8000;MMU_ICACHE_SIZE=0x8000;NONOSDK22x_190703=1;F_CPU=80000000L;LWIP_OPEN_SRC;TCP_MSS=536;LWIP_FEATURES=1;LWIP_IPV6=0;ARDUINO=108016;ARDUINO_ESP8266_NODEMCU_ESP12E;ARDUINO_ARCH_ESP8266;LED_BUILTIN=2;FLASHMODE_DIO;ESP8266;__cplusplus=201103L;_VMICRO_INTELLISENSE;%(PreprocessorDefinitions) + __ESP8266_esp8266__;__ESP8266_ESP8266__;_VMDEBUG=1;__ets__;ICACHE_FLASH;_GNU_SOURCE;MMU_IRAM_SIZE=0x8000;MMU_ICACHE_SIZE=0x8000;NONOSDK22x_190703=1;F_CPU=80000000L;LWIP_OPEN_SRC;TCP_MSS=536;LWIP_FEATURES=1;LWIP_IPV6=0;ARDUINO=108016;ARDUINO_ESP8266_NODEMCU_ESP12E;ARDUINO_ARCH_ESP8266;LED_BUILTIN=2;FLASHMODE_DIO;ESP8266;__cplusplus=201103L;_VMICRO_INTELLISENSE;%(PreprocessorDefinitions) true diff --git a/DomoEsp_v02/MqttSensManager.cpp b/DomoEsp_v02/MqttSensManager.cpp index a83755c..7e47d2a 100644 --- a/DomoEsp_v02/MqttSensManager.cpp +++ b/DomoEsp_v02/MqttSensManager.cpp @@ -124,8 +124,21 @@ void MqttSensManager::AddDout(int pin, char* topic, bool defautlValor) sens.Add(&s); pinMode(s.pin, OUTPUT); digitalWrite(s.pin, defautlValor); + vars->Get(s.ivar)->val.i = defautlValor; +} +void MqttSensManager::AddDoutPulsador(int pin, char* topic, bool defautlValor, int seg) +{ + MqttSensor s; + s.tipo = (int)MqttSensor::SENS_DIGI_OUT_PULSANTE; + s.pin = pin; + s.ivar = vars->AddVar((byte)(MqttVar::IN_VAR | MqttVar::OUT_VAR | MqttVar::ACCION_VAR), topic); + s.ie.pul.t = seg * 1000; + s.ie.pul.vd = defautlValor; + sens.Add(&s); + pinMode(s.pin, OUTPUT); + digitalWrite(s.pin, defautlValor); + vars->Get(s.ivar)->val.i = defautlValor; } - void MqttSensManager::AddBuzz(int pin, char* topic) { MqttSensor s; @@ -334,6 +347,27 @@ void MqttSensManager::OnVarChange(int ivar) digitalWrite( s->pin, v->val.i); break; } + case((int)MqttSensor::SENS_DIGI_OUT_PULSANTE): + { + if ((v->val.i>0) != s->ie.pul.vd) + { +#ifdef DEBUG_PS + Serial.println("Sens::OnVarChangeSensor Dout Pulsante cambiado"); +#endif + if (s->flags & MqttSensor::FLAG_NEG) + digitalWrite(s->pin, (1 - v->val.i)); + else + digitalWrite(s->pin, v->val.i); + delay(s->ie.pul.t); + v->val.i = 1 - v->val.i; + if (s->flags & MqttSensor::FLAG_NEG) + digitalWrite(s->pin, (1 - v->val.i)); + else + digitalWrite(s->pin, v->val.i); + vars->OnChange(ivar, true); + } + break; + } case((int)MqttSensor::SENS_BUZZ_OUT): { #ifdef DEBUG_PS diff --git a/DomoEsp_v02/MqttSensManager.h b/DomoEsp_v02/MqttSensManager.h index da3bcea..b2810f9 100644 --- a/DomoEsp_v02/MqttSensManager.h +++ b/DomoEsp_v02/MqttSensManager.h @@ -50,12 +50,17 @@ struct SensRetardado unsigned long r;//retardo byte val;//valor actual a cambiar }; +struct InfoPulsante +{ + unsigned long t;//puntero a variable humedad + bool vd;//valor por defecto; +}; union MqttInfEx//informacion extra segun sensor { DhtExt dht; BmpExt bmp; SensRetardado retard; - + InfoPulsante pul; //DinEx din; }; class MqttSensor @@ -70,8 +75,9 @@ class MqttSensor SENS_ANALOG_IN,//sensor analogico in SENS_DIGI_IN,//sensor digital in (algo con 2 estados) SENS_DIGI_OUT,//sensor digital out - SENS_DIGI_IN_PULSANTE,//pensado para pulsadores (Publicara un put) + SENS_DIGI_IN_PULSANTE,//pensado para pulsadores SENS_BUZZ_OUT,//sensor digital out con buzzer conectado + SENS_DIGI_OUT_PULSANTE,//pensado para hacer efecto pulsador //SENS_DIGI_IN_OUT//sensor doble de entrada y salida (dos pines que tienen que tener el mismo valor) }; @@ -173,7 +179,10 @@ class MqttSensManager: public MqttOnVarChangeListenner void AddDin(int pin, char* topic);//añade variable digital que se actualiza de manera instantanea (interruptores sensor presencia ..) void AddDinAccion(int pin, char* topic);//añade variable que solo publica en el cambio (pulsadores, ...) void AddDinRetardOff(int pin, int seg, char* topic);//añade variable con retardo al apagado (especial sensores de presencia) - void AddDinRetardOn(int pin, int seg, char* topic);//añade variable con retardo al apagado (especial sensores de presencia) + void AddDinRetardOn(int pin, int seg, char* topic);//añade variable con retardo al apagado (especial sensores de presencia) + + void AddDoutPulsador(int pin, char* topic, bool defautlValor, int seg); + //salida digital void AddDout(int pin, char* topic, bool defautlValor);//variable que solo publica en el cambio (pulsadores, ...) void AddAnalogIn(int pin, char* topic, bool ValNegado);//nivel de luz, nivel de lluvia ... diff --git a/DomoEsp_v02/MqttVarManager.cpp b/DomoEsp_v02/MqttVarManager.cpp index 7ae05af..153e311 100644 --- a/DomoEsp_v02/MqttVarManager.cpp +++ b/DomoEsp_v02/MqttVarManager.cpp @@ -345,10 +345,10 @@ int MqttVarManager::GetId(char* topic) void MqttVarManager::OnChange(int ivar, bool publica) { - #ifdef DEBUG_PS + #ifdef DEBUG_PS + Serial.println("MqttVarManager::OnChange"); + #endif - Serial.println("MqttVarManager::OnChange"); - #endif if(publica) { MqttVar* v=vars->Get(ivar); diff --git a/DomoEsp_v02/__vm/.DomoEsp_v02.vsarduino.h b/DomoEsp_v02/__vm/.DomoEsp_v02.vsarduino.h index 8a6c09d..a57aeee 100644 --- a/DomoEsp_v02/__vm/.DomoEsp_v02.vsarduino.h +++ b/DomoEsp_v02/__vm/.DomoEsp_v02.vsarduino.h @@ -15,6 +15,7 @@ #define _VSARDUINO_H_ #define __ESP8266_esp8266__ #define __ESP8266_ESP8266__ +#define _VMDEBUG 1 #define __ets__ #define ICACHE_FLASH #define _GNU_SOURCE diff --git a/DomoEsp_v02/__vm/Compile.vmps.xml b/DomoEsp_v02/__vm/Compile.vmps.xml index 6653ba0..59515da 100644 --- a/DomoEsp_v02/__vm/Compile.vmps.xml +++ b/DomoEsp_v02/__vm/Compile.vmps.xml @@ -1,26 +1,26 @@ - + - + - + - - 84 #if CON_WOL -85 pwol=&WOL; -86 #endif -87 domoManager.inicia(pwol,plcd,&clienteMqtt,&EspClient,&ConfiguracionActual); -88 -89 } -90 --->91 void loop() -92 { -93 domoManager.loop(); -94 } + + 82 #if CON_WOL +83 pwol=&WOL; +84 #endif +85 domoManager.inicia(pwol,plcd,&clienteMqtt,&EspClient,&ConfiguracionActual); +86 +87 } +88 +-->89 void loop() +90 { +91 domoManager.loop(); +92 } diff --git a/DomoEsp_v02/config_rf.h b/DomoEsp_v02/config_rf.h index 908e180..28e1dd8 100644 --- a/DomoEsp_v02/config_rf.h +++ b/DomoEsp_v02/config_rf.h @@ -1,7 +1,7 @@ //parametros configurables************************************************* #define DEBUG_PS 1//Descomentar para debug -#define CON_LCD 1 -#define CON_WOL 1 +#define CON_LCD 0 +#define CON_WOL 0 //va por 16 class CocinapRUBDomoConfig: public DomoConfig { @@ -151,6 +151,77 @@ class ActDomoConfig: public DomoConfig /* */ } }; +class SalonHome: public DomoConfig +{ + public: + SalonHome() + { + velocidadPortSerie=115200; + strcpy(ssidWifi,"Idhun");//nombre wifi + strcpy(keyWifi,"Ardileorca1234.");//key wifi + + strcpy(ideEsp,"Esp8266_SalomHome");//idenitificador del esp (sera único) + strcpy(hostMQTT,"192.168.2.50");//servidor mqttBroker + portMQTT=1883;//puerto del servidor mqtt Broker + + refresTimeVars=30;//tiempo de refresco en segundos de las variables + refresTimeSens=15;//tiempo de refresco en segundos de los sensores + + //config lcd-------------------- + lcd.colum=16;//columnas lcd + lcd.lines=2;//lineas + //pines lcd + lcd.rs=D5; + lcd.en=D6;//eneable + lcd.d0=D3; + lcd.d1=D2; + lcd.d2=D1; + lcd.d3=D0; + + } + //configuracion de sensores, variables, lcd--------------------------------- + virtual void ConfigGen(MqttSensManager* sens, MqttVarManager* vars, LcdMQTTViewer *lcd, MqttWOLManager* wol, MqttDesencadenadorManager *des) + { + //sensores-------------------------------------------------------- + /* + sens->AddHDT22(int pin, char* topic); + //tempe y presion varometrica + sens->AddBMP180(int sda,int scl, char* topic); + //entradas digitales + sens->AddDin(int pin, char* topic);//añade variable digital que se actualiza de manera instantanea (interruptores sensor presencia ..) + sens->AddDinAccion(int pin, char* topic);//añade variable que solo publica en el cambio (pulsadores, ...) + //salida digital + sens->AddDout(int pin, char* topic, bool defautlValor);//variable que solo publica en el cambio (pulsadores, ...) + Sensor analogico + sens->AddAnalogIn(int pin, char* topic, bool ValNegado);//nivel de luz, nivel de lluvia ... + + sens->AddBuzz(int pin, char* topic); + */ + sens->AddDoutPulsador(D4, "casa/Salon/ordeTele", true, 1); + sens->AddDoutPulsador(D2, "casa/Salon/router", true, 1); + + + sens->AddDout(D3,"casa/Salon/auxiliar", true); + int aux=2; + sens->AddDout(D1,"casa/Salon/equipoMusica", true); + int equipo=3; + sens->AddDin( D5,"casa/Salon/pulEquipoM"); + int pequipo=4; + sens->AddDin( D6, "casa/Salon/pulAux"); + int paux=5; + //variables---------------------------------------------------- + + //desencadenaores---------- + char st[64]; + //Efecto Interruptor----- + + sprintf(st,"{%d}>0 -> !{%d} ",pequipo,equipo);//terminar en espacios + des->AddDes(st); + sprintf(st,"{%d}>0 -> !{%d} ",paux,aux);//terminar en espacios + des->AddDes(st); + + } +}; class PulSalonPruebConfig: public DomoConfig { public: @@ -532,4 +603,4 @@ class ExteriorDomoConfig: public DomoConfig //configuracion que se usara-------------------------- -DespachoDomoConfig ConfiguracionActual; +SalonHome ConfiguracionActual;