Bonsoir à toutes et à tous,
Me voilà de retour avec mon routeur photovoltaïque.
Je souhaite pouvoir enregistrer les paramètres (ssid et password) de mon routeur en utilisant le mode access point.
Le principe (que vous connaissez certainement) est de créer un fichier dans lequel je vais pouvoir, grâce à une connexion en access point, enregistrer les (ssid et password) de mon routeur. Dès lors que ce fichier existera, mon logiciel en extraira ces données pour se connecter en mode Station cette fois à mon routeur.
Pour ce faire, je crée un formulaire dans une page Web dans laquelle je peux renseigner ces données. Un bouton Valider fait une requête pour transmettre ces données à mon logiciel.
Mon problème : après avoir renseigné les données et cliqué sur le bouton Valider, j'aimerais afficher dans cette même page Web sous le formulaire le résultat de ma requête sous la forme : Identification du routeur : réussie ou échouée.
Je n'arrive pas à faire le lien entre le résultat de ma requête et la ligne que je veux écrire.
Voilà mon sketch d'essai :
#include <WiFi.h>
#include "routes.h"
const char* ssid = "ESP32-Access-Point";
const char* password = "123456789";
AsyncWebServer server(80);
void setup() {
Serial.begin(115200);
Serial.print("Setting AP (Access Point)…"); // Connect to Wi-Fi network with SSID and password
// Remove the password parameter, if you want the AP (Access Point) to be open
WiFi.softAP(ssid, password);
IPAddress IP = WiFi.softAPIP();
Serial.print("AP IP address: ");
Serial.println(IP);
setupRoutes(server);
server.begin();
}
void loop(){
}
la page HTML :
#ifndef HTML_AP_H
#define HTML_AP_H
String pageHTML_AP() {
String HTML = R"rawliteral(
<!DOCTYPE html>
<html>
<head>
<meta content="text/html; charset=UTF-8" http-equiv="content-type">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>ESP32 Routeur photovoltaïque</title>
<style> body {font-family: Arial, Helvetica, sans-serif;}
</style>
</head>
<body>
<h1 style="text-align: center;">Routeur photovoltaïque ESP32</h1>
<h2 style="text-align: center;">Paramètres du routeur WiFi</h2>
<form action="/submit" method="get">
<label for="line1">Identifiant :</label>
<input type="text" id="line1" name="line1"><br><br>
<label for="line2">Mot de passe :</label>
<input type="text" id="line2" name="line2"><br><br>
<input type="submit" value="Valider">
</form>
<p>Identification du routeur WiFi : <span id="cnxWiFi">...</span></p>
</body>
</html>
)rawliteral";
return HTML;
}
#endif
et les routes :
#ifndef ROUTES_H
#define ROUTES_H
#include <ESPAsyncWebServer.h>
#include "html_AP.h"
uint32_t t0;
bool WiFiOK;
void setupRoutes(AsyncWebServer &server) {
server.on("/", HTTP_GET, [](AsyncWebServerRequest *request) { // Affichage de la page HTML
request->send(200, "text/html", pageHTML_AP());
});
server.on("/submit", HTTP_GET, [] (AsyncWebServerRequest *request) {
String Ident = request->getParam("line1")->value();
String MdP = request->getParam("line2")->value();
Serial.println("Identifiant : " + Ident);
Serial.println("Mot de passe : " + MdP);
t0 = millis();
WiFiOK = true;
WiFi.begin(Ident, MdP);
Serial.println("\nConnecting");
while (WiFi.status() != WL_CONNECTED) {
Serial.print(".");
delay(100);
if (millis()-t0 > 10000) {
WiFi.softAP("ESP32-Access-Point", "123456789");
Serial.println("Connection échouée");
request->send(200, "text/plain", "échouée");
WiFiOK= false;
}
}
if (WiFiOK) {
Serial.println("\nConnected to the WiFi network");
Serial.print("Local ESP32 IP: ");
Serial.println(WiFi.localIP());
request->send(200, "text/plain", "réussie");
}
});
}
#endif
En l'état actuel des choses, si mon identification est réussie, cela m'affiche Connexion réussie en tout petit dans une nouvelle page et ça plante si ce n'est pas réussi, mais ça, c'est un autre problème que j'aurai à résoudre. Ce réussie, je voudrais le voir affiché sous mon formulaire.
Cordialement.
Pierre.