Nel mio progetto uso LittleFS per salvare i dati di configurazione ma ho uno strano comportamento quando recupero i dati.
Queste sono le variabili
const char* ssid = "ssid";
const char* password = "password";
Nel setup avvio la funzione per recuperare i dati
loadSettings(LittleFS, "/config.json");
La funzione è fatta così
void loadSettings(fs::FS &fs, const char *path) {
File fileConfig = fs.open(path, "r");
if (!fileConfig) {
Serial.print("Impossibile aprire il file per la lettura: ");
return;
}
StaticJsonDocument<1024> configLoad;
DeserializationError error = deserializeJson(configLoad, fileConfig);
fileConfig.close();
if (error) {
Serial.print("deserializeJson() fallito: ");
Serial.println(error.c_str());
return;
}
ssid = configLoad["ssid"] | "N/A";
password = configLoad["password"] | "N/A";
myChannelNumber = configLoad["myChannelNumber"] | -1;
myWriteAPIKey = configLoad["myWriteAPIKey"] | "N/A";
thingspeak = configLoad["thingspeak"] | -1;
sonda1 = configLoad["sonda1"] | "N/A";
sonda2 = configLoad["sonda2"] | "N/A";
sonda3 = configLoad["sonda3"] | "N/A";
mitt = configLoad["mitt"] | "N/A";
dest = configLoad["dest"] | "N/A";
impianto = configLoad["impianto"] | "N/A";
Serial.print("ssid: " + ssid);
Serial.print("Password: " + password);
delay(1000);
}
Qui sul monitor serial visualizzo correttamente il ssid e la password !
Poi però il listato continua con
lcd.setCursor(3, 0);
lcd.print("Connecting to ");
lcd.setCursor(0, 1);
lcd.print(ssid);
delay(1000);
WiFi.mode(WIFI_STA);
Serial.print("X" + ssid + "X");
Serial.print("X" + password + "X");
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
lcd.clear();
lcd.setCursor(1, 0);
lcd.write(byte(10));
lcd.setCursor(3, 0);
lcd.print("Not connected");
lcd.setCursor(3, 1);
lcd.print("..searching..");
}
delay(500);
lcd.clear();
lcd.setCursor(2, 1);
lcd.print("WiFi connected");
lcd.setCursor(2, 2);
lcd.print("IP: ");
lcd.setCursor(6, 2);
lcd.print(WiFi.localIP());
delay(2000);
lcd.clear();
e qui ssid e password non sono più corretti , nel monitor seriale mi scrive:
19:49:05.565 -> X4��X
19:49:05.565 -> X�X
Perchè i due dati vengono persi?
Grazie a chi mi aiuta!