Reputation: 11
I am recently working on a traffic monitoring projet based on counting how many wi-fi devices are present. I want to get a list of available AP SSIDs and all the client devices that are connected to that AP. Basically, I want to get a list of information like follows:
Network-Name BSSID RSSI
Client-Mac1 RSSI
Client-Mac2 RSSI
Client-Mac3 RSSI
Orphan Clients:
Client-Mac4 RSSI
I hope this can be done by using a raspberry pi with Wi-Fi adapter using python. If that is not possible, I have an ESP 8266 and can link it to a Linux machine/Arduino.
Please post your ideas about how this could be implemented with what type of platform/library. It would be the best if you can include some code samples!
Upvotes: 1
Views: 489
Reputation: 1359
Copied from esp8266 examples - ESP8266Wifi - WifiScan: Then you can send it using serial connection to your main process
/*
* This sketch demonstrates how to scan WiFi networks.
* The API is almost the same as with the WiFi Shield library,
* the most obvious difference being the different file you need to include:
*/
#include "ESP8266WiFi.h"
void setup() {
Serial.begin(115200);
// Set WiFi to station mode and disconnect from an AP if it was previously connected
WiFi.mode(WIFI_STA);
WiFi.disconnect();
delay(100);
Serial.println("Setup done");
}
void loop() {
Serial.println("scan start");
// WiFi.scanNetworks will return the number of networks found
int n = WiFi.scanNetworks();
Serial.println("scan done");
if (n == 0)
Serial.println("no networks found");
else
{
Serial.print(n);
Serial.println(" networks found");
for (int i = 0; i < n; ++i)
{
// Print SSID and RSSI for each network found
Serial.print(i + 1);
Serial.print(": ");
Serial.print(WiFi.SSID(i));
Serial.print(" (");
Serial.print(WiFi.RSSI(i));
Serial.print(")");
Serial.println((WiFi.encryptionType(i) == ENC_TYPE_NONE)?" ":"*");
delay(10);
}
}
Serial.println("");
// Wait a bit before scanning again
delay(5000);
}
Upvotes: 1