13 if (WifiManager::staticRef != NULL)
21 WifiManager::staticRef = NULL;
29 Serial.println(
"WifiManager.getState()=firstStart");
32 Serial.println(
"WifiManager.getState()=Disconnected");
35 Serial.println(
"WifiManager.getState()=InitialConnect");
38 Serial.println(
"WifiManager.getState()=Connected");
41 Serial.println(
"WifiManager.getState()=HaveSSIDSerial");
44 Serial.println(
"WifiManager.getState()=reconnect");
47 Serial.println(
"WifiManager.getState()=APWaitingForSTA");
74 WiFi.mode(WIFI_MODE_AP);
76 char macStr[18] = { 0 };
77 esp_wifi_get_mac(WIFI_IF_STA, mac);
78 sprintf(macStr,
"%02X-%02X", mac[4], mac[5]);
79 String defaultap =
"esp32-" + String(macStr);
96 WiFi.disconnect(
true);
99 WiFi.mode(WIFI_MODE_AP);
100 String mac = WiFi.macAddress();
106 Serial.println(
"Mac Address: " + mac);
126 Serial.println(
"Attempting to connect to WiFi network: " + String(ssid));
130 WiFi.disconnect(
true);
136 String mac = WiFi.macAddress();
137 Serial.println(
"Mac Address: " + mac);
138 Serial.println(
"Waiting for WIFI connection... \n\n");
140 WiFi.begin(ssid, pwd);
142 Serial.println(
"Wifi state already changed ");
152 Serial.println(
"scan start");
155 WiFi.disconnect(
true);
157 int16_t n = WiFi.scanComplete();
158 WiFi.scanNetworks(
true,
false,
false, 300);
165 bool myNetworkPresent =
false;
167 int16_t n = WiFi.scanComplete();
170 Serial.println(
"no networks found");
172 Serial.println(String(n) +
" networks found");
175 for (
int i = 0; i < n && myNetworkPresent ==
false; ++i) {
179 myNetworkPresent =
true;
181 "Default network found: " 182 + WiFi.WiFiScanClass::SSID(i));
188 if (!myNetworkPresent) {
189 Serial.println(
" Default AP is missing, searching for new one");
190 String bestNet=
"none";
191 int32_t bestStren=-5000;
192 for (
int i = 0; i < n; ++i) {
194 String tmp = WiFi.WiFiScanClass::SSID(i);
196 myNetworkPresent =
true;
197 if(WiFi.WiFiScanClass::RSSI(i)>bestStren){
198 bestNet=WiFi.WiFiScanClass::SSID(i);
199 bestStren=WiFi.WiFiScanClass::RSSI(i);
207 Serial.print(WiFi.WiFiScanClass::RSSI(i));
210 (WiFi.encryptionType(i) == WIFI_AUTH_OPEN) ?
214 if(myNetworkPresent){
223 Serial.println(
"Scan Failed!! " + String(n));
227 if (!myNetworkPresent) {
228 Serial.println(
"NO availible AP/Pass stored");
236 if (Serial.available() > 1) {
237 String tmp = Serial.readString();
239 if (tmp.substring(0, 3).compareTo(
"AP:") == 0
240 || tmp.substring(0, 3).compareTo(
"ap:") == 0) {
241 String got = tmp.substring(3, 18);
242 if (got.length() > 1) {
249 }
else if ((tmp.compareTo(
"STA") == 0 || tmp.compareTo(
"sta") == 0)
250 && tmp.length() == 3) {
255 }
else if ((tmp.compareTo(
"ERASE") == 0
256 || tmp.compareTo(
"erase") == 0) && tmp.length() == 5) {
257 Serial.println(
"Erasing all stored passwords");
260 }
else if ((tmp.compareTo(
"scan") == 0
261 || tmp.compareTo(
"SCAN") == 0) && tmp.length() == 4) {
262 Serial.println(
"Re-scanning and reconnecting");
271 Serial.println(
"New password: ");
310 Serial.println(
"Writing new pass ****");
321 Serial.println(
"Waiting for client to connect to AP "+String(millis()-
timeSinceAPStart));
335 "Timeouts for connection wait, reconnecting last connected: " 337 +
" last disconnected: " 339 " now "+String(now));
352 if(WiFi.scanComplete()!=WIFI_SCAN_RUNNING){
354 Serial.println(
"scan DONE!");
363 Serial.println(
"connect to WiFi network");
374 if (Serial.available() > 0) {
397 WiFi.disconnect(
true);
411 case SYSTEM_EVENT_STA_GOT_IP:
417 Serial.print(
"\n\n\nWiFi connected! DHCP took "+String(millis()-
timeOfLastConnect)+
" IP address: ");
418 Serial.print(WiFi.localIP());
419 Serial.print(
"\n\n\n");
423 case SYSTEM_EVENT_STA_DISCONNECTED:
428 WiFi.disconnect(
true);
429 Serial.println(
"\n\nWiFi lost connection, retry " + String(
434 case SYSTEM_EVENT_WIFI_READY:
437 Serial.println(
"WiFi lost connection, retry " + String(
440 Serial.println(
"ESP32 WiFi ready ");
443 case SYSTEM_EVENT_SCAN_DONE:
444 Serial.println(
"SYSTEM_EVENT_SCAN_DONE");
446 case SYSTEM_EVENT_STA_START:
449 case SYSTEM_EVENT_STA_STOP:
450 Serial.println(
"SYSTEM_EVENT_STA_STOP");
452 case SYSTEM_EVENT_STA_CONNECTED:
453 Serial.println(
" ESP32 station connected to AP ");
459 case SYSTEM_EVENT_STA_AUTHMODE_CHANGE:
460 Serial.println(
"SYSTEM_EVENT_STA_AUTHMODE_CHANGE");
462 case SYSTEM_EVENT_STA_LOST_IP:
463 Serial.println(
"SYSTEM_EVENT_STA_LOST_IP");
465 case SYSTEM_EVENT_STA_WPS_ER_SUCCESS:
466 Serial.println(
"SYSTEM_EVENT_STA_WPS_ER_SUCCESS");
468 case SYSTEM_EVENT_STA_WPS_ER_FAILED:
469 Serial.println(
"SYSTEM_EVENT_STA_WPS_ER_FAILED");
471 case SYSTEM_EVENT_STA_WPS_ER_TIMEOUT:
472 Serial.println(
"SYSTEM_EVENT_STA_WPS_ER_TIMEOUT");
474 case SYSTEM_EVENT_STA_WPS_ER_PIN:
475 Serial.println(
"SYSTEM_EVENT_STA_WPS_ER_PIN");
477 case SYSTEM_EVENT_AP_START:
478 Serial.println(
"SYSTEM_EVENT_AP_START");
480 case SYSTEM_EVENT_AP_STOP:
481 Serial.println(
"SYSTEM_EVENT_AP_STOP");
483 case SYSTEM_EVENT_AP_STACONNECTED:
484 Serial.println(
"SYSTEM_EVENT_AP_STACONNECTED");
487 case SYSTEM_EVENT_AP_STADISCONNECTED:
488 Serial.println(
"SYSTEM_EVENT_AP_STADISCONNECTED");
491 case SYSTEM_EVENT_AP_PROBEREQRECVED:
492 Serial.println(
"SYSTEM_EVENT_AP_PROBEREQRECVED");
494 case SYSTEM_EVENT_AP_STA_GOT_IP6:
495 Serial.println(
"SYSTEM_EVENT_AP_STA_GOT_IP6");
497 case SYSTEM_EVENT_ETH_START:
498 Serial.println(
"SYSTEM_EVENT_ETH_START");
500 case SYSTEM_EVENT_ETH_STOP:
501 Serial.println(
"SYSTEM_EVENT_ETH_STOP");
503 case SYSTEM_EVENT_ETH_CONNECTED:
504 Serial.println(
"SYSTEM_EVENT_ETH_CONNECTED");
506 case SYSTEM_EVENT_ETH_DISCONNECTED:
507 Serial.println(
"SYSTEM_EVENT_ETH_DISCONNECTED");
509 case SYSTEM_EVENT_ETH_GOT_IP:
510 Serial.println(
"SYSTEM_EVENT_ETH_GOT_IP");
512 case SYSTEM_EVENT_MAX:
513 Serial.println(
"SYSTEM_EVENT_MAX");
static void WiFiEventWifiManager(WiFiEvent_t event)
void WiFiEvent(WiFiEvent_t event)
enum connectionState whatToDoAfterScanning
static WifiManager * staticRef
long timeOfLastDisconnect
void connectToWiFi(const char *ssid, const char *pwd)
String getPasswordKey(String ssid)
enum connectionState state
enum connectionState getState()
String getPassword(String ssid, String defaultPass="none")
void setPassword(String ssid, String pass)