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