• Уважаемые посетители сайта esp8266.ru!
    Мы отказались от размещения рекламы на страницах форума для большего комфорта пользователей.
    Вы можете оказать посильную поддержку администрации форума. Данные средства пойдут на оплату услуг облачных провайдеров для сайта esp8266.ru
  • Система автоматизации с открытым исходным кодом на базе 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 и прочих обучающих программ.
 
Сверху Снизу