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

Разработка ‘библиотеки’ малого webсервера на esp8266.

pvvx

Активный участник сообщества
таки оно и оказалось вайфай-директом? долгожданное OSI-погружение?
Возможно, но использовать невозможно. :) Причина - много лишнего хлама в SDK и всё время убьете на обход их ошибок.
Универсального решения не бывает, а специализированное на данном китай-SDK не сделать. От того, что дали дырочку на пару функций ничего не поменяется, т.к. нужна масса других. Но их нет, а вся flash и программа будет заполнена ненужными и борьбой с ними.

PS: Прием Probe Request сделали, передачу любого пакета тоже. Осталось притвориться той AP которую ищут и получать пароли от них у проходящих мимо пользователей WiFi... :) https://wigle.net/
 
Последнее редактирование:

Tomahawk

New member
Захотелось мне задать имя сохраняемого файла как не fullflash.bin, а username123.bin, но не могу пока фрагмент найти, который за это отвечает. Ссылка на сайте отсылает к файлу на диске, в котором лежит переменная, которая впоследствии вызывает web_get_flash и далее каким-то образом выдаётся окошко в браузере с предложением сохранить файл как... это имя и хочу изменить на другое. Вроде все пересмотрел, в консоли могу отловить "fullflash.bin", но изменение пока не даёт результата. Можете подсказать, возможно ли это?
 

pvvx

Активный участник сообщества
Захотелось мне задать имя сохраняемого файла как не fullflash.bin, а username123.bin, но не могу пока фрагмент найти, который за это отвечает.
А открыть заготовку fullflash.bin не пробовали на диске? :) в нем записано ~bin_flash_all~ и файлы с расширением *.bin указаны как "парсящиеся".
В них можно написать любой скрипт. Там вроде есть и возможность сохранения посекторно, а можно задать и сохранение в HEX (~start=0x40200000~~stop=0x40280000~~hexdmpb~).
~bin_flash_sec_13~ - сохранит 13-й сектор
всё можно использовать и пачкой и комбинациями ~bin_flash_sec_13~~bin_flash_sec_14~~bin_flash_sec_15~~bin_flash_const~
~bin_flash_disk~ - сохранит запись диска
Можете сделать разные "username123.bin" и вписать в них что угодно.

Посекторная запись из эксплорера тоже должна работать.
Передается имя "fsec_NN", где NN - номер сектора (DEC или HEX).
"sysconst" - это esp_init_data_default.bin + константы
"file" - это запись диска.
HTML:
<form method='post' action='/fsupload' enctype='multipart/form-data' class="content">
    <h2 class="title">Sector Upload</h2>
    <p class="center">
    Select Sector file...<br><br>
    <input type='file' name='fsec_0x7f'><br><br>
    <input type='submit' value='Upload' class="button">
    </p>
</form>
PS: в связи с дичайшим кол-вом уже напиханного написать полный Help я не в состоянии, т.к. это будет целый талмуд.
 
Последнее редактирование:

aloika

Active member
Уважаемый pvvx, посоветуйте.
Написали мы тут веб-морду. Она как бы работает - когда загрузится. А вот грузится ужасно долго. Бывает даже, что не за один раз - некоторые файлы по таймауту не догружаются, обновишь страничку - что загрузилось, берется уже из кэша браузера, остальное догружается. И только после этого страничкой можно пользоваться. Вопрос - в какую сторону оптимизировать? Делать меньше файлов? Будет от этого толк? Кажется, вы как-то писали об этом, не смог сейчас найти с ходу...
 

Alex

Member
Алойка я тут на машину новую резину поставил. А она не едет. Вроде как бы трогается, а потом глохнет. Бывает даже не один раз. Если подтолкнуть едет. Как оптимизировать? Бензин сменить? Или машину?
 

pvvx

Активный участник сообщества
Написали мы тут веб-морду. Она как бы работает - когда загрузится. А вот грузится ужасно долго. Бывает даже, что не за один раз - некоторые файлы по таймауту не догружаются, обновишь страничку - что загрузилось, берется уже из кэша браузера, остальное догружается. И только после этого страничкой можно пользоваться. Вопрос - в какую сторону оптимизировать? Делать меньше файлов? Будет от этого толк? Кажется, вы как-то писали об этом, не смог сейчас найти с ходу...
Меньше файлов всегда желательно, т.к. уменьшает кол-во одновременно открытых TCP соединений и затрачивает меньше памяти в LwIP (у него ограничено кол-во буферов). При интенсивной загрузке потоками прима-передачи не догружаются фалы в режиме отличном от Sleep Mode: None - это китай-фича. Происходит обрыв TCP соединения из-за изменения китайцами основного таймера процессов для LwIP с 25 ms на 3000 ms. Возникает что-то вроде затора буферов соединений и их своевременного неосвобождения, приводящего к ошибке в LwIP. В SDK 1.4.0 они ещё чего-то накрутили по данному поводу, типа мобильных переключений режимов sleep WiFi (с этим и нововденными китай-баго-фичами я ещё не разбирался, проще поставить Sleep Mode: None)...
Для включения файлов в один есть ~inc:название_файла~. Глубина вложений = 4 итерации.
 
Последнее редактирование:

aloika

Active member
в режиме отличном от Sleep Mode: None
А как узнать, какой у меня этот режим? Где посмотреть? Так-то я вообще никакие режимы сна не использую...

Меньше файлов всегда желательно,
Т.е. предпочтительнее меньше файлов, но сами файлы больше, чем наоборот? так?

Для включения файлов в один есть ~inc:название_файла~.
Про это я знаю... Но не использую. Надо попробовать. А расширение у включаемого файла может быть любым или только .inc ?

Кстати - я использовал картинки .svg . И сервер их не отображал. Немного подправил в исходниках - прописал расширение и то, что надо в соответствующих файлах, теперь работает. У меня версия, правда, 0.3.9, может, вы уже и так это добавили.
 

aloika

Active member
Алойка я тут на машину новую резину поставил. А она не едет. Вроде как бы трогается, а потом глохнет. Бывает даже не один раз. Если подтолкнуть едет. Как оптимизировать? Бензин сменить? Или машину?
а по делу есть что сказать?
 

pvvx

Активный участник сообщества
А как узнать, какой у меня этот режим? Где посмотреть? Так-то я вообще никакие режимы сна не использую...
Это не вы выбираете - по умолчанию Espressif ставит Sleep Mode: MODEM. Меняется на странице настроек WiFi.
Т.е. предпочтительнее меньше файлов, но сами файлы больше, чем наоборот? так?
От include диск не становится больше, а увеличивается длина передачи. Вам мала скорость передачи файлов в 1 мегабайт в сек?
Про это я знаю... Но не использую. Надо попробовать. А расширение у включаемого файла может быть любым или только .inc ?
Любым. Но тип файла должен быть не сжатым GZIP. Вставляете в опции (исключения сжатия или как "парсищиеся") при сборке диска.

Кстати - я использовал картинки .svg . И сервер их не отображал. Немного подправил в исходниках - прописал расширение и то, что надо в соответствующих файлах, теперь работает. У меня версия, правда, 0.3.9, может, вы уже и так это добавили.
На то исходники и даны. Все типы вписать невозможно - не хватит памяти у EPS8266.
 

aloika

Active member
Это не вы выбираете - по умолчанию Espressif ставит Sleep Mode: MODEM. Меняется на странице настроек WiFi.
Стоит NONE.

Вам мала скорость передачи файлов в 1 мегабайт в сек?
Вот. У меня весь сайт (не сжатый) около 340 кб. А страничка грузится секунд 30-40 бывает. И в ней не все файлы сайта используются.
 

pvvx

Активный участник сообщества
Первый раз всегда долго. Потом обновляешь страничку - уже быстро обновляется. Но я так понимаю, что это браузер уже часть из кэша берет.
Не понятно это ваше "долго". Прислали бы прототип странички куда (можно в личке), т.к. не встречал долго.
Можно всё затормозить, до WDT, например включив Debug UART BAUD: 300... А для проверки скоростей рекомендуется GPIO2 debug UART TX enable: отключить, 160MHz CPU enable: включить.
 

Tomahawk

New member
aloika, из web_int_vars.c и web_int_callbacks.c уберите переменные, которые не используете, скорость загрузки страницы должна повыситься. У меня страницы до 10 кб грузятся нормально, а у вас сколько страницы *.htm весят? Если много, то должно влиять, где-то есть верхний потолок. Попробуйте на более мелкие разбить.
 

aloika

Active member
Tomahawk, сама-то html всего 2 кб. Но она тянет за собой css 4 файла в сумме на 40 кб, картинок с десяток по 1-10 кб каждая, и js в 15 файлах на 200 кб в сумме. Вот оно и тормозит.
Всего около 350 кб получается.
 

aloika

Active member
А для проверки скоростей рекомендуется GPIO2 debug UART TX enable: отключить
Отключил. У меня там еще скорость стояла 9600.
Да, частично помогло. Если раньше один запрос файла xml в 406 байт занимал 34 ms (смотрю средствами Хрома), то теперь - 17 ms. В два раза, это здорово.

Но это все равно скорость около 25 кб/сек. До 1 мб/сек даже близко не дотягивает.

UPD: постояло немного, ниче не трогал, стало 3 мс (406 байт). То есть около 135 кб/сек. Хм...
 
Последнее редактирование:

pvvx

Активный участник сообщества
Но это все равно скорость около 25 кб/сек. До 1 мб/сек даже близко не дотягивает.
На малые файлы больше времени уходит на открытие и закрытие TCP соединения. Тут ничего не поделать - наименьшее вроде выходит к 25 ms на файл (но зависит от массы факторов). 1Mbytes - это линейная передача файла. По этой причине много коротких = плохо.
Файл открывается на HTTP запрос, он разбирается, разгребаются переменные (выполняются), куки, формируется HTTP ответ, HTTP ответ передается, а потом уже идут данные файла (в его теле тоже могут быть исполняемые вставки) - это всё влияет на скороcть...
 
Последнее редактирование:

aloika

Active member
pvvx, я вам в личку скинул сайт, если будет время и желание, посмотрите пожалуйста.
 

Vitaly

Member
при настройке из файла init.ini
из трех строк
wifi_aucn=1
wifi_st_ssid=
wifi_st_psw=
не срабатывает wifi_aucn=1, что-то неправильно пишу?
 

pvvx

Активный участник сообщества
при настройке из файла init.ini
из трех строк
wifi_aucn=1
wifi_st_ssid=
wifi_st_psw=
не срабатывает wifi_aucn=1, что-то неправильно пишу?
Wifi режим наверно не выставлен в ST.
Счас ещё гляну, есть некая зависимость...
 
Сверху Снизу