• Система автоматизации с открытым исходным кодом на базе 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;
 
Последнее редактирование:
Сверху Снизу