• Уважаемые посетители сайта esp8266.ru!
    Мы отказались от размещения рекламы на страницах форума для большего комфорта пользователей.
    Вы можете оказать посильную поддержку администрации форума. Данные средства пойдут на оплату услуг облачных провайдеров для сайта esp8266.ru
  • Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

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

Algis

New member
windalser - Всё починено и перезалито.
Если будете делать изменения в веб файлах, предупредите пожалуйста в каких местах...
так как я вчера начал приводить все в порядок.

Надеюсь в течении нескольких дней закончить первую версию.
 

pvvx

Активный участник сообщества
Попробовал. Все равно не удалось сменить Auth Mode на не OPEN.
Пробовал на компе и на телефоне - меняет. Бывают проблемы на компе в win7 - она запоминает названия SSID и надо стирать или менять профили в "Управление беспроводными сетями", если на одно имя станции хотите иметь разное Auth. Там почему-то может быть всего два профиля на одно имя SSID - один на OPEN + один с шифрованием. Иначе, при смене шифрования - менять или стирать старый профиль...
PS: Ошибки в SDK я описывать больше не буду - пусть Espressif сам думает. С установками WiFi там серьезные ошибки в SDK 0.9.6 b1.
 
Последнее редактирование:

pvvx

Активный участник сообщества
В режиме STATION после установки соединения с AP и включенном режиме lite sleep в случае отсутствия задач (состояние idle)
тактирование процессора и RF приемник включаются на короткое время (порядка 3 милисекунд) и затем оключаются на
DTIM beacon-интервал, задаваемый в настройках AP (100 ms, например). В таком состоянии спячки модуль должен потреблять
меньше одного милиампера (если отрезать красный светодиод).
По идее, можно было бы добиться среднего потребления менее 2 мА при DTIM3.
На практике средний ток гораздо больше по непонятной мне причине :(
А принимать модуль не должен? Измерения показывают, что чем тише обстановка в эфире WiFi, тем меньше потребление. Это говорит о том, что модуль обрабатывает все принимаемые сообщения по своему каналу и анализирует - ему или нет.
Плюс сама SDK - в ней есть LwIP и прочие либы - для них запущены таймеры и идет постоянный выход CPU из режима idle на обработку всякого...
2 mA - это возможно на ноге питания передатчика WiFi, но не всего чипа... :)
Ещё невооруженным взглядом видно, что при flash GD25Q40 идут большие пички по току при её кешировании, чем при W25Q128FV. И эти "импульсы" длиннее, чем при W25Q128FV.
Всех подтяжек для определения типа BOOT я ещё не встречал ни на одном модуле. От этого задаются разные режимы работы QSPI с flash. Если каждый раз внимательно смотреть что пишет BIOS при старте на 74880 Baud, то имеем разные типы в зависимости от погоды. На некоторых модулях происходит загрузка то на SDIO HighSpeed V2 IO, то в режиме SDIO LowSpeed V1 IO. Скорость HighSpeed или LowSpeed после загрузки первых сегментов flash исправляется на указанную в заголовке Flash, а вот режимы V1 или V2 работы SPI - не помню и не копал...
Короче пока не ясно с чем связано то, что с W25Q128FV чип работает быстрее, но W25Q128FV имеет команду "Burst with Wrap”:
C функцией Wrap приложения, которые используют кэш, заполняют кэш фиксированной длиной (8/16/32/64-байт) данных из Flash без выдачи многократных команд чтения...
 
Последнее редактирование:

windalser

New member
PS: Ошибки в SDK я описывать больше не буду - пусть Espressif сам думает. С установками WiFi там серьезные ошибки в SDK 0.9.6 b1.
Насколько я знаю, у них там около 70 программистов в Шанхае занимается ПО. Если бы им подкинуть идеи, как улучшить, что сделать для улучшения ПО, в каком направлении копать, они бы прислушались.
Конечно, у нас маловато открытой информации, чтобы давать дельные рекомендации..

А принимать модуль не должен? Измерения показывают, что чем тише обстановка в эфире WiFi, тем меньше потребление. Это говорит о том, что модуль обрабатывает все принимаемые сообщения по своему каналу и анализирует - ему или нет.
Думаю, модуль в режиме light sleep в ждущем режиме работает импульсно, синхронно с широковещательными посылками, которые следуют с DTIM интервалом (кратно 100 мс).
Модуль просыпается, принимает широковещательную посылку, узнает есть ли для него пакеты, если есть - принимает их, делает, что требуется, нет пакетов - засыпает до момента следующей шикоровещательной посылки, выключая тактовую процессор и приемник (динамическая память, похоже, не портится..).
Похожая техника применяется и в GSM модулях. Когда модуль может потреблять в среднем 1.5 мА и в то же время иметь возможность получения пакетов по GPRS.

Плюс сама SDK - в ней есть LwIP и прочие либы - для них запущены таймеры и идет постоянный выход CPU из режима idle на обработку всякого...
Пробовал модифицировать простейший пример - Hello World (на 0.9.5) - в нем только один таймер. Увеличил период таймера до 10 секунд. Включил явным образом режим STATION и light sleep.
Соединился с офисной wifi AP.
Все равно не увидел потребления менее 2 мА. (Правда чудо-осциллографа для измерения тока нету :) .

2 mA - это возможно на ноге питания передатчика WiFi, но не всего чипа... :)
Первый же график из http://bbs.espressif.com/viewtopic.php?f=7&t=171 показывает 1.5 мА (при DTIM3 - 300 мс интервале синхронизации). Вряд ли график нарисован от руки :)

C функцией Wrap приложения, которые используют кэш, заполняют кэш фиксированной длиной (8/16/32/64-байт) данных из Flash без выдачи многократных команд чтения...
Как работает механизм кэша мне непонятен - раньше с таким не сталкивался. Если есть сслылка, где можно почитать - с удовольствием познакомлюсь.
Как я понимаю, половина статической памяти используется без кеша, другая - с кешом.. так ли это?
----------------------
https://github.com/EspressifSystems/low_power_voltage_measurement - недавно появился у них пример, использующий sleep режимы, и вики есть https://github.com/EspressifSystems/low_power_voltage_measurement/wiki . Правда, все крутится вокруг deep sleep , с которым и так все более-менее понятно.
 

pvvx

Активный участник сообщества
Как работает механизм кэша мне непонятен - раньше с таким не сталкивался. Если есть сслылка, где можно почитать - с удовольствием познакомлюсь.
Как я понимаю, половина статической памяти используется без кеша, другая - с кешом.. так ли это?
На счет половины или четверти встроенной памяти сказать сложно - не разбирался.
Механизм кеширования (чтения flash кусками в память перед исполнением) нигде не описан. SPI имеет массу аппаратных наворотов для обслуживания в полу-программно-аппаратном режиме чтения и даже запись в flash... Мне известно только несколько багов этой связки. Один из них - длинное, непрерывное чтение блока более 2-х килобайт области flash в RAM, безусловно при исполнении только из RAM (IRAM в данном случае) вызывает "протектед". Четко указать максимальную длину невозможно, т.к. существуют ещё кратности (некие границы) с связанные с адресом. Про то, что запрос должен быть выравнен на кратность адреса 4-м и так всем известно.
Насколько я знаю, у них там около 70 программистов в Шанхае занимается ПО. Если бы им подкинуть идеи, как улучшить, что сделать для улучшения ПО, в каком направлении копать, они бы прислушались.
70 бездельников ? :eek: Тогда они вообще пали в моем представлении до дестадовского уровня.
В их прошивках наблюдается два типа - один написан более менее и сложные вещи (но с частичной абстракцией от аппаратуры - наверно тот программер плохо врубается в hard), а всё остальное дописано вокруг и полностью безграмотно, да кое как и с конфликтами. Хуже студента, впервые осваивающего программирование на МК... После указания ошибок получали вписанный кое как кусок патча, без заботы об остальном. По этому обращаться к ним не стоит - испортят и то, что пока работает и украдено из open-source.
Если посмотреть, когда была проделана хоть какая-то работа по прошивке - то это когда Espressif проходил сертификацию чипа (это перед выходом 0.9.5). Теперь он её имеет и что-то делать далее у них мотивов нет.
PS: я вообще не "программист", только частично...
 
Последнее редактирование:

pvvx

Активный участник сообщества
Если будете делать изменения в веб файлах, предупредите пожалуйста в каких местах...
так как я вчера начал приводить все в порядок.
Качественных изменений пока не будет. Было исправление ошибок, т.к. переменные сменили разделители c '.' на '_' и не везде сменил (проглядел). Когда набросаете первую версию, всё равно придется проверять и если что - подправлю, а далее синхронизнемся...
 

Algis

New member
Качественных изменений пока не будет. Было исправление ошибок, т.к. переменные сменили разделители c '.' на '_' и не везде сменил (проглядел). Когда набросаете первую версию, всё равно придется проверять и если что - подправлю, а далее синхронизнемся...
Прикрепляю промежуточную WEBFiles версию, остались непереработанные vdd.htm, test.htm и js файлы,
инициализацию форм переделал через общую функцию setFormValues(), таймер перезагрузки на reloadTimer.reload(), работоспособность форм проверял но не полностью.
Посмотрите, напишите свои замечания.
 

Вложения

  • Like
Реакции: pvvx

CHERTS

Moderator
Команда форума
Коллеги, pvvx, а не проще ли выложить данный проект на github и можно было бы вести коллективную разработку? Или проще перекидываться файлами через форум?
 

pvvx

Активный участник сообщества
Коллеги, pvvx, а не проще ли выложить данный проект на github и можно было бы вести коллективную разработку? Или проще перекидываться файлами через форум?
А вы заметьте - это всего первое "перекидывание" и то предварительной версии, которую ещё надо адаптировать :)
Данная "свалка" не какой-то конкретный проект и при github будет возникать множество противоречий, т.к. у него нет конкретных целей и соответственно нет их решений, а так-же постоянно делаю всякие тестовые вставки, которые потом могут быть вообще удалены из-за ненадобности.
Сформируется TCP2UART проект - его можно и выложить в github. Там почти всё однозначно и уже возможно коррекция в github.
Прикрепляю промежуточную WEBFiles версию, остались непереработанные vdd.htm, test.htm и js файлы,
инициализацию форм переделал через общую функцию setFormValues(), таймер перезагрузки на reloadTimer.reload(), работоспособность форм проверял но не полностью.
Всё очень хорошо. Большое Спасибо. Это тестовая версия и оставьте народу на "поиграться" - т.е. всё переделывать там не обязательно. Уже включил в "свалку".
Посмотрите, напишите свои замечания.
Наиболее необходимо переделать WEBFilesTCP2UART и желательно на русском языке - он для тех, кто не умеет редактировать СИ и HTML. Туда ещё необходим Help :(.
 
Последнее редактирование:

Algis

New member
Всё очень хорошо. Большое Спасибо. Это тестовая версия и оставьте народу на "поиграться" - т.е. всё переделывать там не обязательно. Уже включил в "свалку".
Очень приятно что вам понравилось, что удалось не только взять, но и кое-что дать сообществу :)
Наиболее необходимо переделать WEBFilesTCP2UART и желательно на русском языке - он для тех, кто не умеет редактировать СИ и HTML. Туда ещё необходим Help :(.
Хорошо, переделаю в течении ближайших дней.
 

pvvx

Активный участник сообщества
Полезли глюки на SDK0.9.6(b1) - после непродолжительного не обращения к ESP8266, если начинать закатывать новый диск, выскакивает: lmac.c 599 - это что-то крушится в закрытой части SDK... :(
Всё - переехал обратно на SDK 0.9.5, т.к. SDK 0.9.6 beta 1 слишком глючная в плане работы с WiFi (конкретно указывать не буду, но ошибок много - пусть Espressif сам думает или платит открытыми исходниками :) ) и надоело с этим бороться. На SDK 0.9.5 работает и + памяти больше. Счас откачу свалку обратно на SDK 0.9.5.
Чем дальше - тем больше багов у Espressif, а кто-то говорил, что их исправляют и исправят - ждите :) :) :)
 
Последнее редактирование:

-=Alx=-

New member
Algis, Если будете ещё переделывать - просьба выделить верх файлов включая меню в отдельный файл, так-же и с нижней частью. Это позволит проще дорабатывать внешний вид и компоновку. желательно назвать header.inc и footer.inc
pvvx, предложение - что если принять следующие правила:
файл начинается с точки - скрытый, только подключение в другой (include) или служебный (например конфиг)
файл начинается с "_" - защищенный, то же что сейчас папка protected
 

pvvx

Активный участник сообщества
низ - да, верх - там разные title, не хочется на более мелкие кусочки резать...
Уже в серии c footer.inc и мелкими поправками (изменились имена пару переменных) :)
У многих же главная задача - переписать (с) на свой, а без общего одного файла - это сложно, т.к. надо править дцать файлов :)
Для смартфонов адаптировать как лучше, чтобы само разворачивалось на весь экран?
IMG_5563sm.jpg
 
Последнее редактирование:

-=Alx=-

New member
низ - да, верх - там разные title, не хочется на более мелкие кусочки резать...
Из важного и разного для разных страниц там только таки title, да и тот на уровне как будет называться вкладка в браузере. Скрипты особенно нужные только на одной странице не так уж обязательно в head писать.
У многих же главная задача - переписать (с) на свой, а без общего одного файла - это сложно, т.к. надо править дцать файлов :)
Как вариант - мне больше © нравится чем (с). :)
Для смартфонов адаптировать как лучше, чтобы само разворачивалось на весь экран?
Если делать изначально для смартфонов то вопрос скорее - как будет разворачиваться не на смартфонах.
Вложил мои пробы.
Скелетон - плюс размер и сетка. Минус ничего готового - всё верстать отдельно.
Бутстрап - Плюсы что есть готовые решения почти под все элементы интерфейса и размеры экрана. минусы - размер gz только css 15kb плюс jquery плюс их скрипт. Выходит под 100 кб. пока что планирую его как основной вариант. Максимально упрощенная версия в комплекте и подключение тяжелых файлов с CDN если есть интернет.
 

Вложения

  • 269.2 KB Просмотры: 14

Algis

New member
Для смартфонов адаптировать как лучше, чтобы само разворачивалось на весь экран?
Самый простой способ - в некоторых пределах ширину сделать "резиновой",
например если в style.css поменять

width:530px;

на

min-width:530px;
max-width:800px;
 
Последнее редактирование:
Сверху Снизу