Websocket sur esp32 s2 en mode AP_STA

Bonjour à tous,
Je commande par websockets des servos d'un esp32 s2

Afin de pourvoir (plus tard) faire des mises à jour par OAT j'ai implanté un mode AP_STA

Donc l'esp sert de point d'accès le plus souvent et pour se connecter à Internet il doit être aussi client de ma box
.
Le setup commence par :

   WiFi.mode(WIFI_AP_STA);
// WiFi.mode(WIFI_MODE_APSTA);     fonctionne pareil

   WiFi.softAP(hostName, passHost);    // les identifiants en mode point d'accès
   WiFi.begin(ssid, password);                // les identifiants de ma box
   for (int i = 0; i < 15 && WiFi.status() != WL_CONNECTED; i++) {
          Serial.print(".");
          delay(1000);         }

Si je suis à côté de ma box (mon smartphone en mode point d'accès la liaison websockets se fait bien sur le réseau esp comme sur celui de mon smartphone.

En revanche si je coupe le point d'accès du smartphone en étant sur le réseau esp la liaison websockets s'arrête, l'esp freeze puis repart puis freeze de manièe aléatoire
Si je redémarre le smartphone en point d'accès, pourtant y a pas à ce moment là de routine qui tente de se reconnecter en mode STA, la liaison websockets en mode AP repart immédiatement
En arrière plan y a-t-il toujours tentative de reconnection en STA et pendant se temps là on freeze ?
Que faire ?

Tester au départ en mode STA, si échec passer en mode AP ? Pourtant le mode AP_STA fonctionne bien sans websockets

Que fait une commande WiFi.disconnect(); ?
A placer avant le mode AP si la connction ne se fait pas en mode STA ?

.........

Plus tard...

 WiFi.disconnect();
   WiFi.mode(WIFI_MODE_APSTA);
   WiFi.softAP(hostName, passHost); 
   Serial.print("ESP32 IP as soft AP: ");
   Serial.println(WiFi.softAPIP()); 
   Serial.println("");
   WiFi.begin(ssid, password);
   int i;
   for (i = 0; i < 15 && WiFi.status() != WL_CONNECTED; i++) { 
          Serial.print(".");
          delay(100); }
   if (i==15){
          WiFi.disconnect();
          WiFi.softAP(hostName, passHost);
          Serial.println("là");}
   else {
         Serial.println("IP address: ");
         Serial.println(WiFi.localIP()); 
         // vérifier si internet puis mise à jour
         }
   

Cela fonctionne mais je ne trouve pas cela très orthodoxe.
En cas de non connection en STA les Serial.print ne s'affichent plus mais les websockets fonctionnent C'est l'essentiel.

Maintenant si quelqu'un peut m'expliquer le pourquoi de ces comportements ...

Quel est ta carte ?

J'ai eu également un soucis d'instabilité lié à une mauvaise soudure sur mon modèle.

J'avais suivi ce lien : ESP32-S2 reboots when WiFi is used - Page 2 - ESP32 Forum

Esp32-S2 mini
Le lien est intéressant Merci
Pour mon cas c'est aussi un pb de wifi mais différent

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.