Просмотр исходного кода

Quick Fix for MQTT Init Problem

jomjol 3 лет назад
Родитель
Сommit
a122b37c81

+ 1 - 1
code/components/jomjol_flowcontroll/ClassFlowControll.cpp

@@ -146,7 +146,7 @@ bool ClassFlowControll::StartMQTTService() {
             if (FlowControll[i]->name().compare("ClassFlowMQTT") == 0) {
                 return ((ClassFlowMQTT*) (FlowControll[i]))->Start(AutoIntervall);
             }  
-        }
+        } 
     return false;
 }
 

+ 9 - 0
code/components/jomjol_flowcontroll/ClassFlowMQTT.cpp

@@ -189,6 +189,15 @@ string ClassFlowMQTT::GetMQTTMainTopic()
 
 bool ClassFlowMQTT::Start(float AutoIntervall) {
 
+//    printf("URI: %s, MAINTOPIC: %s", uri.c_str(), maintopic.c_str());
+
+    if ((uri.length() == 0) || (maintopic.length() == 0)) 
+    {
+        LogFile.WriteToFile(ESP_LOG_INFO, TAG, "MQTT not started because URI or Maintopic is not set. MQTT will be disabled.");
+        MQTTdisable();
+        return false;
+    }
+
     roundInterval = AutoIntervall; // Minutes
     keepAlive = roundInterval * 60 * 2.5; // Seconds, make sure it is greater thatn 2 rounds!
 

+ 17 - 0
code/components/jomjol_mqtt/interface_mqtt.cpp

@@ -17,6 +17,8 @@ std::map<std::string, std::function<bool(std::string, char*, int)>>* subscribeFu
 
 
 int failedOnRound = -1;
+
+bool MQTT_Enabled = true;
  
 esp_mqtt_event_id_t esp_mmqtt_ID = MQTT_EVENT_ANY;
 // ESP_EVENT_ANY_ID
@@ -29,6 +31,11 @@ int keepalive, SetRetainFlag;
 void (*callbackOnConnected)(std::string, int) = NULL;
 
 
+void MQTTdisable()
+{
+    MQTT_Enabled = false;
+}
+
 bool MQTTPublish(std::string _key, std::string _content, int retained_flag) {
     int msg_id;
     std::string zw;
@@ -163,6 +170,16 @@ void MQTT_Configure(std::string _mqttURI, std::string _clientid, std::string _us
 }
 
 bool MQTT_Init() {
+
+    if (MQTT_Enabled == false)
+        return false;
+
+    if ((client_id.length() == 0) || (lwt_topic.length() == 0))
+    {
+        LogFile.WriteToFile(ESP_LOG_ERROR, TAG, std::string("Init with no Client_ID or Topic. Abort Init!"));
+        return false;
+    }
+    
     esp_err_t ret;
     LogFile.WriteToFile(ESP_LOG_INFO, TAG, std::string("Init"));
 

+ 2 - 0
code/components/jomjol_mqtt/interface_mqtt.h

@@ -21,4 +21,6 @@ void MQTTregisterSubscribeFunction(std::string topic, std::function<bool(std::st
 void MQTTdestroySubscribeFunction();
 void MQTTconnected();
 
+void MQTTdisable();
+
 #endif //INTERFACE_MQTT_H

+ 2 - 1
code/dependencies.lock

@@ -1,2 +1,3 @@
-manifest_hash: 45994dbfed009907994c31f6d279c5861a1eacbf219ce8b58e74e39b3393816a
+manifest_hash: 4e37bb0f9273c4de05f38688720fe32aa6e5b892452694a4f7a2ca1659f02cf6
+target: esp32
 version: 1.0.0