diff --git a/webserver/public/js/mqtt/mqtthat.js b/webserver/public/js/mqtt/mqtthat.js
index b8ae2a209ff178a638f19a470c544c4cba87de43..65c14ca18a90ad503fe2f1c713f3855d3fe7e3ce 100644
--- a/webserver/public/js/mqtt/mqtthat.js
+++ b/webserver/public/js/mqtt/mqtthat.js
@@ -49,6 +49,8 @@ function sendMessage(topic, message, retryNum = 0) {
 
 export { sendMessage };
 
+let hasDisconnected = false;
+
 // called when the client connects
 function onConnect() {
     // Once a connection has been made, make a subscription and send a message.
@@ -62,7 +64,10 @@ function onConnect() {
     isConnected = true;
     // tell every module that we're connected
     Api.isConnected = true;
-    Api.onConnect();
+    if(hasDisconnected){
+        Api.onConnect();
+        hasDisconnected = false;
+    }
 }
 
 let dateConLost = null;
@@ -75,6 +80,7 @@ function onFailure(message) {
     if (retry && (time < maxTime)) {
         isConnected = false;
         Api.isConnected = false;
+        hasDisconnected = true;
         client.connect(connectOptions);
     }
     if (time >= maxTime) {
@@ -88,6 +94,7 @@ function onConnectionLost(responseObject) {
     console.log("onConnectionLost:", responseObject);
     isConnected = false;
     Api.isConnected = false;
+    hasDisconnected = true;
     setTimeout(() => {
         client.connect(connectOptions);
     }, 1000);