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

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

pvvx

Активный участник сообщества
Все, теперь все ясно стало. Спасибо.
webpages.espfs = 41376 байт
Эти же кошки в WEBFiles.bin = 41472 байта и никаких тормозов и тяжелых "сжимателей", без возможности дальнейшего изменения файловой системы.
Элементарный расчет говорит - программа распаковщика в esphttpd займет в малой flash больше, чем отъест увеличение диска без сжатия. В итоге в esphttpd места под диск с flash в 512к меньше. Мы тут "фичи" не делаем - это свойственно амерам и западенцам... :) У нас лень - матушка, а если рак свистнет - то сожмем на полную :)
 
Последнее редактирование:

pvvx

Активный участник сообщества
Проверка подачи запроса web-серверу разбитого на 12 кусков :)
 

Andy Korg

Moderator
Команда форума
Уважаемый pvvx подскажите пожалуйста за какие грехи функция int atoi(const char *nptr); попала в "espmissingincludes.h"? Лучше свое что-то использовать?
 

pvvx

Активный участник сообщества
Уважаемый pvvx подскажите пожалуйста за какие грехи функция int atoi(const char *nptr); попала в "espmissingincludes.h"? Лучше свое что-то использовать?
За не стыковку объявления - const char.
Там вообще бардак с объявлениями отсутствующих в *.h SDK функциях. Всё раскидано в разных файлах...
"espmissingincludes.h" - это выдрано из какого-то чужого проекта. А мне лень всё самому описывать.
 
Последнее редактирование:

CHERTS

Moderator
Команда форума
pvvx поясни пожалуйста по русски как считается хэш в в PVFS, а то другу не понятно как это делается
 

pvvx

Активный участник сообщества
pvvx поясни пожалуйста по русски как считается хэш в в PVFS, а то другу не понятно как это делается
В коде workspace\Web_base\app\web\WEBFS1.c
Код:
    uint16 nameHash = 0;
    uint8 *ptr; // указатель на имя файла
    // Calculate the name hash to speed up searching
    for(nameHash = 0, ptr = cFile; *ptr != '\0'; ptr++)
    {
        nameHash += *ptr;
        nameHash <<= 1;
        len++;
    }
В Visual Studio:
Код:
        public UInt16 nameHash;

        public String FileName
        {
            get { return this.fileName; }
            set
            {
                this.fileName = value;
                if(value == "")
                    this.nameHash = 0xffff;
                else
                {
                    this.nameHash = 0;
                    foreach (byte b in value)
                    {
                        nameHash += b;
                        nameHash <<= 1;
                    }
                }
            }
        }
JAVA:
Код:
    public int nameHash;
    public void SetFileName(String value)
    {
        this.fileName = value;
        if(value.compareTo("")==0)
            this.nameHash = 0xffff;
        else
        {
            this.nameHash = 0;
            for(byte b : value.getBytes())
            {
                nameHash += b;
                nameHash <<= 1;
            }
        }
        //System.out.println ("Vlaue : " + value + "nameHash  "+String.format("%x",nameHash));
    }
Есть исходники в Microchip\mla\v2014_07_22\framework\tcpip\utilities\mpfs2 на Java. Их надо немного покоцать :)
http://www.microchip.com/pagehandler/en-us/devtools/mla/home.html
Тут http://www.usriot.com/Product/84.html -> Customzied Webpage - WIFI Module Low Power вообще сжатия и т.д. не используют.
 
Последнее редактирование:

Serjkruch

New member
Добрый день.
Подскажите пожалуйста, я скачал с первой странице Web_base но при загрузке в ESP возникает ошибка:

mingw32-make.exe -f C:/Espressif/examples/Web_base/Makefile FlashAll
C:/Python27/python.exe c:/Espressif/utils/esptool.py -p COM4 -b 115200 write_flash -ff 80m -fm qio -fs 4m 0x00000 ./bin/0x00000.bin 0x0A000 ./webbin/WEBFiles.bin 0x40000 ./bin/0x40000.bin 0x79000 ./bin/clear_eep.bin 0x7C000 ./bin/esp_init_data_default.bin 0x7E000 ./bin/blank.bin
C:/Espressif/examples/Web_base/Makefile:135: recipe for target 'FlashAll' failed
process_begin: CreateProcess(NULL, C:/Python27/python.exe c:/Espressif/utils/esptool.py -p COM4 -b 115200 write_flash -ff 80m -fm qio -fs 4m 0x00000 ./bin/0x00000.bin 0x0A000 ./webbin/WEBFiles.bin 0x40000 ./bin/0x40000.bin 0x79000 ./bin/clear_eep.bin 0x7C000 ./bin/esp_init_data_default.bin 0x7E000 ./bin/blank.bin, ...) failed.
make (e=2): Не удается найти указанный файл.

mingw32-make.exe: *** [FlashAll] Error 2

Оказывается это иправляется в Makefile
ESPTOOL ?= $(SDK_TOOLS)/esptool
#ESPTOOL ?= C:/Python27/python.exe $(SDK_TOOLS)/esptool.py
 
Последнее редактирование:

pvvx

Активный участник сообщества
Исходники (указание на первой странице) обновлены. Теперь они совместимы с
Прошивка TCP2UART переходника с настройкой по Web
Основные отличия:
1) Символ разделителя у переменных. Была точка, стало подчеркивание.
2) Дополнено вызовом функций по концу передачи страницы. Необходимо для настроек использующих перезагрузку или смену параметров соединения. Иначе при отработке таких функций передача страницы прерывается и эксплорер вечно ожидает...

Текущие проблемс на всех стандартных модулях:
CH_PD выключает встроенный стабилизатор питания (1В) потрохов чипа и все настройки в RTC RAM улетают - нога питания RTC не выведена. Это не дает возможности правильно использовать многие режимы малого потребления.
 
Последнее редактирование:

JustACat

Moderator
Команда форума
нога питания RTC не выведена
А кто-нибудь вообще проверял эту ногу? Да, я знаю, что она нигде пока толком не выведена из доступных модулей. Но подпаяться ведь можно, как народ подпаивался для увеличения кол-ва пинов. У кого глаз зоркий и рука верная? :)
Просто меня терзают смутные сомнения, что оно вообще работает. В доках видел, что на этом пине значится NC - Not Connect... Потому его и не выводят, думаю...
 

pvvx

Активный участник сообщества
А кто-нибудь вообще проверял эту ногу? Да, я знаю, что она нигде пока толком не выведена из доступных модулей. Но подпаяться ведь можно, как народ подпаивался для увеличения кол-ва пинов. У кого глаз зоркий и рука верная? :)
Просто меня терзают смутные сомнения, что оно вообще работает. В доках видел, что на этом пине значится NC - Not Connect... Потому его и не выводят, думаю...
Плохо думаете: http://wiki.in-circuit.de/images/e/eb/610000292A_handout.pdf , уже указывал в http://esp8266.ru/forum/threads/arduino-5v-i-pravilnoe-podkljuchenie.88/page-5#post-2541
----------
И вернемся к потреблению при соединении модуля к AP (ASUS RT-N56U), модуль в режиме STATION и никаких обращений к модулю не производится (обстановка вокруг - десятки станций WiFi и устройств :) ).
SDK 0.9.6b1, ESP-01 cо светодиодом в питании, Flash W25Q128FV, QSPI 80MHz (2 такта CS, вместо 7 в стандарте), CPU 160MHz:
Power_ST_CPU160MHz.gif
Частичные объяснения http://bbs.espressif.com/viewtopic.php?f=7&t=171
 
Последнее редактирование:

JustACat

Moderator
Команда форума
pvvx, да, я это видел и читал, стараюсь ваши сообщения все читать по возможности :)
Но я спрашивал именно: проверял ли кто-нибудь это реально. Подтверждения есть, что оно работает?
А то так: ну вывели на каком-то сферическом модуле в вакууме, а оно может и без толку...
Я бы проверил, но у меня: а) модули под шилдами все, но даже если я отковыряю один: б) я тупо не смогу со своим зрением такое запаять :( Просто испорчу модуль и все...
 

pvvx

Активный участник сообщества
pvvx, да, я это видел и читал, стараюсь ваши сообщения все читать по возможности :)
Но я спрашивал именно: проверял ли кто-нибудь это реально. Подтверждения есть, что оно работает?
А то так: ну вывели на каком-то сферическом модуле в вакууме, а оно может и без толку...
Я бы проверил, но у меня: а) модули под шилдами все, но даже если я отковыряю один: б) я тупо не смогу со своим зрением такое запаять :( Просто испорчу модуль и все...
Конкретно же написал - при активации ноги CH_PD питание в модуле вырубается и соответственно выключается RTC (часики то-биш), а в них настройки как и что делать после просыпания, а так-же и таймер, который перезапускает модуль после deep-sleep.
В других модулях эта нога не выведена и причина указана тоже - это китай-маркетинг, чтобы продать старые партии кривых чипов. Купив первый модуль, с выведенными 4-мя ногами, вы поймете сто нужен другой - с больше выведенных ног и купите его. Так окупают свою разработку чипа китайцы. А указанный модуль - это от немцев. Они такой маркетинг не строят и делают сразу полноценно :p. А вышел он недавно - по причине, что сертификацию они прошли своих модулей менее месяца назад.
 
Последнее редактирование:

JustACat

Moderator
Команда форума
pvvx, я может вас в чем-то не понимаю, согласен. Но я что имею ввиду: а если мы на ногу VDD-RTC подадим питание (с батарейки, например, часовой), тогда RTC продолжит работать (независимо от CH_PD и вообще общего питания)? Вот это конкретно кто-нибудь проверил физически, не теоретически?
 

pvvx

Активный участник сообщества
pvvx, я может вас в чем-то не понимаю, согласен. Но я что имею ввиду: а если мы на ногу VDD-RTC подадим питание (с батарейки, например, часовой), тогда RTC продолжит работать (независимо от CH_PD и вообще общего питания)? Вот это конкретно кто-нибудь проверил физически, не теоретически?
Возьмите и проверьте. Если это не работает, то весь SDK на свалку, т.к. там именно так задействовано RTC и его память. Есть только условие, что чипы данной ревизии имеют ошибку или недоработку с этим выводом... Иначе бы данные из RTC RAM в SDK писали бы в Flash.
----
Продолжение про режимы WiFi-sleep:
Свежевынутый из пакетика ESP-01:
Power_ST_CPU160MHz_GD.gif
Все условия как описано ранее, кроме flash: SDK 0.9.6b1, ESP-01 cо светодиодом в питании, Flash GD25Q40, QSPI 80MHz (2 такта CS, вместо 7 в стандарте), CPU 160MHz
Выбирал наименьшие по показаниям куски. В режимах включенного sleep всё зависит от обстановки в эфире.

Тест со стандартным конфигом: SDK 0.9.6b1, ESP-01 cо светодиодом в питании, Flash GD25Q40, QSPI 80MHz (7 тактов CS), CPU 80MHz:
Power_ST_standard_GD.gif
Снято позже - народ угомонился и WiFi обстановка стала чище :)
Итого - 80/160MHz на потребление в режиме ожидания не влияет. Влияет только тип flash.
 
Последнее редактирование:

pvvx

Активный участник сообщества
Но я что имею ввиду: а если мы на ногу VDD-RTC подадим питание (с батарейки, например, часовой), тогда RTC продолжит работать (независимо от CH_PD и вообще общего питания)? Вот это конкретно кто-нибудь проверил физически, не теоретически?
Не прошло и года, как никто не проверял :)

Припаял провод к ножке 5 чипа ESP8266EX на модуле ESP-01.
Cделал такие замеры:

Ток и напряжение на VCC_RTC при отключенном питании у модуля:

5 uA при 850mV
7 uA при 950mV
15 uA при 1.2V


Ток на VCC_RTC при включенном питании на модуле:

32 uA при 1.2V (!)

Далее взял севшую батарейку AG13 (LR44) выдающую 1.25V на сопротивление тестера и сделал такие замеры:

Через диод КД521A, при выключенном питании модуля, от этой батарейки, на ноге VCC_RTC выходит ~0.9V, ток ~6 uA. При включенном питании модуля на VCC_RTC 1.09 V, ток от дохлой батарейки менее 0.005 nA (прибор показывает 0000.00 uA), напряжение на ножке ~1.08..1.09 V (скачет от помех на проводки).

Пробная запись в память RTC с последующими отключениями/включениями питания не стирается - всё Ok.

Элемент AG13 (LR44) рассчитан на 3 года предельного хранения. В начале имеет емкость 100..150 мА/ч - выходит, что он проработает на выключенном ESP8266 через диод именно эти 3 года.
Любимые в народе RTC PCF8583 (самые 'жручие' из известных мне) жрут аналогично - 2..10 uA при 1В ('даташит'). Но я паял провод к выводу VCC_RTC очень грязно и не мыл - может будет меньше, если всё сделать аккуратно...

ЗЫ: Когда кто что сам проверит на этом ESP 8266 ? :)
 
Последнее редактирование:

windalser

New member
Интересно, что за прибор позволяет снимать графики потребления?
По поводу потребления - в режиме light sleep mode средний ток великоват получается. Согласно http://bbs.espressif.com/viewtopic.php?f=7&t=171 он должен бы быть на порядок меньше..
Интересен был бы более детальный график - с разверткой не более 1 секунды.
---------------
По поводу самого сервера - никак не удается сконфигурировать SoftAP в режиме Auth Mode - любом не OPEN.
Захожу браузером с планшета.
 

pvvx

Активный участник сообщества
Интересно, что за прибор позволяет снимать графики потребления?
2 опторазвязанных синхронизированных AD7793 (24 бита НЧ ADC) показывающих напряжение и ток (напряжение на резисторе :) ) с БП с одинаковыми аналоговыми фильтрами и временной цепочкой. Калиброванных на ГОСТ-овском приборе в 4 знака по абсолюту (остальное - дифференциальное).
По поводу потребления - в режиме light sleep mode средний ток великоват получается. Согласно http://bbs.espressif.com/viewtopic.php?f=7&t=171 он должен бы быть на порядок меньше..
Интересен был бы более детальный график - с разверткой не более 1 секунды.
А нафиг она, если там стоят электролиты по питанию + стабилизатор напряжения 3.3V (кушающий до 10uA) ?
Об этом можно было догадаться по графику - там при низком токе видны огибающие...
Обычно интересен средний ток, а не пиковый.
Я не верю Espressif - ни одно сказанное ими ни разу не было правдой.
По поводу самого сервера - никак не удается сконфигурировать SoftAP в режиме Auth Mode - любом не OPEN.
Захожу браузером с планшета.
В последней выложенной версии есть дцать ошибок в HTML :) В версии для TCP2UART их меньше.
Слишком невнимательно переправлял базовый вариант на новый лад и это не обсуждается, т.к:
1) Исходники станиц к Web библиотеке примеров на CИ не имеют никакого отношения.
2) Это не готовый проект для игры.
3) Никто не дал другого варианта HTML и пока не хочет.
По мере собственных тестов подправлю :)
Поглядел - это прикольная ошибка не связана с HTML, а связана с SDK 0.9.6b1
SDK сообщает по каналу Station об AP:
apaut096b1.gif
Что типа всё Ok, но зайти на AP невозможно, если режим не OPEN...
Только если это первая загрузка с чиcтой flash (чистыми настройками WiFi у SDK) в самый первый раз установить режим отличный от OPEN - тогда тогда работает.
Поищу методу обхода очередного привета от Espressif... Напишу и сменю прошивку, как найду методу...
 
Последнее редактирование:

windalser

New member
спасибо pvvx - попробую :)
----
По поводу проблем с Espressif и потреблением в режиме lite sleep.
Подозреваю, что сам чип сделан на достаточно высоком уровне, его потенциал высок.
Все проблемы связаны с его программным обеспечением. Они просто не могут сделать качественно сложный продукт.
Допускаю, что они часто указывают потенциальные характеристики на сам чип, возможно они правдивы.
А вот выжать эти характеристики через прошивку нормально не могут, или пока не могут.

В режиме STATION после установки соединения с AP и включенном режиме lite sleep в случае отсутствия задач (состояние idle)
тактирование процессора и RF приемник включаются на короткое время (порядка 3 милисекунд) и затем оключаются на
DTIM beacon-интервал, задаваемый в настройках AP (100 ms, например). В таком состоянии спячки модуль должен потреблять
меньше одного милиампера (если отрезать красный светодиод).
По идее, можно было бы добиться среднего потребления менее 2 мА при DTIM3.
На практике средний ток гораздо больше по непонятной мне причине :(
 
Сверху Снизу