diff --git a/Arduino/McLighting/definitions.h b/Arduino/McLighting/definitions.h
index dc02cc5..835cbee 100644
--- a/Arduino/McLighting/definitions.h
+++ b/Arduino/McLighting/definitions.h
@@ -66,9 +66,10 @@ uint32_t autoParams[][4] = {  // color, speed, mode, duration (milliseconds)
 #if defined(ENABLE_MQTT) or defined(ENABLE_AMQTT)
 
   const char mqtt_will_topic[] = HOSTNAME "/status";
-  const char mqtt_will_payload[] = "ONLINE";
+  const char mqtt_will_payload[] = "OFFLINE";
   const char mqtt_intopic[] = HOSTNAME "/in";
   const char mqtt_outtopic[] = HOSTNAME "/out";
+  bool mqtt_lwt_boot_flag = true;
 
   #ifdef ENABLE_MQTT
     #define MQTT_MAX_PACKET_SIZE 512
diff --git a/Arduino/McLighting/request_handlers.h b/Arduino/McLighting/request_handlers.h
index 4f0f445..bb38f33 100644
--- a/Arduino/McLighting/request_handlers.h
+++ b/Arduino/McLighting/request_handlers.h
@@ -996,7 +996,7 @@ void checkForRequests() {
       mqtt_reconnect_retries++;
       DBG_OUTPUT_PORT.printf("Attempting MQTT connection %d / %d ...\n", mqtt_reconnect_retries, MQTT_MAX_RECONNECT_TRIES);
       // Attempt to connect
-      if (mqtt_client.connect(mqtt_clientid, mqtt_user, mqtt_pass, mqtt_will_topic.c_str(), 2, true, mqtt_will_payload, true)) {
+      if (mqtt_client.connect(mqtt_clientid, mqtt_user, mqtt_pass, mqtt_will_topic, 2, true, mqtt_will_payload, true)) {
         DBG_OUTPUT_PORT.println("MQTT connected!");
         // Once connected, publish an announcement...
         char * message = new char[18 + strlen(HOSTNAME) + 1];
@@ -1005,6 +1005,11 @@ void checkForRequests() {
         mqtt_client.publish(mqtt_outtopic, message);
         // ... and resubscribe
         mqtt_client.subscribe(mqtt_intopic, qossub);
+        if(mqtt_lwt_boot_flag)
+        {
+          mqtt_client.publish(mqtt_will_topic, "ONLINE");
+          mqtt_lwt_boot_flag = false;
+        }
         #ifdef ENABLE_HOMEASSISTANT
           ha_send_data.detach();
           mqtt_client.subscribe(mqtt_ha_state_in, qossub);
@@ -1103,6 +1108,11 @@ void checkForRequests() {
       //Subscribe
       uint16_t packetIdSub1 = amqttClient.subscribe((char *)mqtt_intopic, qossub);
       DBG_OUTPUT_PORT.printf("Subscribing at QoS %d, packetId: ", qossub); DBG_OUTPUT_PORT.println(packetIdSub1);
+      if(mqtt_lwt_boot_flag)
+      {
+        amqttClient.publish(mqtt_will_topic, qospub, false, "ONLINE");
+        mqtt_lwt_boot_flag = false;
+      }
       #ifdef ENABLE_HOMEASSISTANT
         ha_send_data.detach();
         uint16_t packetIdSub2 = amqttClient.subscribe((char *)mqtt_ha_state_in, qossub);