From dc66a82695d37e6c15c38a91a26a4cf9cb51e9fd Mon Sep 17 00:00:00 2001 From: Thomas Basler Date: Sun, 19 Feb 2023 22:33:35 +0100 Subject: [PATCH] Fix typo in configuration. Relates to #603 Also increase buffer size to read whole config --- include/Configuration.h | 4 ++-- src/Configuration.cpp | 39 +++++++++++++++++++++++---------------- 2 files changed, 25 insertions(+), 18 deletions(-) diff --git a/include/Configuration.h b/include/Configuration.h index 8d88bbd..ab1eba3 100644 --- a/include/Configuration.h +++ b/include/Configuration.h @@ -4,7 +4,7 @@ #include #define CONFIG_FILENAME "/config.json" -#define CONFIG_VERSION 0x00011700 // 0.1.23 // make sure to clean all after change +#define CONFIG_VERSION 0x00011800 // 0.1.24 // make sure to clean all after change #define WIFI_MAX_SSID_STRLEN 31 #define WIFI_MAX_PASSWORD_STRLEN 64 @@ -29,7 +29,7 @@ #define DEV_MAX_MAPPING_NAME_STRLEN 63 -#define JSON_BUFFER_SIZE 6144 +#define JSON_BUFFER_SIZE 12288 struct CHANNEL_CONFIG_T { uint16_t MaxChannelPower; diff --git a/src/Configuration.cpp b/src/Configuration.cpp index 43e75e8..5568d34 100644 --- a/src/Configuration.cpp +++ b/src/Configuration.cpp @@ -55,7 +55,7 @@ bool ConfigurationClass::write() mqtt["password"] = config.Mqtt_Password; mqtt["topic"] = config.Mqtt_Topic; mqtt["retain"] = config.Mqtt_Retain; - mqtt["publish_invterval"] = config.Mqtt_PublishInterval; + mqtt["publish_interval"] = config.Mqtt_PublishInterval; JsonObject mqtt_lwt = mqtt.createNestedObject("lwt"); mqtt_lwt["topic"] = config.Mqtt_LwtTopic; @@ -192,7 +192,7 @@ bool ConfigurationClass::read() strlcpy(config.Mqtt_Password, mqtt["password"] | MQTT_PASSWORD, sizeof(config.Mqtt_Password)); strlcpy(config.Mqtt_Topic, mqtt["topic"] | MQTT_TOPIC, sizeof(config.Mqtt_Topic)); config.Mqtt_Retain = mqtt["retain"] | MQTT_RETAIN; - config.Mqtt_PublishInterval = mqtt["publish_invterval"] | MQTT_PUBLISH_INTERVAL; + config.Mqtt_PublishInterval = mqtt["publish_interval"] | MQTT_PUBLISH_INTERVAL; JsonObject mqtt_lwt = mqtt["lwt"]; strlcpy(config.Mqtt_LwtTopic, mqtt_lwt["topic"] | MQTT_LWT_TOPIC, sizeof(config.Mqtt_LwtTopic)); @@ -253,21 +253,21 @@ bool ConfigurationClass::read() void ConfigurationClass::migrate() { + File f = LittleFS.open(CONFIG_FILENAME, "r", false); + if (!f) { + MessageOutput.println(F("Failed to open file, cancel migration")); + return; + } + + DynamicJsonDocument doc(JSON_BUFFER_SIZE); + // Deserialize the JSON document + DeserializationError error = deserializeJson(doc, f); + if (error) { + MessageOutput.printf("Failed to read file, cancel migration: %s\r\n", error.c_str()); + return; + } + if (config.Cfg_Version < 0x00011700) { - File f = LittleFS.open(CONFIG_FILENAME, "r", false); - if (!f) { - MessageOutput.println(F("Failed to open file, cancel migration")); - return; - } - - DynamicJsonDocument doc(JSON_BUFFER_SIZE); - // Deserialize the JSON document - DeserializationError error = deserializeJson(doc, f); - if (error) { - MessageOutput.println(F("Failed to read file, cancel migration")); - return; - } - JsonArray inverters = doc["inverters"]; for (uint8_t i = 0; i < INV_MAX_COUNT; i++) { JsonObject inv = inverters[i].as(); @@ -279,6 +279,13 @@ void ConfigurationClass::migrate() } } + if (config.Cfg_Version < 0x00011800) { + JsonObject mqtt = doc["mqtt"]; + config.Mqtt_PublishInterval = mqtt["publish_invterval"]; + } + + f.close(); + config.Cfg_Version = CONFIG_VERSION; write(); read();