|
3 | 3 | The API is almost the same as with the WiFi Shield library,
|
4 | 4 | the most obvious difference being the different file you need to include:
|
5 | 5 | */
|
6 |
| -#include "ESP8266WiFi.h" |
| 6 | + |
| 7 | +#include <ESP8266WiFi.h> |
7 | 8 |
|
8 | 9 | void setup() {
|
9 | 10 | Serial.begin(115200);
|
| 11 | + Serial.println(F("\nESP8266 WiFi scan example")); |
10 | 12 |
|
11 |
| - // Set WiFi to station mode and disconnect from an AP if it was previously connected |
| 13 | + // Set WiFi to station mode |
12 | 14 | WiFi.mode(WIFI_STA);
|
| 15 | + |
| 16 | + // Disconnect from an AP if it was previously connected |
13 | 17 | WiFi.disconnect();
|
14 | 18 | delay(100);
|
15 |
| - |
16 |
| - Serial.println("Setup done"); |
17 | 19 | }
|
18 | 20 |
|
19 | 21 | void loop() {
|
20 |
| - Serial.println("scan start"); |
| 22 | + String ssid; |
| 23 | + int32_t rssi; |
| 24 | + uint8_t encryptionType; |
| 25 | + uint8_t* bssid; |
| 26 | + int32_t channel; |
| 27 | + bool hidden; |
| 28 | + int scanResult; |
21 | 29 |
|
22 |
| - // WiFi.scanNetworks will return the number of networks found |
23 |
| - int n = WiFi.scanNetworks(); |
24 |
| - Serial.println("scan done"); |
25 |
| - if (n == 0) { |
26 |
| - Serial.println("no networks found"); |
27 |
| - } else { |
28 |
| - Serial.print(n); |
29 |
| - Serial.println(" networks found"); |
30 |
| - for (int i = 0; i < n; ++i) { |
31 |
| - // Print SSID and RSSI for each network found |
32 |
| - Serial.print(i + 1); |
33 |
| - Serial.print(": "); |
34 |
| - Serial.print(WiFi.SSID(i)); |
35 |
| - Serial.print(" ("); |
36 |
| - Serial.print(WiFi.RSSI(i)); |
37 |
| - Serial.print(")"); |
38 |
| - Serial.println((WiFi.encryptionType(i) == ENC_TYPE_NONE) ? " " : "*"); |
39 |
| - delay(10); |
| 30 | + Serial.println(F("Starting WiFi scan...")); |
| 31 | + |
| 32 | + scanResult = WiFi.scanNetworks(/*async=*/false, /*hidden=*/true); |
| 33 | + |
| 34 | + if (scanResult == 0) { |
| 35 | + Serial.println(F("No networks found")); |
| 36 | + } else if (scanResult > 0) { |
| 37 | + Serial.printf(PSTR("%d networks found:\n"), scanResult); |
| 38 | + |
| 39 | + // Print unsorted scan results |
| 40 | + for (int8_t i = 0; i < scanResult; i++) { |
| 41 | + WiFi.getNetworkInfo(i, ssid, encryptionType, rssi, bssid, channel, hidden); |
| 42 | + |
| 43 | + Serial.printf(PSTR(" %02d: [CH %02d] [%02X:%02X:%02X:%02X:%02X:%02X] %ddBm %c %c %s\n"), |
| 44 | + i, |
| 45 | + channel, |
| 46 | + bssid[0], bssid[1], bssid[2], |
| 47 | + bssid[3], bssid[4], bssid[5], |
| 48 | + rssi, |
| 49 | + (encryptionType == ENC_TYPE_NONE) ? ' ' : '*', |
| 50 | + hidden ? 'H' : 'V', |
| 51 | + ssid.c_str()); |
| 52 | + delay(0); |
40 | 53 | }
|
| 54 | + } else { |
| 55 | + Serial.printf(PSTR("WiFi scan error %d"), scanResult); |
41 | 56 | }
|
42 |
| - Serial.println(""); |
43 | 57 |
|
44 | 58 | // Wait a bit before scanning again
|
45 | 59 | delay(5000);
|
|
0 commit comments