From 650d0877ab2c8be50b413feca77d23cdddeb967c Mon Sep 17 00:00:00 2001 From: Florian <1technophile@users.noreply.github.com> Date: Mon, 27 May 2019 22:45:44 +0200 Subject: [PATCH] Enable auto reconnection to the broker if connection is lost more than 30s #378 #398 by reseting the board instead of going to setup function --- OpenMQTTGateway.ino | 25 ++++++++++++++++--------- 1 file changed, 16 insertions(+), 9 deletions(-) diff --git a/OpenMQTTGateway.ino b/OpenMQTTGateway.ino index b21c2b6..1a9d723 100644 --- a/OpenMQTTGateway.ino +++ b/OpenMQTTGateway.ino @@ -177,14 +177,7 @@ boolean reconnect() { if (failure_number > maxMQTTretry){ trc(F("failed connecting to mqtt")); - #if defined(ESP8266) && !defined(ESPWifiManualSetup) - if (!connectedOnce) { - trc(F("fail connecting to mqtt, reseting wifi manager")); - setup_wifimanager(true); // if we didn't connected once to mqtt we reset and start in AP mode again to have a chance to change the parameters - } - #elif defined(ESP32) || defined(ESPWifiManualSetup)// ESP32 case we don't use Wifi manager yet - setup_wifi(); - #endif + return false; } } } @@ -574,12 +567,26 @@ void loop() unsigned long now = millis(); //MQTT client connexion management if (!client.connected()) { // not connected - if (now - lastReconnectAttempt > 5000) { lastReconnectAttempt = now; // Attempt to reconnect if (reconnect()) { lastReconnectAttempt = 0; + } else { + #if defined(ESP8266) && !defined(ESPWifiManualSetup) + if (!connectedOnce) { + trc(F("reseting wifi manager")); + setup_wifimanager(true); // if we didn't connected once to mqtt we reset and start in AP mode again to have a chance to change the parameters + } + #elif defined(ESP32) || defined(ESPWifiManualSetup)// ESP32 case we don't use Wifi manager yet + trc(F("restarting ESP")); + #ifdef ESP32 + ESP.restart(); + #endif + #ifdef ESP8266 + ESP.reset(); + #endif + #endif } } } else { //connected