12 if (WifiManager::staticRef != NULL)
20 WifiManager::staticRef = NULL;
28 Serial.println(
"WifiManager.getState()=firstStart");
31 Serial.println(
"WifiManager.getState()=Disconnected");
34 Serial.println(
"WifiManager.getState()=InitialConnect");
37 Serial.println(
"WifiManager.getState()=Connected");
40 Serial.println(
"WifiManager.getState()=HaveSSIDSerial");
43 Serial.println(
"WifiManager.getState()=reconnect");
46 Serial.println(
"WifiManager.getState()=APWaitingForSTA");
73 WiFi.mode(WIFI_MODE_AP);
75 char macStr[18] = { 0 };
76 esp_wifi_get_mac(WIFI_IF_STA, mac);
77 sprintf(macStr,
"%02X-%02X", mac[4], mac[5]);
78 String defaultap =
"esp32-" + String(macStr);
95 WiFi.disconnect(
true);
98 WiFi.mode(WIFI_MODE_AP);
99 String mac = WiFi.macAddress();
105 Serial.println(
"Mac Address: " + mac);
125 Serial.println(
"Attempting to connect to WiFi network: " + String(ssid));
129 WiFi.disconnect(
true);
135 String mac = WiFi.macAddress();
136 Serial.println(
"Mac Address: " + mac);
137 Serial.println(
"Waiting for WIFI connection... \n\n");
139 WiFi.begin(ssid, pwd);
141 Serial.println(
"Wifi state already changed ");
151 Serial.println(
"scan start");
154 WiFi.disconnect(
true);
156 int16_t n = WiFi.scanComplete();
157 WiFi.scanNetworks(
true,
false,
false, 300);
164 bool myNetworkPresent =
false;
166 int16_t n = WiFi.scanComplete();
169 Serial.println(
"no networks found");
171 Serial.println(String(n) +
" networks found");
174 for (
int i = 0; i < n && myNetworkPresent ==
false; ++i) {
178 myNetworkPresent =
true;
180 "Default network found: " 181 + WiFi.WiFiScanClass::SSID(i));
187 if (!myNetworkPresent) {
188 Serial.println(
" Default AP is missing, searching for new one");
189 String bestNet=
"none";
190 int32_t bestStren=-5000;
191 for (
int i = 0; i < n; ++i) {
193 String tmp = WiFi.WiFiScanClass::SSID(i);
194 if (
preferences.getString(tmp.c_str(),
"none").compareTo(
"none") != 0) {
195 myNetworkPresent =
true;
196 if(WiFi.WiFiScanClass::RSSI(i)>bestStren){
197 bestNet=WiFi.WiFiScanClass::SSID(i);
198 bestStren=WiFi.WiFiScanClass::RSSI(i);
200 tmp.c_str(),
"none");
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: ");
296 Serial.println(
"Writing new pass ****");
307 Serial.println(
"Waiting for client to connect to AP "+String(millis()-
timeSinceAPStart));
321 "Timeouts for connection wait, reconnecting last connected: " 323 +
" last disconnected: " 325 " now "+String(now));
338 if(WiFi.scanComplete()!=WIFI_SCAN_RUNNING){
340 Serial.println(
"scan DONE!");
349 Serial.println(
"connect to WiFi network");
360 if (Serial.available() > 0) {
383 WiFi.disconnect(
true);
397 case SYSTEM_EVENT_STA_GOT_IP:
403 Serial.print(
"\n\n\nWiFi connected! DHCP took "+String(millis()-
timeOfLastConnect)+
" IP address: ");
404 Serial.print(WiFi.localIP());
405 Serial.print(
"\n\n\n");
409 case SYSTEM_EVENT_STA_DISCONNECTED:
414 WiFi.disconnect(
true);
415 Serial.println(
"\n\nWiFi lost connection, retry " + String(
420 case SYSTEM_EVENT_WIFI_READY:
423 Serial.println(
"WiFi lost connection, retry " + String(
426 Serial.println(
"ESP32 WiFi ready ");
429 case SYSTEM_EVENT_SCAN_DONE:
430 Serial.println(
"SYSTEM_EVENT_SCAN_DONE");
432 case SYSTEM_EVENT_STA_START:
435 case SYSTEM_EVENT_STA_STOP:
436 Serial.println(
"SYSTEM_EVENT_STA_STOP");
438 case SYSTEM_EVENT_STA_CONNECTED:
439 Serial.println(
" ESP32 station connected to AP ");
445 case SYSTEM_EVENT_STA_AUTHMODE_CHANGE:
446 Serial.println(
"SYSTEM_EVENT_STA_AUTHMODE_CHANGE");
448 case SYSTEM_EVENT_STA_LOST_IP:
449 Serial.println(
"SYSTEM_EVENT_STA_LOST_IP");
451 case SYSTEM_EVENT_STA_WPS_ER_SUCCESS:
452 Serial.println(
"SYSTEM_EVENT_STA_WPS_ER_SUCCESS");
454 case SYSTEM_EVENT_STA_WPS_ER_FAILED:
455 Serial.println(
"SYSTEM_EVENT_STA_WPS_ER_FAILED");
457 case SYSTEM_EVENT_STA_WPS_ER_TIMEOUT:
458 Serial.println(
"SYSTEM_EVENT_STA_WPS_ER_TIMEOUT");
460 case SYSTEM_EVENT_STA_WPS_ER_PIN:
461 Serial.println(
"SYSTEM_EVENT_STA_WPS_ER_PIN");
463 case SYSTEM_EVENT_AP_START:
464 Serial.println(
"SYSTEM_EVENT_AP_START");
466 case SYSTEM_EVENT_AP_STOP:
467 Serial.println(
"SYSTEM_EVENT_AP_STOP");
469 case SYSTEM_EVENT_AP_STACONNECTED:
470 Serial.println(
"SYSTEM_EVENT_AP_STACONNECTED");
473 case SYSTEM_EVENT_AP_STADISCONNECTED:
474 Serial.println(
"SYSTEM_EVENT_AP_STADISCONNECTED");
477 case SYSTEM_EVENT_AP_PROBEREQRECVED:
478 Serial.println(
"SYSTEM_EVENT_AP_PROBEREQRECVED");
480 case SYSTEM_EVENT_AP_STA_GOT_IP6:
481 Serial.println(
"SYSTEM_EVENT_AP_STA_GOT_IP6");
483 case SYSTEM_EVENT_ETH_START:
484 Serial.println(
"SYSTEM_EVENT_ETH_START");
486 case SYSTEM_EVENT_ETH_STOP:
487 Serial.println(
"SYSTEM_EVENT_ETH_STOP");
489 case SYSTEM_EVENT_ETH_CONNECTED:
490 Serial.println(
"SYSTEM_EVENT_ETH_CONNECTED");
492 case SYSTEM_EVENT_ETH_DISCONNECTED:
493 Serial.println(
"SYSTEM_EVENT_ETH_DISCONNECTED");
495 case SYSTEM_EVENT_ETH_GOT_IP:
496 Serial.println(
"SYSTEM_EVENT_ETH_GOT_IP");
498 case SYSTEM_EVENT_MAX:
499 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)
enum connectionState state
enum connectionState getState()