Hi I have a sketch which looks up MAC addresses of wifi phones connected to my esp8266. I need to have those MAC addresses saved to these bytes on my EEPROM.
I figured out how I can save if just one phone is connected. But my newbee issue is I don't know how to save them if there is 2 or 3 or 4 phones connected (4 is max connections so it will be 1, 2, 3, or 4 current connections)
Things I'm trying to accomplish:
If MAC address is already saved don't do anything
if not
Overwrite the OLDEST entry to the EEPROM
and do the same for 2nd 3rd and 4th connected MAC if 2nd, 3rd, or 4th are even connected.
// FIRST MAC SHOULD SAVE HERE
EEPROM.write(11, stat_info->bssid[0]);
EEPROM.write(12, stat_info->bssid[1]);
EEPROM.write(13, stat_info->bssid[2]);
EEPROM.write(14, stat_info->bssid[3]);
EEPROM.write(15, stat_info->bssid[4]);
EEPROM.write(16, stat_info->bssid[5]);
// 2ND MAC SHOULD SAVE HERE
EEPROM.write(21, stat_info->bssid[0]);
EEPROM.write(22, stat_info->bssid[1]);
EEPROM.write(23, stat_info->bssid[2]);
EEPROM.write(24, stat_info->bssid[3]);
EEPROM.write(25, stat_info->bssid[4]);
EEPROM.write(26, stat_info->bssid[5]);
// 3RD MAC SHOULD SAVE HERE
EEPROM.write(31, stat_info->bssid[0]);
EEPROM.write(32, stat_info->bssid[1]);
EEPROM.write(33, stat_info->bssid[2]);
EEPROM.write(34, stat_info->bssid[3]);
EEPROM.write(35, stat_info->bssid[4]);
EEPROM.write(36, stat_info->bssid[5]);
// 4TH MAC SHOULD SAVE HERE
EEPROM.write(41, stat_info->bssid[0]);
EEPROM.write(42, stat_info->bssid[1]);
EEPROM.write(43, stat_info->bssid[2]);
EEPROM.write(44, stat_info->bssid[3]);
EEPROM.write(45, stat_info->bssid[4]);
EEPROM.write(46, stat_info->bssid[5]);
Here is the sketch which looks up the MAC addresses
/*
* Getting MAC and IP Address of Connected devices to ESP8266
* with Soft AP Mode
*/
#include <ESP8266WiFi.h>
extern "C" {
#include<user_interface.h>
}
/* configuration wifi */
const char *ssid = "MYSSID";
const char *pass = "password";
void setup() {
delay(1000);
Serial.begin(115200);
Serial.println();
Serial.print("Configuring access point...");
WiFi.softAP(ssid,pass);
IPAddress myIP = WiFi.softAPIP();
Serial.print("AP IP address: ");
Serial.println(myIP);
}
void loop() {
delay(5000);
client_status();
delay(4000);
}
void client_status() {
unsigned char number_client;
struct station_info *stat_info;
struct ip_addr *IPaddress;
IPAddress address;
int i=1;
number_client= wifi_softap_get_station_num();
stat_info = wifi_softap_get_station_info();
Serial.print(" Total Connected Clients are = ");
Serial.println(number_client);
while (stat_info != NULL) {
IPaddress = &stat_info->ip;
address = IPaddress->addr;
Serial.print("client= ");
Serial.print(i);
Serial.print(" IP adress is = ");
Serial.print((address));
Serial.print(" with MAC adress is = ");
Serial.print(stat_info->bssid[0],HEX);Serial.print(" ");
Serial.print(stat_info->bssid[1],HEX);Serial.print(" ");
Serial.print(stat_info->bssid[2],HEX);Serial.print(" ");
Serial.print(stat_info->bssid[3],HEX);Serial.print(" ");
Serial.print(stat_info->bssid[4],HEX);Serial.print(" ");
Serial.print(stat_info->bssid[5],HEX);Serial.print(" ");
stat_info = STAILQ_NEXT(stat_info, next);
i++;
Serial.println();
}
delay(500);
}