riconnessione WIFI

Buon giorno a tutti,
vorrei implementare nel mio sketch un sistema che riconnetta il WIFI in caso di disconnesssione dalla rete di casa.
Ho visto diverse soluzioni nel forum ma vorrei sapere quale è quella definitiva consigliata.
Grazie
ciao

Guarda, prendedo spunto da vari articoli trovari in rete, io mi sono scritto una piccola funzioncina che, nel setup() richiamo in un while() e nel loop() richiamo ad ogni giro (è la prima riga del loop) ...

bool checkWiFi(void) {
	static bool WiFiOk = false;
	//
   if ( !WiFiOk ) {
      WiFi.begin ( ssid, password );
      delay ( 500 );
#ifdef DEBUG
      Serial.print ( "." );
#endif		
      if ( WiFi.status() == WL_CONNECTED ) {
         WiFiOk = true;
#ifdef DEBUG
      Serial.println ( );
      Serial.println ( "WiFi connection done." );
#endif			
      } else {
         WiFi.end();
      }
   } else if ( WiFiOk && ( WiFi.status() != WL_CONNECTED ) ) {
      WiFi.end();
      WiFiOk = false;
   }
	return WiFiOk;
}

Praticamente, nel setup(), quando ti devi connetere alla rete e NON vuoi proseguire se non ti connetti, metti:

while ( !checkWiFi() ) { }

... e resti nel while() fino alla connessione avvenuta, mentre nel loop() come prima riga metti:

checkWiFi();

... che NON è bloccante (salvo un certo delay() nel caso tenti di riconnettersi) e, o riesce a riconettersi, o comunque ritorna ed il loop() prosegue. Se invece vuoi bloccare anche il loop() se non sei connesso, la usi come nel setup().

Provala e fammi sapere :wink:

Guglielmo

P.S.: Prevede due variabili globali, ssid e password che contengono i corretti valori di connessione.

grazie mille Guglielmo,
ho provato e sembra funzionare correttamente: ho verificato che ripete il wifibegin quando cade la connessione .
Domanda: > quale è lo scopo del wifiend ? ( chiudere il modulo wifi ?).
ciao

Elesoft:
Domanda: > quale è lo scopo del wifiend ? ( chiudere il modulo wifi ?).

... spegne il WiFi, ripulisce tutto e permette la riconnessione senza problemi. :wink:

Occhio, se ben ricordo, è un metodo che, sulla vecchia libreria WiFi classica, NON è presente (c'è il metodo disconnect()). E' invece presente nelle librerie per le più evolute schede della famiglia MKR ...

Guglielmo

thanks !

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