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

Вопрос Размещение статичных страниц web-сервера

Когда доходит дело до чего-нибудь уже более или менее серьезного для этого нужен интерфейс. Как сделать Web сервер - все понятно, но встает проблема по отображению "страниц", т.е. статичного или динамичного контента.

В связи с этим вопрос, наверное в первую очередь к @pvvx - как правильно добавить набор статичных страниц(html, css, js) для отображения сервером?

Я так понимаю, что вариантов не много:
  • прям в коде назначать переменные и туда сохранять большие куски текста(как быть с картинками?)
  • я так понимаю, что можно формировать отдельный .bin файл, содержащий все файлы (как это сделано esp8266web/webbin at master · pvvx/esp8266web · GitHub), но собирать этот bin и как потом искать "фалы" в адресах?

Кто уже на эти грабли наступал - поделитесь опытом, пожалуйста, если можно со ссылками на примеры.
 

tretyakov_sa

Moderator
Команда форума
Когда доходит дело до чего-нибудь уже более или менее серьезного для этого нужен интерфейс. Как сделать Web сервер - все понятно, но встает проблема по отображению "страниц", т.е. статичного или динамичного контента.
Я храню все страницы в FS и возвращаю в них данные с помощью json.
Программированием страниц сам не занимаюсь это делает Ренат пример здесь: GitHub - renat2985/rgb: esp8266 and WS2811/WS2812/NeoPixel LEDs Smart home / Gudra māja / Умны дом
 

pvvx

Активный участник сообщества
Кто уже на эти грабли наступал - поделитесь опытом, пожалуйста, если можно со ссылками на примеры.
Создаете контекст сервера в любом редакторе выдающем html, js, css, ... Запускаете программу сборки образа web-диска и загружаете его в ESP8266 на странице загрузки...
К примеру, имеющиеся в примере страницы help созданы и выведены в MS Exel и просто перекинуты в директорию образа диска. Если на модуле установлена большая Flash, то на web-диск я закидываю и мегабайтные инструкции в PDF. Грузятся они хорошо - к 1 мег/сек.
Или что-то другое интересует?
Кол-во одновременно открытых файлов пользователями web-сервера? Устанавливается до 250.
Необходимое кол-во одновременно обслуживаемых и открытых TCP-HTTP "сокетов"? Для стандартных эксплореров = 5 шт на один адрес HTTP (одну вкладку с отображением) + запрос favicon.ico. Два запроса или два окна -> до 11 шт. :) Но их можно обслужить последовательно. В текущем варианте и при тестах сервера программами тестов выходит в среднем около 6 одновременно открытых "сокетов" с их открытием/закрытием более 30 шт в сек. Т.е. в среднем требуется не более 40 одновременно открытых файлов с web-диска. Более не позволяет производительность ESP8266 с WiFi и прочим имеющимся на нем ПО. Т.е. при более 30 одновременно открытых файлов дико падает производительность частей не отсносящихся к самому web-серверу...
На Arduino и прочих реализациях используется всего 1 активный "сокет" и один открытый файл :) Использование большего кол-ва файлов там затруднено из низкой скорости работы файловой системы spiffs и очень сильного падения её производительности при среднем для ESP диске c множественными файлами. Поток падает ниже 1 килобайта в секунду, а открытие файла иногда переваливает за десятки секунд.
Создание альтернативной файловой системы с записью для flash c побитной дозаписью я планирую, но это не первом плане и не для ESP8266 (он морально и технически устарел + имеет слишком много глюков)...
 
Последнее редактирование:
Спасибо большое за ответы, есть ряд уточнений:
  1. "Запускаете программу сборки образа web-диска и загружаете его в ESP8266 на странице загрузки..." – что за программа? я так понимаю, что она просто собирает из нескольких файлов бинарник? А что за страница загрузки, если я ее сам не сделал изначально - она не загрузится?
  2. Если с формированием файла - еще более или менее понятно, то основной вопрос - зачем его заливать через определенную функцию самого сервера? Почему просто нельзя сформированный бинарник залить в область памяти тем же самым esptool.py и в программе обращаться к нему?
  3. "Если на модуле установлена большая Flash, то на web-диск я закидываю и мегабайтные инструкции в PDF." – а если маленький esp-12, куда все это ложится, там же вообще крошечное все должно быть.

P.S.: отдельно спасибо большое за разъяснения по производительности
 

pvvx

Активный участник сообщества
"Запускаете программу сборки образа web-диска и загружаете его в ESP8266 на странице загрузки..." – что за программа? я так понимаю, что она просто собирает из нескольких файлов бинарник? А что за страница загрузки, если я ее сам не сделал изначально - она не загрузится?
Программа сборки бинарника web-диска вложена в архив с прошивкой или скачивается с репо GitHub - pvvx/esp8266web: Small web server on ESP8266 Исходный код сборщика находится в zip файле директория /lib.
Существует отдельная тема про web-свалку
Если с формированием файла - еще более или менее понятно, то основной вопрос - зачем его заливать через определенную функцию самого сервера? Почему просто нельзя сформированный бинарник залить в область памяти тем же самым esptool.py и в программе обращаться к нему?
Существует и реализовано оба варианта.
"Если на модуле установлена большая Flash, то на web-диск я закидываю и мегабайтные инструкции в PDF." – а если маленький esp-12, куда все это ложится, там же вообще крошечное все должно быть.
Web-свалка собирается с использованием своих библиотек, полученных путем выкидивания лишнего хламу из китайских. За счет этого размер прошивки меньше.
 
Последнее редактирование:

086dx66

Member
2 pvvx
>ESP8266 (он морально и технически устарел + имеет слишком много глюков)...
а что на замену рассматриваешь ?
 

pvvx

Активный участник сообщества
2 pvvx
>ESP8266 (он морально и технически устарел + имеет слишком много глюков)...
а что на замену рассматриваешь ?
А пока ничего. Вожусь с RTL8711AM. Потом придут ESP32 - и их посмотрю... Может ещё CC3200...
 

086dx66

Member
С учетом того что первая партия есп32 была бракованная и от тех же производителей что есп8266 с кривым закрытым сдк мне кажется надежд мало что изначально будет рабочий
Единственный + wifi+ble сразу на чипе

Если у реалтека будет аналог даже пусть дороже со стабильной сдк нахрен никому 32й не нужен будет

Если сс3200 глянешь отпишись плз интересно тоже

А от RTL8711AM вифи сеть также тормозит?
Был проект на мощном чипе на хабре еще писали черная ласточка или как то так назывался но сдох
 

086dx66

Member
Я имел ввиду по сравнению с кривой сдк от есп8266

П.с.
Не подскажешь у реалтека или еще кого-то то уже есть стабильный чип вифи+бле4 + сдк стабильное
Более менее адекватный по цене и ттх
 

pvvx

Активный участник сообщества
Я имел ввиду по сравнению с кривой сдк от есп8266
Может на ESP32 будет прямее. Подождем - увидим.
Не подскажешь у реалтека или еще кого-то то уже есть стабильный чип вифи+бле4 + сдк стабильное
Более менее адекватный по цене и ттх
Нет - Bluetooth Low Energy не занимаюсь. Не нужны они мне.
 

086dx66

Member
Нашел
Делали black swift на Atheros AR9331
Но проект загнулся так и не взлетев по сути
Black Swift: зачем мы его сделали

Rtos они тоже так и не сделали под него

Сайт живой но там просто деньги в трубу собирают, платить им вперед нельзя
 

pvvx

Активный участник сообщества
Нашел
Делали black swift на Atheros AR9331
Но проект загнулся так и не взлетев по сути
Black Swift: зачем мы его сделали

Rtos они тоже так и не сделали под него

Сайт живой но там просто деньги в трубу собирают, платить им вперед нельзя
Все их модули у меня есть. Выслали без проблем. Но не подошли для проекта под который брались из-за отсутствия полных UART. А так - работают...
 

086dx66

Member
А от RTL8711AM вифи сеть также тормозит?

А то от есп8266 ад начинается в сети при работе. Приходится быстро передавать и отключаться
 

086dx66

Member
Видео например начни транслировать по вифи сети на приставку/телевизор затупы когда есп подключается сразу видны.
Вообщем спасибо за инфо, ждем тестов новых устройств
 

vad7

Active member
Это может еще зависеть от настроек сетки - b/g/n там, ширина канала и т.д.
 
Осталось два вопроса:
  • На сколько я понимаю используется специально написанный драйвер: esp8266web/webfs.c at master · pvvx/esp8266web · GitHub - который позволяет в сохраненном бинарнике искать "файлы" - верно?
  • По какому принципу работает программа для подготовки образа bin, который заливается во флэш? К сожалению не windows машины, поэтому хотел бы понять как "готовится" образ перед заливкой.
 

pvvx

Активный участник сообщества
На сколько я понимаю используется специально написанный драйвер: esp8266web/webfs.c at master · pvvx/esp8266web · GitHub - который позволяет в сохраненном бинарнике искать "файлы" - верно?
Да.
По какому принципу работает программа для подготовки образа bin, который заливается во флэш? К сожалению не windows машины, поэтому хотел бы понять как "готовится" образ перед заливкой.
Там-же и описан формат.
 
Сверху Снизу