Après avoir réussi à trouver mon routeur et avoir vérifier qu'avec les bons paramètres je l'ouvrais, j'ai enregistré ces paramètres dans un fichier.
File file = LittleFS.open(FchWiFi, FILE_WRITE); // Création du fichier de paramètre Routeur
file.print(Ident+"\n");
file.print(MdP+"\n");
file.close();
Maintenant, je veux me connecter directement au routeur en utilisant les paramètres inscrits dans ce fichier :
String ssid = "Freebox-XXXXXX"; // Nom de la box Wi-Fi;
String password = "super-mot-de-passe-complique"; // MDP de la box Wi-Fi;
...
if (LittleFS.exists(FchWiFi)) { // Connexion en mode Station
File file = LittleFS.open(FchWiFi, FILE_READ);
ssid = file.readString();
password = file.readString();
file.close();
Serial.println(ssid);
Serial.println(password);
WiFi.begin(ssid, password);
Serial.println("\nConnecting");
while (WiFi.status() != WL_CONNECTED) {
Serial.print(".");
delay(100);
}
Serial.println("\nConnected to the WiFi network");
Serial.print("Local ESP32 IP: ");
Serial.println(WiFi.localIP());
} else { // Recherche du routeur WiFi
Serial.print("Setting AP (Access Point)…");
WiFi.softAP(ssid_AP, NULL);
IPAddress IP = WiFi.softAPIP();
Serial.print("AP IP address: "); Serial.println(IP);
setupRoutes_AP(server);
}
Et bien, ça ne fonctionne pas, la connexion ne veut pas se faire.
Si dans le sketch ci-dessus, j'enlève toute la partie relative au fichier, alors ssid et password sont ceux définis au début du sketch et ça fonctionne.
Pourtant, lorsque j'utilise les paramètres du fichier, le moniteur série me montre exactement les mêmes textes que ceux définis au début.
Alors, quelle est la différence entre ceux définis au début et ceux issus de mon fichier ?
Essayez de visualiser ce qui est inscrit dans le fichier... Chez vous , pas sur le site...
Si votre MdP comporte des caractères spéciaux et que vous les ayez entrés depuis une page html, ils sont convertis dans des séquences escape, et ce sont ces séquences qui sont enregistrées dans votre fichier.
Si c'est cela, il vous faut de-escaper ces séquences avant de les envoyer au routeur...
Bonne bidouille,
MicroQuettas
PS : j'ai quasiment le même système de connexion à mes bidouilles depuis des années, mais réalisé avec une techno "à-la-papa"...
la fonction file.readString() lit tout ce qui est dispo dans le flux (c'est une fonction de la classe Stream) jusqu'à ce qu'un timeout arrive, donc vous lisez tout le fichier et ensuite il n'y a plus rien a lire, ça attend une seconde et ça retourne tout ce qui avait dans le fichier.
le second appel n'a rien à lire, il attend le timeout d'une seconde et retourne une chaîne vide
en donnant le caractère de fin, avec file.readStringUntil() vous lui dites quand arrêter la lecture dans le fichier ➜ au moment où il rencontrera la fin de ligne.
et comme vous aviez fait
file.print(Ident+"\n");
file.print(MdP+"\n");
ça correspond bien au contenu du fichier.
Et vous avez de la "chance" car il n'y a pas un '\r' invisible qui traine et qui mettrait le bazar si vous aviez fait