#include "DomoEspConfig.h" #include "DomoEspSensorManager.h" DomoEspManager::DomoEspManager() { clienteMqtt.setClient(espClient); n=0; tiempo=0; suscrito=false; SetTimeRefres(15); tNoConexion.set(300); tNomqtt.set(300); } void DomoEspManager::SetTimeRefres(int seg) { timer.set(seg); } void DomoEspManager::inicia(DomoEspConfig* cnf) { conf=cnf; #ifdef DEBUG_PS Serial.begin(conf->velocidadPortSerie); delay(1000); Serial.println(""); Serial.println("Iniciando"); #endif #ifdef DEBUG_PS Serial.println("Inicia Wifi"); #endif wifi.inicia(&espClient, conf->ssidWifi, conf->keyWifi, conf->ideEsp); #ifdef DEBUG_PS Serial.println("Inicia Mqtt"); #endif if(conf->conexionPorApi) { } else mqtt.inicia(&clienteMqtt,conf->ideEsp, conf->hostMQTT, conf->portMQTT, this); //loguea------------ MqttSend("casa/log", conf->ideEsp); #ifdef DEBUG_PS Serial.println("Configura Sensores"); #endif conf->inicia(this); //pasar funcion de configuracion de aƱadir sensores for(int i=0; iinicia(); } } void DomoEspManager::loop() { if(!wifi.loop()) { suscrito=false; if(!wifi.conecta()) { if(tNoConexion.onTimer()) { #ifndef ESP32_DEF ESP.reset(); #else ESP.restart(); #endif return; } } } tNoConexion.inicia(); if(!mqtt.loop()) { suscrito=false; if(tNomqtt.onTimer()) { #ifndef ESP32_DEF ESP.reset(); #else ESP.restart(); #endif return; } return; } tNomqtt.inicia(); if(!suscrito) { for(int i=0; iSubscribeMqtt(this); } suscrito=true; } int tiempoAux=0; if(timer.onTimerReset()) { #ifndef ESP32_DEF if(conf->conexionPorApi) { #ifndef ESP32_DEF char topic_aux[32]; char payload_aux[128]; while(api.getDataPendiente(conf->ideEsp,topic_aux, payload_aux)) { OnMqtt(topic_aux, payload_aux); } #endif } #endif tiempo=(tiempo+1)%2; tiempoAux=tiempo+1; #ifdef DEBUG_PS Serial.print("Procesa Tiempo: "); Serial.print(tiempoAux); Serial.println("------------ "); #endif } for(int i=0; iprocesa(this, tiempoAux); } #ifdef DEBUG_PS if(tiempoAux>0) Serial.println("----------------------------- "); #endif } void DomoEspManager::OnMqtt(char* topic, char* payload) { char buf[MAXTOPICVAR]; strcpy(buf, topic); int nt=strlen(buf); if(nt<4) { #ifdef DEBUG_PS Serial.print("se descarta por topic corto:"); Serial.println(buf); #endif return; } int tipo=Topic::NO_RECONOCIDO; if(!strcmp("/get", &buf[nt-4])) tipo=Topic::GET; else if(!strcmp("/set", &buf[nt-4])) tipo=Topic::SET; else if(!strcmp("/pul", &buf[nt-4])) tipo=Topic::PUL; if(tipo!=Topic::NO_RECONOCIDO) buf[nt-4]=0; #ifdef DEBUG_PS Serial.print("OnMqtt "); Serial.print(topic); Serial.print(" -> "); Serial.println(payload); #endif for(int i=0; iOnMqtt(this, buf, payload, tipo); } } void DomoEspManager::SubscribeMqtt(PubSubClient *client_mqtt) { for(int i=0; iSubscribeMqtt(this); } } void DomoEspManager::MqttSend(char* topic, char* payload) { if(conf->conexionPorApi) { #ifndef ESP32_DEF api.send(topic, payload); #endif } else { if(suscrito); clienteMqtt.publish(topic, payload); } } void DomoEspManager::MqttSubs(char* topic) { if(conf->conexionPorApi) { } else clienteMqtt.subscribe(topic); } void DomoEspManager::Add(DomoEspSensorReceiver* sensor) { if(n