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

ESP в режиме AP после толпы клиентов дурнеет

AlexandreVN

Member
Подскажите знатоки, что может быть причиной. После того как по ESP прошлось ~30 клиентов, ESP начинает отваливать клиентов. Добавил функции и светодиод на события подключения - отключения клиентов. Подключаюсь к ESP, диод включается и практически сразу дисконект -диод гаснет. Точка доступа при этом на телефоне присутствует, повторное подключение и опять дисконект. Такая мигалка получается пока не питанием не сбросишь. Вот думаю может слишком много клиентов на нее бедную набрасывается сразу? Может попробовать ограничить максимальное кол-во одновременных клиентов до одного, чтобы по-очереди а не все сразу?
 

AlexandreVN

Member
Сбой заключется в том, что клиент подключаясь к ESP тут же отключается. При этом постояно wifi_softap_get_station_num() возращает 1. Хотя клиентов подключенных нет. Помогает только повторная инициализация ESP в режиме AP.
 

AlexandreVN

Member
Проверьте что творится со свободной памятью.
Вроде все нормально с памятью. Заметил, что в условиях сильно загруженного частотного диапазона, ESP не всегда понимает, что клиент от нее отключился. Через некоторое время дебагер пишет что достигнуто максимальное кол-во подключений. И ESP новых клиентов отваливает.
 

nikolz

Well-known member
попробуйте вывести на терминал количество подключенных станций.
функция SDK
uint8 wifi_softap_get_station_num();
 

AlexandreVN

Member
попробуйте вывести на терминал количество подключенных станций.
В самом начале для эксперимента я вел счетчик подключенных клиентов по событиям подключения/отключения. В какой-то момент времени он перестает совпадать с тем, что дает wifi_softap_get_station_num() . Функция SDK показывает что клиенты есть, а счетчик указывает на их отсутствие. По моим прикидкам правильные значения дает именно счетчик по событиям. Заканчивается все это тем, что достигается (по мнению SDK) максимальное кол-во клиентов и на этом все.
 

AlexandreVN

Member
попробуйте вывести на терминал количество подключенных станций.
функция SDK
uint8 wifi_softap_get_station_num();
Баг существует и по сей день на разных совершенно проектах. В режиме АР через неделю, а может через месяц, ESP перестает подключать клиентов. Выглядит так: клиентов подключенных нет, а wifi_softap_get_station_num() пишет что есть. Перегружать периодически модуль -топорное решение. Никто не сталкивался?
 

pvvx

Активный участник сообщества
Перегружать периодически модуль -топорное решение.
Перезагрузка - единственное решение для моделей CPU без MMU использующих heap память. Других вариантов нет - после нескольких действий вы должны проверить heap на запрос большого непрерывного куска, а если такого уже нет из-за дефрагментации, то идем на перезагрузку.
Все имеющиеся у меня "умные розетки" и прочие WiFi от разных производителей на ESP и прочих тупеньких контроллерах WiFi периодически отваливаются от сети или перезагружаются.
 

pvvx

Активный участник сообщества
Чтобы избавиться от этих проблем, требуется:
  • Не использовать C++
  • Распределять всю память статически или одновременно завершать все процессы с полным освобождением heap памяти.
Существуют и другие варианты распределения памяти, но их используют редко и для построения надежных систем, а не каких-то Arduino и прочих обучающих программ.
 
Сверху Снизу