diff --git a/DomoEsp_v01/DomoEspManager.h b/DomoEsp_v01/DomoEspManager.h index 38bde27..2297075 100644 --- a/DomoEsp_v01/DomoEspManager.h +++ b/DomoEsp_v01/DomoEspManager.h @@ -55,9 +55,9 @@ class DomoConfig - char ssidWifi[24]; + char ssidWifi[32]; char keyWifi[32]; - char ideEsp[16];//identificador unico por esp + char ideEsp[32];//identificador unico por esp char hostMQTT[16]; int portMQTT; diff --git a/DomoEsp_v01/config_rf.h b/DomoEsp_v01/config_rf.h index 3995b21..7069f2b 100644 --- a/DomoEsp_v01/config_rf.h +++ b/DomoEsp_v01/config_rf.h @@ -98,7 +98,7 @@ class DespachoDomoConfig: public DomoConfig strcpy(ssidWifi,"Idhun");//nombre wifi strcpy(keyWifi,"Ardileorca1234.");//key wifi - strcpy(ideEsp,"Esp8266_011");//idenitificador del esp (sera único) + strcpy(ideEsp,"Esp8266_despacho");//idenitificador del esp (sera único) strcpy(hostMQTT,"192.168.2.50");//servidor mqttBroker portMQTT=1883;//puerto del servidor mqtt Broker @@ -142,7 +142,7 @@ class CocinaDomoConfig: public DomoConfig velocidadPortSerie=115200; strcpy(ssidWifi,"Idhun");//nombre wifi strcpy(keyWifi,"Ardileorca1234.");//key wifi - strcpy(ideEsp,"Esp8266_010");//idenitificador del esp (sera único) + strcpy(ideEsp,"Esp8266_cocina");//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 diff --git a/DomoEsp_v02/DomoEspManager.cpp b/DomoEsp_v02/DomoEspManager.cpp index b6c0e67..d406619 100644 --- a/DomoEsp_v02/DomoEspManager.cpp +++ b/DomoEsp_v02/DomoEspManager.cpp @@ -16,7 +16,7 @@ void DomoEspManager::inicia( LiquidCrystal *lcd, PubSubClient *mqttClient, WiFiC #ifdef DEBUG_PS Serial.println("Inicia Wifi"); #endif - wifi.inicia(espClient, conf->ssidWifi, conf->keyWifi); + wifi.inicia(espClient, conf->ssidWifi, conf->keyWifi, conf->ideEsp); #ifdef DEBUG_PS Serial.println("Inicia Mqtt"); #endif @@ -43,10 +43,40 @@ void DomoEspManager::inicia( LiquidCrystal *lcd, PubSubClient *mqttClient, WiFiC Serial.println("Iniciado Desencadenadores"); #endif des.inicia(&vars); + + + #if CON_LCD - - lcdm.inicia(&vars, lcd, conf->lcd.colum, conf->lcd.lines); - + #ifdef DEBUG_PS + Serial.println("Iniciado LCD"); + #endif + //busca buzzer + int ibuzzer=-1; + for(int i=0; itipo == MqttSensor::SENS_BUZZ_OUT) + { + ibuzzer=s->ivar; + #ifdef DEBUG_PS + Serial.println("encuentrado buz"); + #endif + break; + } + } + #ifdef DEBUG_PS + Serial.println("inicia LCD"); + #endif + lcdm.inicia(&vars, lcd, conf->lcd.colum, conf->lcd.lines, ibuzzer); + #ifdef DEBUG_PS + Serial.println("iniciado LCD"); + #endif #endif } diff --git a/DomoEsp_v02/DomoEspManager.h b/DomoEsp_v02/DomoEspManager.h index 8bd6bda..3bf129e 100644 --- a/DomoEsp_v02/DomoEspManager.h +++ b/DomoEsp_v02/DomoEspManager.h @@ -57,7 +57,7 @@ class DomoConfig char ssidWifi[24]; char keyWifi[32]; - char ideEsp[16];//identificador unico por esp + char ideEsp[32];//identificador unico por esp char hostMQTT[16]; int portMQTT; diff --git a/DomoEsp_v02/DomoEsp_v02.ino b/DomoEsp_v02/DomoEsp_v02.ino index d7667a9..3cf8ae9 100644 --- a/DomoEsp_v02/DomoEsp_v02.ino +++ b/DomoEsp_v02/DomoEsp_v02.ino @@ -29,6 +29,9 @@ Y PROBAR RF*/ #include #include //este para esp8266 //#include //este para esp32 +#include +#include +#include #include #include diff --git a/DomoEsp_v02/LcdMQTTViewer.cpp b/DomoEsp_v02/LcdMQTTViewer.cpp index af21224..cb863d7 100644 --- a/DomoEsp_v02/LcdMQTTViewer.cpp +++ b/DomoEsp_v02/LcdMQTTViewer.cpp @@ -21,6 +21,7 @@ void LcdMQTTViewer::envia(char* txt, int pos, int line) } LcdMQTTViewer::LcdMQTTViewer() { + ivarBuzzer=-1; topic[0]=0; maxpan = 0; tiempo = 0; @@ -66,12 +67,14 @@ void LcdMQTTViewer::envia(int pan) } } -void LcdMQTTViewer::inicia(MqttVarManager *v, LiquidCrystal* lcdEx, int digi, int lines) +void LcdMQTTViewer::inicia(MqttVarManager *v, LiquidCrystal* lcdEx, int digi, int lines,int ibuz) { + ivarBuzzer=(byte)ibuz; vars=v; lcd =lcdEx; nchar = digi; lcd->begin(nchar, lines); + nlineslcd=lines; for(int i=0; i=0) + vars->SetVal(ivarBuzzer,v); + } + else + { + nmelod=0; + melodia=true; + } + i++; + } else { - buf[n++]=payload[i++]; + if(melodia) + imelod[nmelod++]=payload[i++]; + else + buf[n++]=payload[i++]; } } buf[n]=0; envia(buf,0,lin); + lin++; + for(; lin #include +#include +#include +#include +#include + #include "MqttUtiles.h" //************************************************************************************************************************************************** @@ -42,13 +47,19 @@ WifiManager::WifiManager() } -void WifiManager::inicia( WiFiClient *espclient,char *ssid, char* key) +void WifiManager::inicia( WiFiClient *espclient,char *ssid, char* key, char *idArdu) { espClient= espclient; strcpy(nred, ssid); strcpy(pass, key); - - #ifdef DEBUG_PS + strcpy(idArduino,idArdu); + conecta(); + + //return WiFi.status() == WL_CONNECTED; +} +bool WifiManager::conecta() +{ + #ifdef DEBUG_PS Serial.println("Conectando wifi"); Serial.println(nred); Serial.println(pass); @@ -69,25 +80,84 @@ void WifiManager::inicia( WiFiClient *espclient,char *ssid, char* key) if(WiFi.status() == WL_CONNECTED) Serial.println("Wifi Conectado"); else - Serial.println("No se pudo conectar"); + { + Serial.println("No se pudo conectar"); + + } #endif - //return WiFi.status() == WL_CONNECTED; -} + if(WiFi.status() != WL_CONNECTED) + return false; + //ota---------------------------------- + // Port defaults to 8266 + // ArduinoOTA.setPort(8266); + + // Hostname defaults to esp8266-[ChipID] + ArduinoOTA.setHostname(idArduino); + + // No authentication by default + // ArduinoOTA.setPassword("admin"); + + // Password can be set with it's md5 value as well + // MD5(admin) = 21232f297a57a5a743894a0e4a801fc3 + // ArduinoOTA.setPasswordHash("21232f297a57a5a743894a0e4a801fc3"); + + ArduinoOTA.onStart([]() { + String type; + if (ArduinoOTA.getCommand() == U_FLASH) { + type = "sketch"; + } else { // U_FS + type = "filesystem"; + } + #ifdef DEBUG_PS + // NOTE: if updating FS this would be the place to unmount FS using FS.end() + Serial.println("Start updating " + type); + #endif + }); + ArduinoOTA.onEnd([]() { + Serial.println("\nEnd"); + }); + ArduinoOTA.onProgress([](unsigned int progress, unsigned int total) { + #ifdef DEBUG_PS + Serial.printf("Progress: %u%%\r", (progress / (total / 100))); + #endif + }); + ArduinoOTA.onError([](ota_error_t error) { + #ifdef DEBUG_PS + Serial.printf("Error[%u]: ", error); + if (error == OTA_AUTH_ERROR) { + Serial.println("Auth Failed"); + } else if (error == OTA_BEGIN_ERROR) { + Serial.println("Begin Failed"); + } else if (error == OTA_CONNECT_ERROR) { + Serial.println("Connect Failed"); + } else if (error == OTA_RECEIVE_ERROR) { + Serial.println("Receive Failed"); + } else if (error == OTA_END_ERROR) { + Serial.println("End Failed"); + } + #endif + }); + ArduinoOTA.begin(); + #ifdef DEBUG_PS + Serial.println("Ready"); + Serial.print("IP address: "); + Serial.println(WiFi.localIP()); + #endif + return true; +} bool WifiManager::loop() { if((WiFi.status() == WL_CONNECTED)) - { - + { + ArduinoOTA.handle(); return true; - } - #ifdef DEBUG_PS - Serial.println("Reset esp"); - #endif - ESP.reset(); - return false; - - + } + #ifdef DEBUG_PS + Serial.println("Fallo de conexion, se reinicia arduino"); + #endif + ESP.reset(); + return false; } //************************************************************************************************************************************************** MqttManager::MqttManager() @@ -122,6 +192,11 @@ bool MqttManager::loop() return true; } + #ifdef DEBUG_PS + Serial.println("Fallo de conexion, se reinicia arduino"); + #endif + ESP.reset(); + return false; } void MqttManager::subscribe_mqtt() { diff --git a/DomoEsp_v02/MqttUtiles.h b/DomoEsp_v02/MqttUtiles.h index 59490a4..9d19927 100644 --- a/DomoEsp_v02/MqttUtiles.h +++ b/DomoEsp_v02/MqttUtiles.h @@ -55,11 +55,12 @@ class WifiManager char nred[32]; char pass[32]; + char idArduino[32]; WiFiClient *espClient; WifiManager(); - - void inicia( WiFiClient *espClient, char *ssid, char* key); + bool conecta(); + void inicia( WiFiClient *espClient, char *ssid, char* key, char *idArduino); bool loop(); }; @@ -76,7 +77,7 @@ class MqttManager private: - char idEsp[16]; + char idEsp[32]; public: PubSubClient *client_mqtt; diff --git a/DomoEsp_v02/config_rf.h b/DomoEsp_v02/config_rf.h index d7da724..a89f4f0 100644 --- a/DomoEsp_v02/config_rf.h +++ b/DomoEsp_v02/config_rf.h @@ -11,7 +11,7 @@ class ActDomoConfig: public DomoConfig strcpy(ssidWifi,"Idhun");//nombre wifi strcpy(keyWifi,"Ardileorca1234.");//key wifi - strcpy(ideEsp,"Esp8266_016");//idenitificador del esp (sera único) + strcpy(ideEsp,"Esp8266_pruebas");//idenitificador del esp (sera único) strcpy(hostMQTT,"192.168.2.50");//servidor mqttBroker portMQTT=1883;//puerto del servidor mqtt Broker @@ -109,7 +109,7 @@ class AutomatismosDomoConfig: public DomoConfig strcpy(ssidWifi,"Idhun");//nombre wifi strcpy(keyWifi,"Ardileorca1234.");//key wifi - strcpy(ideEsp,"Esp8266_013");//idenitificador del esp (sera único) + strcpy(ideEsp,"Esp8266_autom");//idenitificador del esp (sera único) strcpy(hostMQTT,"192.168.2.50");//servidor mqttBroker portMQTT=1883;//puerto del servidor mqtt Broker @@ -203,7 +203,7 @@ class PulCocinaConfig: public DomoConfig strcpy(ssidWifi,"Idhun");//nombre wifi strcpy(keyWifi,"Ardileorca1234.");//key wifi - strcpy(ideEsp,"Esp8266_014");//idenitificador del esp (sera único) + strcpy(ideEsp,"Esp8266_Pulcocina");//idenitificador del esp (sera único) strcpy(hostMQTT,"192.168.2.50");//servidor mqttBroker portMQTT=1883;//puerto del servidor mqtt Broker @@ -263,7 +263,7 @@ class PulSalonConfig: public DomoConfig strcpy(ssidWifi,"Idhun");//nombre wifi strcpy(keyWifi,"Ardileorca1234.");//key wifi - strcpy(ideEsp,"Esp8266_012");//idenitificador del esp (sera único) + strcpy(ideEsp,"Esp8266_pulSalon");//idenitificador del esp (sera único) strcpy(hostMQTT,"192.168.2.50");//servidor mqttBroker portMQTT=1883;//puerto del servidor mqtt Broker @@ -316,7 +316,7 @@ class DespachoDomoConfig: public DomoConfig strcpy(ssidWifi,"Idhun");//nombre wifi strcpy(keyWifi,"Ardileorca1234.");//key wifi - strcpy(ideEsp,"Esp8266_011");//idenitificador del esp (sera único) + strcpy(ideEsp,"Esp8266_Despacho");//idenitificador del esp (sera único) strcpy(hostMQTT,"192.168.2.50");//servidor mqttBroker portMQTT=1883;//puerto del servidor mqtt Broker @@ -341,6 +341,11 @@ class DespachoDomoConfig: public DomoConfig //sensores-------------------------------------------------------- sens->AddHDT22(D4, "casa/desp"); sens->AddAnalogIn(0, "casa/desp/luz",true); + sens->AddBuzz(D7, "casa/des/buz"); + + sens->AddMelodia("m200#100d200#0");//titu + sens->AddMelodia("d200#100d200#100d200#100f200#100l300#0"); + //variables---------------------------------------------------- int temCoci= vars->AddInternalVarFloat( "casa/cocina/t");//variable privada int hcocina= vars->AddInternalVarFloat( "casa/cocina/h");//variable privada @@ -364,7 +369,7 @@ class CocinaDomoConfig: public DomoConfig velocidadPortSerie=115200; strcpy(ssidWifi,"Idhun");//nombre wifi strcpy(keyWifi,"Ardileorca1234.");//key wifi - strcpy(ideEsp,"Esp8266_010");//idenitificador del esp (sera único) + strcpy(ideEsp,"Esp8266_cocina");//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 @@ -387,7 +392,7 @@ class ExteriorDomoConfig: public DomoConfig velocidadPortSerie=115200; strcpy(ssidWifi,"Idhun");//nombre wifi strcpy(keyWifi,"Ardileorca1234.");//key wifi - strcpy(ideEsp,"Esp8266_015");//idenitificador del esp (sera único) + strcpy(ideEsp,"Esp8266_Ext");//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 @@ -405,4 +410,4 @@ class ExteriorDomoConfig: public DomoConfig //configuracion que se usara-------------------------- -ActDomoConfig ConfiguracionActual; +DespachoDomoConfig ConfiguracionActual;