ESP8266\WifiMulti\"Non riesco a connettermi a 2 ssid differenti"

Ciao a tutti.
Premesso che sono un neofita , ho cercato di creare questo sketch.
Serve per eccitare un relay da 2 Hotspot differenti.
Il problema è : una volta agganciato uno dei due, che rimanga connesso o meno, non riesce a raggiungere l'altro fino al reset.
Dove sbaglio?
Grazie in anticipo.

#include <Arduino.h>
#include <ESP8266WiFi.h>
#include <WiFiClient.h>
#include <ESP8266WiFiMulti.h> 

ESP8266WiFiMulti WifiMulti;
 
const char* ssid1 = "User1";
const char* password1 = "Password";
const char* ssid2 = "Utente2";
const char* password2 = "Password";

#define RELAY 0 

void setup()
{
  Serial.begin(115200);
  for (int i = 0; i < 4; i++){
    Serial.print(".");
    Serial.flush();
    delay(1000);
  }
 
  pinMode(RELAY,OUTPUT);
  digitalWrite(RELAY, HIGH);

  WiFi.mode(WIFI_STA);

  WifiMulti.addAP(ssid1, password1);
  WifiMulti.addAP(ssid2, password2);
 
  while (WifiMulti.run() != WL_CONNECTED) 
  {
    delay(1500);
    Serial.print(".");
  }
  digitalWrite(RELAY,LOW);
  delay(500);
}

void loop(void){
   if  (WiFi.status() != WL_CONNECTED ) {
    digitalWrite(RELAY,HIGH);

  WifiMulti.addAP(ssid1, password1);
  WifiMulti.addAP(ssid2, password2);

    Serial.print("WHILE");
     delay(2500);
  } 
  if (WiFi.status() == WL_CONNECTED) 
  {
    Serial.print(" CONNESSO ");
    
    digitalWrite(RELAY,LOW);
    delay(500);
  } else {
    Serial.print(" NON CONNESSO ");
    digitalWrite(RELAY,HIGH);
    delay(500);
   }
}

Non sono un esperto di ESP32 e wifi, ma da quel che leggo, l'idea della lib NON è quella di multiconnessione, ma di avere una lista di access point, ti colleghi al primo, se cade, lui in automatico usa il secondo, poi il terzo e così via.
"... the library make the ESP connect to the next available access point if the current connection is lost..."

1 Like

Dentro il while dovrebbe ripetere la ricerca del a.c.
Invece si fissa su uno e li rimane.
A questo punto, presumo, ci sia un contatore.
Provo a cercarlo ed a resettarlo nel while.
Intanto grazie.

Nella setup() fai
while (WifiMulti.run() != WL_CONNECTED)

Mentre nella loop() fai
(WiFi.status() == WL_CONNECTED)
perché?

Stai usando due metodi differenti per due oggetti differenti

Inoltre temo che aggiungere indiscriminatamente
WifiMulti.addAP(ssid1, password1); WifiMulti.addAP(ssid2, password2);
nella loop(), incasini discretamente l'accesso al Wifi,oltre a consumare molta memoria per nulla

1 Like