diff --git a/src/hasp_config.cpp b/src/hasp_config.cpp index 680bf130..12bcb75e 100644 --- a/src/hasp_config.cpp +++ b/src/hasp_config.cpp @@ -172,17 +172,28 @@ void configWriteConfig() bool changed = false; JsonObject settings; - settings = doc.as(); + if(doc.as().isNull()) { + settings = doc.to(); + } else { + settings = doc.as(); + } + + if(settings[F("wifi")].as().isNull()) settings.createNestedObject(F("wifi")); + if(settings[F("mqtt")].as().isNull()) settings.createNestedObject(F("mqtt")); + if(settings[F("hasp")].as().isNull()) settings.createNestedObject(F("hasp")); + if(settings[F("mdns")].as().isNull()) settings.createNestedObject(F("mdns")); + if(settings[F("http")].as().isNull()) settings.createNestedObject(F("http")); + if(settings[F("debug")].as().isNull()) settings.createNestedObject(F("debug")); + if(settings[F("telnet")].as().isNull()) settings.createNestedObject(F("telnet")); + if(settings[F("gui")].as().isNull()) settings.createNestedObject(F("gui")); #if HASP_USE_WIFI - if(!settings[F("wifi")].is()) settings[F("wifi")].to(); - changed = wifiGetConfig(settings[F("wifi")]); + changed = wifiGetConfig(settings[F("wifi")].as()); if(changed) { Log.verbose(F("WIFI: Settings changed")); writefile = true; } #if HASP_USE_MQTT - if(!settings[F("mqtt")].is()) settings[F("mqtt")].to(); changed = mqttGetConfig(settings[F("mqtt")]); if(changed) { Log.verbose(F("MQTT: Settings changed")); @@ -191,7 +202,6 @@ void configWriteConfig() } #endif #if HASP_USE_TELNET - if(!settings[F("telnet")].is()) settings[F("telnet")].to(); changed = telnetGetConfig(settings[F("telnet")]); if(changed) { Log.verbose(F("TELNET: Settings changed")); @@ -200,7 +210,6 @@ void configWriteConfig() } #endif #if HASP_USE_MDNS - if(!settings[F("mdns")].is()) settings[F("mdns")].to(); changed = mdnsGetConfig(settings[F("mdns")]); if(changed) { Log.verbose(F("MDNS: Settings changed")); @@ -208,8 +217,7 @@ void configWriteConfig() } #endif #if HASP_USE_HTTP - if(!settings[F("http")].is()) settings[F("http")].to(); - changed = httpGetConfig(settings[F("http")].as()); + changed = httpGetConfig(settings[F("http")]); if(changed) { Log.verbose(F("HTTP: Settings changed")); configOutput(settings[F("http")]); @@ -218,22 +226,19 @@ void configWriteConfig() #endif #endif - if(!settings[F("debug")].is()) settings[F("debug")].to(); - changed = debugGetConfig(settings[F("debug")].as()); + changed = debugGetConfig(settings[F("debug")]); if(changed) { Log.verbose(F("DEBUG: Settings changed")); writefile = true; } - if(!settings[F("gui")].is()) settings[F("gui")].to(); - changed = guiGetConfig(settings[F("gui")].as()); + changed = guiGetConfig(settings[F("gui")]); if(changed) { Log.verbose(F("GUI: Settings changed")); writefile = true; } - if(!settings[F("hasp")].is()) settings[F("hasp")].to(); - changed = haspGetConfig(settings[F("hasp")].as()); + changed = haspGetConfig(settings[F("hasp")]); if(changed) { Log.verbose(F("HASP: Settings changed")); writefile = true;