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