There is a simple code to connect to the Wifi network. My project needs the correct Wifi connection status, but ESP gives false connection information. When I turn off the WiFi router, the ESP connects to a non-existent network and gives the connection status with a non-existent IP.
How to get real WiFi network connection status?
Here is the info from Serial.print:
13:28:22.762 -> ........
13:28:25.153 -> Unable to Connect to mynetwork
13:28:25.186 -> Status WiFi: 3
13:28:25.186 -> Successfully connected to mynetwork
13:28:25.186 -> IP Address: 192.168.1.101
13:28:25.186 -> Status: 3
13:28:25.186 -> Mode: STA
13:28:25.186 -> PHY mode: N
13:28:25.186 -> Channel: 2
13:28:25.186 -> AP id: 0
13:28:25.186 -> Status: 5
13:28:25.186 -> Auto connect: 1
13:28:25.186 -> SSID (10): mynetwork
13:28:25.186 -> Passphrase (17): **************
13:28:25.186 -> BSSID set: 0
Then I turn on the WiFi router and get the following information:
14:29:25.186 -> IP Address: 192.168.1.3
14:29:25.186 -> Status WiFi: 3
14:29:25.186 -> Mode: STA
14:29:25.186 -> PHY mode: N
14:29:25.186 -> Channel: 2
14:29:25.186 -> AP id: 0
14:29:25.186 -> Status: 5
14:29:25.186 -> Auto connect: 1
14:29:25.186 -> SSID (10): mynetwork
14:29:25.186 -> Passphrase (17): **************
14:29:25.186 -> BSSID set: 0
My code:
#include <ESP8266WiFi.h>
#include <EEManager.h>
const char* ssid = "mynetwork";
const char* password = "******************";
void startWiFi() {
//Try and Connect to the Network
WiFi.mode(WIFI_STA);
WiFi.begin(ssid, password);
Serial.print("Connecting to ");
Serial.print(ssid);
Serial.println("...");
//Wait for WiFi to connect for a maximum timeout of 8 seconds
while (WiFi.status() != WL_CONNECTED && retries < 9)
{
Serial.print(".");
retries++;
delay(1200);
}
Serial.println();
//Inform the user whether the timeout has occured, or the ESP8266 is connected to the internet
if (retries == 9) //Timeout has occured
{
Serial.print("Unable to Connect to ");
Serial.println(ssid);
Serial.print("Status WiFi: ");
Serial.println(WiFi.status());
}
if (WiFi.status() == WL_CONNECTED) //WiFi has succesfully Connected
{
Serial.print("Successfully connected to ");
Serial.println(ssid);
Serial.print("IP Address: ");
Serial.println(WiFi.localIP());
Serial.print("Status WiFi: ");
Serial.println(WiFi.status());
}
WiFi.printDiag(Serial);
}
void setup()
{
Serial.begin(115200);
delay(500);
Serial.println();
startWiFi();
}
void loop()
{
static uint32_t lastTime = 0; // millis() memory
if (millis() - lastTime >= 1000)
{
Serial.print("Status WiFi: ");
Serial.println(WiFi.status());
Serial.print("IP Address: ");
Serial.println(WiFi.localIP());
WiFi.printDiag(Serial);
}
}