• Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

Нужна помощь SoftAP + wifi_softap_get_station_num(), wifi_softap_get_station_info();

sasasa

Member
ЕСПка работает в режиме SoftAP. При подключении клиента вижу что он подключен, но при отключении происходит что то странное. Если подключаюсь планшета, то после отключения клиента нет. Если подключаюсь другой ЕСПкой, то после отключение клиента продолжает показывать его присутствие и даже его IP и MAC адрес. Если подключить 2 ЕСКи и планшет, то после отключения клиент планшета из списка проподает, но клиенты ЕСПок продолжает показывать.
При том клиенты ЕСПок после отклучения/подключения показывает неправильный MAC - показывает МАC от той ЕСПки, которая до этого висела на тот же IP адрес
Где искать проблему и как её решить?
Объясню из-за чего мне это. Надо знать когда подключилась станция с конкретным МАC адресом. Может быть есть другие методы, как это узнать?
Код:
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_client are = ");
Serial.println(number_client);

while (stat_info != NULL) {
  IPaddress = &stat_info->ip;
  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(stat_info->bssid[1], HEX);
  Serial.print(stat_info->bssid[2], HEX);
  Serial.print(stat_info->bssid[3], HEX);
  Serial.print(stat_info->bssid[4], HEX);
  Serial.print(stat_info->bssid[5], HEX);

  address = IPaddress->addr;
  stat_info = STAILQ_NEXT(stat_info, next);
  i++;
Serial.println();
}
 wifi_softap_free_station_info();
}
 
Последнее редактирование:

sasasa

Member
Иногда зависает когда другая ЕСПка садится на адрес предыдущей

Код:
Exception (29):
epc1=0x4000e1b2 epc2=0x00000000 epc3=0x00000000 excvaddr=0x00000000 depc=0x00000000

ctx: cont
sp: 3fff3130 end: 3fff33d0 offset: 01a0

>>>stack>>>
3fff32d0:  3fff3d7c 00000010 00000001 401004f4
3fff32e0:  4022836a 3fff3d80 00000001 401076c8
3fff32f0:  402299bd 3fff3d7c 00000000 40229a01
3fff3300:  40206fe0 3fff1ccc 00000000 00000001
3fff3310:  3fff1ca0 3fff1ccc 3fff3340 4020e276
3fff3320:  3ffeb270 00000000 00000002 4020152f
3fff3330:  3fff1368 00000000 3fff1ccc 40209b44
3fff3340:  3fff51dc 0000000f 00000000 4010068c
3fff3350:  3fff57fc 3fff583c 3fff2374 40208248
3fff3360:  00000000 3fff21fc 3fff2374 402093c1
3fff3370:  3ffeb208 00000000 000003e8 4020fae0
3fff3380:  00000000 00000000 00000000 00000000
3fff3390:  00000000 3fff51c4 3fff47bc feefeffe
3fff33a0:  00000000 00000000 00000001 3fff23a0
3fff33b0:  3fffdad0 00000000 3fff2398 4020ea80
3fff33c0:  feefeffe feefeffe 3fff23b0 40100718
<<<stack<<<

ets Jan  8 2013,rst cause:2, boot mode:(1,6)
иногда МАC есть, а IP по нулям
Код:
 Total connected_client are = 1
client= 1 ip adress is = 0.0.0.0 with mac adress is = 789ED0C3CADB
 
Последнее редактирование:

pvvx

Активный участник сообщества
ЕСПка работает в режиме SoftAP. При подключении клиента вижу что он подключен, но при отключении происходит что то странное. Если подключаюсь планшета, то после отключения клиента нет. Если подключаюсь другой ЕСПкой, то после отключение клиента продолжает показывать его присутствие и даже его IP и MAC адрес.
А как вы "отключаетесь" от SoftAP?
Смарт или планшет при отключении посылает сообщение разрыва/окончания связи. ESP8266 не дружит со стандартами WiFi и там всё надо сделать за неё, вручную.
 

sasasa

Member
Отключаю питание. Реально станции будут выходить из зоны действия WiFi а потом когда то возвращатся. АР должен отслеживать когда клиент подключился и когда выходит из зоны и фиксировать это время в лог фвйл. Как это реализовать без команды отключения со стороны клиента. Надо чтобы АР регулярно сканировал присутствие клиента. Это возможно?
 

sasasa

Member
Так что, нет вариантов контролировать кто реально подключен к AP и кто вышел из WiFi зоны?
 

sasasa

Member
Ещё актуально. Пока не удалось просканировать на присутствие клиентов.
Как клиенту отключится при обрыве соединения тоже пока не придумал. Каждый раз отключатся после послания данных (раз в 10 секунд) как то не серёзно показалось, но если единственный вариант, то придётся.
 
Сверху Снизу