     { // convert the payload into a string
       getString += (char)nextionReturnBuffer[i];
     }
-    debugPrintln("HMI IN:   [String Return] '" + getString + "'");
+    debugPrintln(String(F("HMI IN:   [String Return] '")) + getString + "'");
     if (mqttGetSubtopic == "")
     { // If there's no outstanding request for a value, publish to mqttStateTopic
-      debugPrintln("MQTT OUT: '" + mqttStateTopic + "' : '" + getString + "]");
+      debugPrintln(String(F("MQTT OUT: '")) + mqttStateTopic + "' : '" + getString + "]");
       mqttClient.publish(mqttStateTopic, getString);
     }
     else
     { // Otherwise, publish the to saved mqttGetSubtopic and then reset mqttGetSubtopic
       String mqttReturnTopic = mqttStateTopic + mqttGetSubtopic;
-      debugPrintln("MQTT OUT: '" + mqttReturnTopic + "' : '" + getString + "]");
+      debugPrintln(String(F("MQTT OUT: '")) + mqttReturnTopic + "' : '" + getString + "]");
       mqttClient.publish(mqttReturnTopic, getString);
       mqttGetSubtopic = "";
     }

  readSavedConfig(); // Check filesystem for a saved config.json
  setupWifi();       // Start up networking

  if (otaPassword[0])
  { // Start up OTA
    setupOTA();
  }

  // Create server and assign callbacks for MQTT
  //mqttClient.begin(mqttServer, mqttPort, wifiClient);
  mqttClient.begin(mqttServer, atoi(mqttPort), wifiClient);
  mqttClient.onMessage(mqtt_callback);
  mqttConnect();

  // MQTT client loop
  mqttClient.loop();

  ArduinoOTA.handle();

  // webServer loop
  webServer.handleClient();

#ifdef DEBUGTELNET
  // telnetClient loop
