Closed dontsovcmc closed 2 years ago
Можно перезагрузить ESP и затем выполнить отправку
Да, но тогда надо слать команду "Restart" в Attiny. Она должна рестартануть в режиме Transmit... Я еще не пробовал выключать WiFiClient. Не знаете, как грамотно это проделать?
Решение в лоб, установить в Attiny режим TRANSMIT_MODE после того как сказали ESP SETUP_MODE
case 'M': // Разбудили ESP для настройки или передачи данных?
txBuffer[0] = setup_mode;
if(setup_mode == SETUP_MODE){
setup_mode = TRANSMIT_MODE;
}
break;
@OloloevReal может нужно просто ребутнуть WiFi?
Вот вижу доку: https://arduino-esp8266.readthedocs.io/en/latest/esp8266wifi/soft-access-point-class.html#softapdisconnect
WiFi.softAPdisconnect(true); вызвать надо точно. это выключит веб сервер и отрубит клиентов. возможно уже эта мера очистит память.
может достаточно вызова WiFi.mode(WIFI_STA); после настройки? Могли бы протестировать?
Попробовал, никакого толку, куча не уменьшается
//Запускаем точку доступа с вебсервером
LOG_NOTICE("ESP", "Heap1: " << ESP.getFreeHeap());
setup_ap(sett, data, cdata);
LOG_NOTICE("ESP", "Heap2: " << ESP.getFreeHeap());
WiFi.softAPdisconnect(true);
LOG_NOTICE("ESP", "Heap3: " << ESP.getFreeHeap());
000:00:00:00:180 NOTICE (ESP) : Heap1: 33848
000:00:00:00:185 NOTICE (ESP) : I2C-begined: mode SETUP
..........
.........
000:00:00:32:293 NOTICE (AP) : impulses1=0
000:00:00:32:297 NOTICE (CFG) : Config stored OK
*WM: freeing allocated params!
000:00:00:32:304 NOTICE (ESP) : Heap2: 28272
000:00:00:32:308 NOTICE (ESP) : Heap3: 28272
000:00:00:32:813 NOTICE (WIF) : Starting
000:00:00:32:814 NOTICE (WIF) : Status: 6
000:00:00:33:014 NOTICE (WIF) : Connected, IP: 192.168.1.253
Я попробовал с новыми версиями библиотек. Проблема осталась. Предположительно не хватает оперативной памяти. После вебсервера либо не освобождается, либо сильно сегментируется память и требуемых для HTTPS ~25кБ нет.
Решение одно: добавить команду для attiny85 для смены режима пробуждения. и перезагрузка esp8266.
После динамической загрузки SSID сетей, памяти стало больше. Уменьшилась фрагментация: [MEM] free: 31080 | max: 25648 | frag: 18%
Кажется я теряю 4кб памяти не вызывая EEPROM.end() после чтения настроек )
Решил тем, что перезапускаю ESP после настройки.
Хочу переделать, так, чтобы после успешной настройки показания сразу улетали на сервер. Столкнулся с тем, что не хватает памяти. Падение в вызове new в недрах SSL.
Вопрос: как очистить память после работы WiFi точки доступа? Вряд ли библиотеку BearSSL можно оптимизировать.
стек: