diff --git a/code/components/jomjol_flowcontroll/ClassFlowControll.cpp b/code/components/jomjol_flowcontroll/ClassFlowControll.cpp index b078cada..4e963a09 100644 --- a/code/components/jomjol_flowcontroll/ClassFlowControll.cpp +++ b/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; } diff --git a/code/components/jomjol_flowcontroll/ClassFlowMQTT.cpp b/code/components/jomjol_flowcontroll/ClassFlowMQTT.cpp index d350b18e..1c3c08b5 100644 --- a/code/components/jomjol_flowcontroll/ClassFlowMQTT.cpp +++ b/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! diff --git a/code/components/jomjol_mqtt/interface_mqtt.cpp b/code/components/jomjol_mqtt/interface_mqtt.cpp index d742b1d3..cfa99348 100644 --- a/code/components/jomjol_mqtt/interface_mqtt.cpp +++ b/code/components/jomjol_mqtt/interface_mqtt.cpp @@ -17,6 +17,8 @@ std::map>* 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")); diff --git a/code/components/jomjol_mqtt/interface_mqtt.h b/code/components/jomjol_mqtt/interface_mqtt.h index 63d513a8..514a93e2 100644 --- a/code/components/jomjol_mqtt/interface_mqtt.h +++ b/code/components/jomjol_mqtt/interface_mqtt.h @@ -21,4 +21,6 @@ void MQTTregisterSubscribeFunction(std::string topic, std::function