Tester un wifi quand l'ESP32 est en AP

Salut tout le monde, petite question technique, mon ESP32 pour sa première utilisation il démarre en AP (point d'accès) et je lui tape dessus sur l'url http://ip_ESP/tape_dessus pour lui setter le SSID et mot de passe d'un wifi. Sauf qu'il faudrait que je puisse tester si les informations envoyées sont valides donc j'aimerais qu'il essaye de se connecter puis si c'est good il répond à la requête HTTP 1 sinon 0. Sauf que le problème c'est que j'ai fait ça :

WiFi.softAP(ssid_PA.c_str(), password_PA.c_str());

    server.on(
        "/tape_dessus", HTTP_POST, [](AsyncWebServerRequest *request) {}, NULL, [](AsyncWebServerRequest *request, uint8_t *data, size_t len, size_t index, size_t total)
        {
          String response_request;

          response_request += String((char *)data);

          StaticJsonDocument<200> doc;

          DeserializationError error = deserializeJson(doc, response_request);

          if (error)
          {
            Serial.print(F("deserializeJson() failed: "));
            Serial.println(error.f_str());
            return;
          }

          const char *ssid = doc["ssid"];
          const char *password = doc["password"];

          WiFi.begin(ssid, password);

          time_machine = millis();

          while (WiFi.status() != WL_CONNECTED)
          {
            delay(500);
            Serial.print(".");
            if (millis() >= time_machine + 20000)
            {
              break;
            }
          }

          if (WiFi.status() == WL_CONNECTED)
          {
            WiFi.disconnect();
            /* code */
            preferences.putString("ssid", ssid);
            preferences.putString("password", password);

            request->send(200, "text/plain", "1");

          }
          else
          {
            request->send(200, "text/plain", "0");
          }
        });
    server.begin();

Le problème c'est quand il se connecte au WiFi il doit couper la requêtes donc sur mon client j'ai une erreur comme quoi la requêtes est en erreur.

Merci à vous

Salut
Connais-tu WifiManager ?

+1 c'est simple d'emploi

Je crois que je vais finir par prendre vos numéros ou e-mail ou faire un Telegram avec vous deux :grin:

Alors oui je connais sauf que je ne pouvais pas l’utiliser alors pourquoi je ne sais plus.

Mais bon qui ne tente rien n’a rien donc je vais re tester.

Par contre j’ai une question, est-ce qu’avec cette lib je peux mettre les infos via mon appli mobile avec des requêtes HTTP ? Et ensuite quand il se connecte au wifi est-ce que je peux faire quand même mon serveur web HTTP ?

Merci

Il y a des tutos :

Le traitement du serveur WEB est classique :

    server.handleClient();

Il n'est pas interdit d'ailleurs d'utiliser EspAsyncWebServer, beaucoup plus élaboré que WebServer, et que je conseille fortement pour une application complexe.

j'utilise cette lib pour mon montage ESP ➜ RPi + MQTT / HomeBridge.

mon dernier montage avec un Lilygo T7:

J'ai soudé un bouton (un peu à l'arrache) directement sur le module (entre GND et GPIO27) qui me sert à forcer la remise en configuration "d'usine" si je boot alors qu'il est en position basculée vers la marque rouge.

Au tout premier boot comme l'ESP ne connait pas de réseau Wi-Fi, il se met en mode point d'accès (AP).

Je rejoins le réseau Wi-Fi (on peut lui donner un nom) et comme il y a un portail captif, automatiquement mon iPhone me propose le panneau de configuration

Je choisis mon réseau Wi-Fi, rentre le mot de passe et ensuite j'ai accès à des paramètres supplémentaires (que vous pouvez définir avec des valeurs par défaut) où je peux rentrer des infos comme l'adresse du serveur MQTT, les topics, des valeurs min et max (ici c'est un capteur d'humidité) etc..

Je confirme ces données en cliquant sur Save ce qui transmet les informations du formulaire web à l'ESP.

Je valide et sauvegarde ces données dans un fichier de configuration en flash et l'ESP reboot et rejoint mon réseau Wi-Fi, relit les paramètres de configuration depuis le fichier en flash et tout roule.

Cet ESP tient dans un petit boitier "étanche" (IP68). C'est un type de boîtier prévu à l'origine pour des jonctions électriques à l'extérieur

Avec le bon ESP, on y loge l'ESP et une batterie et on peut utiliser les sorties d'un côté pour des fils vers les capteurs et de l'autre (si on le souhaite) une antenne pour une meilleure portée notamment en LORA).

En gérant bien le sleep ça me donne une très bonne autonomie (toujours en cours de tests depuis plusieurs semaines).

bref, ce n'est pas très compliqué à mettre en oeuvre et c'est une "MIT License" donc moins contaminant que LGPL V3 si c'est un souci pour vous.

On pourrait boire un verre un jour ???

A chaque fois que vous décrivez un de vos projet j'en bave, c'est propre et top !!!

Mise à part ça je crois que ça répond à mes questions je vais tester voir au cas où

Désolé je n'avais pas vu votre message, le gros bloc de J-M-L vous a fait de l'ombre, j'aurais dû réfléchir avant de poser ma question car j'avais la réponse dans mon code.

Pour EspAsyncWebServer ça tombe bien c'est ce que j'utilise donc super.

Je vais tester dès que je rentre voir si ça fonctionne et puis je vous redis ça

Merci à vous deux