Chat freely about anything...

User avatar
By AngeloACRR
#32495 Hey!
I think that implementing a routing protocol would solve the problem. I mean, if there is no possible way for C to see A, with the routing protocol he will find the path that leads to A through B. It could be implemented by creating a kind of routing table in each ESP, loaded with the IP direction of its neighborgs, so if you want to know how to reach a certain device that is out of range, you're gonna need to check the routings tables of your neighborgs to see if they know it. If it is, you take the IP and the path that leads to it (IP of B, in this case); if it don't, you will check the neighbors of the neighbors until he finds what he's looking for. I think that this implementation could solve the problem, but I dont know really. If you wanna try it, do it and then let me know what happens! :D :D

Regards,
Angelo CrIncoli
User avatar
By eriksl
#32667 The problem is that ESP's have "client" isolation enabled. Traffic is not bridged between clients. So without special constructions, this won't work.
User avatar
By martinayotte
#32736 Here is a piece of code that list all Client MAC addresses :

Code: Select allvoid showClientList()
{
  struct station_info *stat_info;
  stat_info = wifi_softap_get_station_info();
  uint8_t client_count = wifi_softap_get_station_num();
  String str = "Number of clients = ";
  str += String(client_count);
  str += "\r\nList of clients : \r\n";
  int i = 1;
  while (stat_info != NULL) {
    str += "Station #";
    str += String(i);
    str += " : ";
    str += String(stat_info->bssid[0], HEX);
    str += ":";
    str += String(stat_info->bssid[1], HEX);
    str += ":";
    str += String(stat_info->bssid[2], HEX);
    str += ":";
    str += String(stat_info->bssid[3], HEX);
    str += ":";
    str += String(stat_info->bssid[4], HEX);
    str += ":";
    str += String(stat_info->bssid[5], HEX);
    str += "\r\n";
    i++;
    stat_info = STAILQ_NEXT(stat_info, next);
    }
  Serial.println(str);
}