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

Ограниченное число server.on

Legion12

New member
Всем привет.
Проблема следующего плана:
Используем ESP8266-01, с 1мб памяти на борту, arduino IDE определяет.

Число вот таких команд server.on:
Код:
 server.on("/WF", handle_ConfigurationWF);
в конечном варианте должно составлять около 450 штук, оптимизировать это нельзя.

Пока команд меньше 300 - все работает, начинаем добавлять больше - работать отказывается, уходит в бесконечную перезагрузку:

ets Jan 8 2013,rst cause:2, boot mode: (3,2)
14:58:31.684 ->
14:58:31.684 -> load 0x4010f000, len 3664, room 16
14:58:31.738 -> tail 0
14:58:31.738 -> chksum 0xee
14:58:31.738 -> csum 0xee
14:58:31.738 -> v39c79d9b
Иногда бывает boot mode: (3,0), иногда boot mode: (3,6).

Пробовали уменьшить память под файловую систему до 64кб - не помогло. Общий размер программы 535кб с учетом 2 вебстраниц по 45 кб каждая. Если их убрать - ситуация не изменится.

Пробовали сменить память на 8мб (64мбит) - безрезультатно, arduino IDE даже автоматически не определяет размер, ставит дефолтно 4мб. Прошивает без проблем, но работать не хочет. А чуть только команд server.on меньше 300 - все в порядке и работает без сбоев сутками.

Кто-нибудь с таким сталкивался? Существует ли способ увеличить число обращений server.on или загнать это в цикл?
 

enjoynering

Well-known member
вы конечно писали, но все же спрошу. вы знаете, что не обязательно каждый файл сервера прописывать в server.on? их можно и нужно заворачивать в server.onNotFound
 

enjoynering

Well-known member
Имхо, в server.on прописываются только главные страницы (index.html, wifi_settings.html и тд), и файлы которые ФОРМИРУЮТСЯ НА ЛЕТУ (например json файлы). Все остальные файлы заворачиваются через server.onNotFound. и инете куча примеров. Удачи.
 

Legion12

New member
Имхо, в server.on прописываются только главные страницы (index.html, wifi_settings.html и тд), и файлы которые ФОРМИРУЮТСЯ НА ЛЕТУ (например json файлы). Все остальные файлы заворачиваются через server.onNotFound. и инете куча примеров. Удачи.
Мда, вот что значит "посмотрите на проблему СОВСЕМ иначе". Решила через server.arg, по тому же принципу, что и сохранение переменных из веб-интерфейса.

В веб:
Код:
url = 'flow1?n='in_1.value;
xhr.open('GET',url,true);
И на сервере:
Код:
server.on("/flow1", []() { AddFlow1(server.arg("n").toInt());});
И количество server.on снизилось в 10 раз и проблему решили... кажется.
 
Сверху Снизу