diff --git a/Arduino/CanGrow/CanGrow.ino b/Arduino/CanGrow/CanGrow.ino index 25d297e..a7b175a 100644 --- a/Arduino/CanGrow/CanGrow.ino +++ b/Arduino/CanGrow/CanGrow.ino @@ -123,20 +123,16 @@ void setup() { LFS_init(); - if(existFile(CANGROW_CFG)) { - readFile(CANGROW_CFG); - Serial.printf(":: config.GrowName: %s \n", config.GrowName); - Serial.printf(":: load config.json \n"); - loadConfig(config); - Serial.printf(":: config.GrowName: %s \n", config.GrowName); - Serial.print(":: config.DoG: "); - Serial.println(config.DoG); - - + Serial.printf(":: Before config.test: %s\n", config.test); + loadConfig(); + if(!existFile(CANGROW_CFG)) { + writeFile(CANGROW_CFG, "asd"); } else { - writeFile(CANGROW_CFG, "{}"); + readFile(CANGROW_CFG); } + Serial.printf(":: After config.test: %s\n", config.test); + // read the configfile from LittleFS /* File lfs_configfile = LittleFS.open(configfile, "r"); if(!lfs_configfile) { @@ -171,7 +167,7 @@ bool alrdySaved = false; void loop() { if((digitalRead(PinWIPE) != PinWIPE_default) && (alrdySaved == false)) { Serial.println(":: [LOOP] PinWIPE is triggered, saving config.json"); - saveConfig(config); + saveConfig(); alrdySaved = true; } else if( (digitalRead(PinWIPE) != PinWIPE_default) && (alrdySaved == true) ) { alrdySaved = true; diff --git a/Arduino/CanGrow/include/CanGrow.h b/Arduino/CanGrow/include/CanGrow.h index b2d0d58..d4ac8e4 100644 --- a/Arduino/CanGrow/include/CanGrow.h +++ b/Arduino/CanGrow/include/CanGrow.h @@ -41,6 +41,7 @@ struct Config_WiFi { Config_WiFi configWifi; + struct Config_System { byte ntpOffset; unsigned short maintenanceDuration; @@ -49,9 +50,10 @@ struct Config_System { Config_System configSystem; + struct Config_Grow { - char GrowName[64]; - unsigned short DoG; + char growName[64]; + unsigned short dayOfGrow; byte daysVeg; byte daysBloom; byte lightHoursVeg; @@ -73,8 +75,7 @@ Config_Grow configGrow; struct Config { - char GrowName[64]; - int DoG; + char test[16] = "123"; }; Config config; diff --git a/Arduino/CanGrow/include/CanGrow_LittleFS.h b/Arduino/CanGrow/include/CanGrow_LittleFS.h index 92d0a21..e3c84fe 100644 --- a/Arduino/CanGrow/include/CanGrow_LittleFS.h +++ b/Arduino/CanGrow/include/CanGrow_LittleFS.h @@ -148,7 +148,7 @@ void deleteFile(const char *path) { } // https://arduinojson.org/v7/example/config/ -void loadConfig(Config& config) { +bool loadConfig() { #ifdef ESP8266 File file = LittleFS.open(CANGROW_CFG, "r"); #endif @@ -158,23 +158,31 @@ void loadConfig(Config& config) { File file = fs.open(CANGROW_CFG); #endif + Serial.printf(":: [LittleFS] loading config from: %s\n", CANGROW_CFG); + JsonDocument doc; // Deserialize the JSON document DeserializationError error = deserializeJson(doc, file); - if (error) + if(error) { Serial.printf(":: [LittleFS] FAILED to load config: %s\n", CANGROW_CFG); + if (existFile(CANGROW_CFG)) { + readFile(CANGROW_CFG); + } + return false; + } // Copy values from the JsonDocument to the Config - strlcpy(config.GrowName, - doc["GrowName"] | "CanGrow", - sizeof(config.GrowName)); - config.DoG = doc["DoG"] | 3; + strlcpy(config.test, + doc["test"] | "test456", + sizeof(config.test)); // Close the file (Curiously, File's destructor doesn't close the file) file.close(); + Serial.println(":: [LittleFS] config successfully loaded."); + return true; } -void saveConfig(Config& config) { +void saveConfig() { #ifdef ESP8266 File file = LittleFS.open(CANGROW_CFG, "w"); #endif @@ -191,10 +199,47 @@ void saveConfig(Config& config) { Serial.printf(":: [LittleFS] opened for writing %s\n", CANGROW_CFG); } + /* + * Building config.json here + */ JsonDocument doc; - doc["GrowName"] = config.GrowName; - doc["DoG"] = config.DoG + 1 ; + // * Root * + doc["test"] = config.test; + + // * WiFi * + JsonObject objWifi = doc["wifi"].add(); + objWifi["ssid"] = configWifi.ssid; + objWifi["password"] = configWifi.password; + objWifi["ip"] = configWifi.ip; + objWifi["netmask"] = configWifi.netmask; + objWifi["gateway"] = configWifi.gateway; + objWifi["dns"] = configWifi.dns; + objWifi["dhcp"] = configWifi.dhcp; + + // * System * + JsonObject objSystem = doc["system"].add(); + objSystem["ntpOffset"] = configSystem.ntpOffset; + objSystem["maintenanceDuration"] = configSystem.maintenanceDuration; + objSystem["esp32camIp"] = configSystem.esp32camIp; + + // * Grow * + JsonObject objGrow = doc["grow"].add(); + objGrow["growName"] = configGrow.growName; + objGrow["dayOfGrow"] = configGrow.dayOfGrow; + objGrow["daysVeg"] = configGrow.daysVeg; + objGrow["daysBloom"] = configGrow.daysBloom; + objGrow["lightHoursVeg"] = configGrow.lightHoursVeg; + objGrow["lightHoursBloom"] = configGrow.lightHoursBloom; + objGrow["sunriseHour"] = configGrow.sunriseHour; + objGrow["sunriseMinute"] = configGrow.sunriseMinute; + objGrow["sunFade"] = configGrow.sunFade; + objGrow["sunFadeDuration"] = configGrow.sunFadeDuration; + + /* + * END Building config.json here + */ + // Serialize JSON to file if (serializeJson(doc, file) == 0) {