   mqttStatusPayload += String(F("\"espUptime\":")) + String(long(millis() / 1000)) + String(F(","));
   mqttStatusPayload += String(F("\"signalStrength\":")) + String(WiFi.RSSI()) + String(F(","));
   mqttStatusPayload += String(F("\"haspIP\":\"")) + WiFi.localIP().toString() + String(F("\","));
-  mqttStatusPayload += String(F("\"heapFree\":")) + String(ESP.getFreeHeap());
-  mqttStatusPayload += String(F("\"heapFragmentation\":")) + String(ESP.getHeapFragmentation());
-  mqttStatusPayload += String(F("\"espCore\":")) + String(ESP.getCoreVersion());
+  mqttStatusPayload += String(F("\"heapFree\":")) + String(ESP.getFreeHeap()) + String(F(","));
+  mqttStatusPayload += String(F("\"heapFragmentation\":")) + String(ESP.getHeapFragmentation()) + String(F(","));
+  mqttStatusPayload += String(F("\"espCore\":\"")) + String(ESP.getCoreVersion()) + String(F("\""));
   mqttStatusPayload += "}";
 
   mqttClient.publish(mqttSensorTopic, mqttStatusPayload);

const uint16_t mqttMaxPacketSize = 4096;            // Size of buffer for incoming MQTT message
String mqttClientId;                                // Auto-generated MQTT ClientID
String mqttGetSubtopic;                             // MQTT subtopic for incoming commands requesting .val
String mqttGetSubtopicJSON;                         // MQTT object buffer for JSON status when reqeusting .val
String mqttStateTopic;                              // MQTT topic for outgoing panel interactions
String mqttStateJSONTopic;                          // MQTT topic for outgoing panel interactions in JSON format
String mqttCommandTopic;                            // MQTT topic for incoming panel commands

  if (mdnsEnabled)
  {
    MDNS.begin(haspNode); // Add mDNS hostname
    MDNS.addService("http", "tcp", 80);
    if (debugTelnetEnabled)
    {
      MDNS.addService("telnet", "tcp", 23);
