diff --git a/DomoEsp_v02/DomoEspManager.cpp b/DomoEsp_v02/DomoEspManager.cpp index 92cf1af..10f4131 100644 --- a/DomoEsp_v02/DomoEspManager.cpp +++ b/DomoEsp_v02/DomoEspManager.cpp @@ -7,11 +7,11 @@ DomoEspManager::DomoEspManager() //vars.AddListenner(&des); sens.Config(&vars); suscrito=false; - } void DomoEspManager::inicia( LiquidCrystal *lcd, PubSubClient *mqttClient, WiFiClient* espClient, DomoConfig* conf) { + mqttclient=mqttClient; #ifdef DEBUG_PS Serial.println("Inicia Wifi"); #endif @@ -68,6 +68,9 @@ void DomoEspManager::loop() if(!suscrito) { vars.Suscribe(); + #if CON_LCD + lcdm.suscribe(mqttclient); + #endif suscrito=true; } @@ -83,9 +86,13 @@ void DomoEspManager::OnMqtt(char* topic, char* payload) { vars.OnMqtt(topic, payload); des.OnMqtt(topic, payload); - #ifdef DEBUG_PS - Serial.println("OnMqtt fin"); - #endif + #if CON_LCD + lcdm.OnMqtt(topic, payload); + #endif + + #ifdef DEBUG_PS + Serial.println("OnMqtt fin"); + #endif } void DomoEspManager::SubscribeMqtt(PubSubClient *client_mqtt) diff --git a/DomoEsp_v02/DomoEspManager.h b/DomoEsp_v02/DomoEspManager.h index 38bde27..d45d7b7 100644 --- a/DomoEsp_v02/DomoEspManager.h +++ b/DomoEsp_v02/DomoEspManager.h @@ -77,6 +77,7 @@ class DomoEspManager: public MqttReceiver + PubSubClient *mqttclient; //variables------------- //MqttVarArray avar; //MqttTopicAttay topics; diff --git a/DomoEsp_v02/LcdMQTTViewer.cpp b/DomoEsp_v02/LcdMQTTViewer.cpp index 4b7fc76..af21224 100644 --- a/DomoEsp_v02/LcdMQTTViewer.cpp +++ b/DomoEsp_v02/LcdMQTTViewer.cpp @@ -2,7 +2,7 @@ #include #include - +#include #include "MqttDefines.h" #include "MqttUtiles.h" #include "MqttVarManager.h" @@ -21,6 +21,7 @@ void LcdMQTTViewer::envia(char* txt, int pos, int line) } LcdMQTTViewer::LcdMQTTViewer() { + topic[0]=0; maxpan = 0; tiempo = 0; incre_t = 10 * 1000; @@ -101,3 +102,38 @@ void LcdMQTTViewer::add(byte ivar, char* formatLCD, int line, int pan) if (maxpan < pan) maxpan = pan; } + +int LcdMQTTViewer::OnMqtt(char* top, char* payload) +{ + if(strcmp(top,topic)) + return -1; + + int i=0; + int lin=0; + int n=0; + char buf[64]; + while(payload[i]) + { + if(payload[i]=='\n') + { + i++; + buf[n]=0; + envia(buf,0,lin); + lin++; + n=0; + } + else + { + buf[n++]=payload[i++]; + } + } + buf[n]=0; + envia(buf,0,lin); + tiempo=millis(); +} +void LcdMQTTViewer::suscribe(PubSubClient *client_qqtt) +{ + if(!topic[0]) + return; + client_qqtt->subscribe(topic); +} diff --git a/DomoEsp_v02/LcdMQTTViewer.h b/DomoEsp_v02/LcdMQTTViewer.h index 6107a19..e710a77 100644 --- a/DomoEsp_v02/LcdMQTTViewer.h +++ b/DomoEsp_v02/LcdMQTTViewer.h @@ -30,7 +30,7 @@ public: int panActual = 0; unsigned long tiempo; unsigned long incre_t; - + char topic[MAXSTR];//topic de mqtt Alarma MqttVarManager* vars; @@ -40,7 +40,8 @@ public: void inicia(MqttVarManager *vars, LiquidCrystal* lcdEx, int digi, int lines); void loop();//publica datos variables - + int OnMqtt(char* topic, char* payload); + void suscribe(PubSubClient *client_qqtt); //auxiliares---------------------------------------------------------- void add(byte ivar, char* formatLCD, int line, int pan); void setTimer(int seg); diff --git a/DomoEsp_v02/config_rf.h b/DomoEsp_v02/config_rf.h index 6e64e00..2aaadd8 100644 --- a/DomoEsp_v02/config_rf.h +++ b/DomoEsp_v02/config_rf.h @@ -254,7 +254,8 @@ class DespachoDomoConfig: public DomoConfig lcd->add(temCoci,"T coci: %s",0,1); lcd->add(hcocina,"H coci: %s",1,1); lcd->add(temExt,"T Ext: %s",0,2); - lcd->add(hExt,"H Ext: %s",1,2); + lcd->add(hExt,"H Ext: %s",1,2); + strcpy(lcd->topic,"casa/desp/msg"); } }; class CocinaDomoConfig: public DomoConfig