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

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

AlexMelven

New member
попробовал соединить два устройства на базе web_base - одно как точка доступа, второе к нему цепляется клиентом. Раз во сколько-то времени клиент отваливается от точки и подцепляется снова. Анализ сообщений показал что при этом приходит Wifi event (1), reason (4), Assoc_expire.
кто-нибудь пробовал соединять их таким образом? Свисток компьютера к точке доступа ESP8266 подключается без отваливаний.
 

pvvx

Активный участник сообщества
Скажите, @pvvx
эта строка
Код:
os_printf("phy ver: %d, pp ver: %d.%d\n\n", (*((volatile uint32 *)0x6000107C))>>16, ((*((volatile uint32 *)0x600011F8))>>8)&0xFF, (*((volatile uint32 *)0x600011F8))&0xFF);
из esp8266web/startup.c at master · pvvx/esp8266web · GitHub
позволяет узнать версии библиотек только из вашего SDK ?
Как получить эти константы и для других библиотек стандартного SDK от Espressif, чтобы было видно применен ли очередной патч SDK в текущей сборке
Адреса хранения номеров версий указаны, они пишутся в RTC_RAM. Адреса (и указанный код СИ) взяты из дизасм стандартного стартового кода SDK и номера версий выводятся в COM порт при старте...
 

vad7

Active member
@AlexMelven, ну так у меня тоже от одного роутера постоянный реконнект, а от другого норм.
Глюк в SDK.
Сейчас есть вообще более свежая версия SDK - 2.0 (ESP8266_NONOS_SDK_V2.0.0_patch_20160809).
Может в нем исправили...
 

AlexMelven

New member
чтобы это проверить, нужно чтобы pvvx пересобрал webbase на новом SDK 2.0.0. У меня с ходу самого не получилось пересобрать библиотеки - теряются ссылки из китайских библиотек на какие-то новые функции, которые при пересборке уходят. Правда надежды мало на то что это там полечилось.. Я еще заметил что если переключать режимы работы wifi_set_opmode() - делать то STAION_MODE, то STATIONAP_MODE - часто начинают сыпаться исключения до срабатывания вачдога. Надеялся что это полечилось в 1,5,4 - сначала все работало, потом опять началось. Похоже зависит от погоды и ничего никто не лечил :( Мне нужно чтобы устройства могли связывать между собой, а не только через роутер..
 

mcmega

Member
Скачал последнюю версию архива и сделал все как в первом посте, установил Python27, проект не собирается... Подскажите пожалуйста что сделать?
Ошибки в Console:
Traceback (most recent call last):
File "C:/Espressif/examples/esp8266web/esptool.py", line 22, in <module>
import serial
ImportError: No module named serial
../Makefile:198: recipe for target '.output/eagle/bin/eagle.app.v6.bin' failed
mingw32-make[1]: *** [.output/eagle/bin/eagle.app.v6.bin] Error 1
mingw32-make[1]: Leaving directory 'C:/Espressif/examples/esp8266web/app'
mingw32-make.exe: *** [.subdirs] Error 2
C:/Espressif/examples/esp8266web/Makefile:255: recipe for target '.subdirs' failed
Если поменять
#SDK_TOOLS ?= c:/Espressif/utils
ESPTOOL ?= $(SDK_TOOLS)/esptool
то ошибки такие:
../Makefile:198: recipe for target '.output/eagle/bin/eagle.app.v6.bin' failed
process_begin: CreateProcess(NULL, /esptool elf2image -o ../bin/ -ff 80m -fm qio -fs 4m .output/eagle/image/eagle.app.v6.out, ...) failed.
mingw32-make[1]: Leaving directory 'C:/Espressif/examples/esp8266web/app'
make (e=2): Не удается найти указанный файл.
mingw32-make[1]: *** [.output/eagle/bin/eagle.app.v6.bin] Error 2
C:/Espressif/examples/esp8266web/Makefile:255: recipe for target '.subdirs' failed
mingw32-make.exe: *** [.subdirs] Error 2
 
Последнее редактирование:

mcmega

Member
@mcmega, Уже мильён раз писали, что нужно модуль pyserial для питона поставить.
Установил.
В переменной PATH дописл:
c:\Python27\
c:\Python27\Scripts\
Скачал и запустил get-pip.py
Через командную строку установил PySerial командой pip install pyserial

Все равно ошибки:
In function 'ReadHMS':
fost02.c:230:12: error: floating constant truncated to zero [-Werror=overflow]
T.d=((float)(T.ul))*0.005 - PTATD1; //calc. Temperature from ticks to [C] 36.92 0.3
^
fost02.c:230:12: error: floating constant truncated to zero [-Werror=overflow]
fost02.c:234:12: error: floating constant truncated to zero [-Werror=overflow]
RH.d=(float)(RH.ul)*0.5;
^
fost02.c:236:12: error: floating constant truncated to zero [-Werror=overflow]
RH.d=(T.d-25.0)*(0.01+0.00008*RH.d)-0.0000028*RH.d*RH.d+0.0405*RH.d-4.0;
^
fost02.c:236:12: error: floating constant truncated to zero [-Werror=overflow]
fost02.c:236:12: error: floating constant truncated to zero [-Werror=overflow]
fost02.c:236:12: error: floating constant truncated to zero [-Werror=overflow]
fost02.c:240:12: internal compiler error: Segmentation fault
if(RH.d>100.0) RH.d=100.0;
^
libbacktrace could not find executable to open
Please submit a full bug report,
with preprocessed source if appropriate.
See <http://gcc.gnu.org/bugs.html> for instructions.
make[4]: *** [.output/eagle/obj/fost02.o] Error 1
make[4]: Leaving directory `/c/Espressif/examples/esp8266web/ovls/sht7x/main'
make[3]: *** [.subdirs] Error 2
make[3]: Leaving directory `/c/Espressif/examples/esp8266web/ovls/sht7x'
make[2]: *** [.subdirs] Error 2
make[2]: Leaving directory `/c/Espressif/examples/esp8266web/ovls'
../Makefile:198: recipe for target '.output/eagle/bin/eagle.app.v6.bin' failed
mingw32-make[1]: *** [.output/eagle/bin/eagle.app.v6.bin] Error 2
mingw32-make[1]: Leaving directory 'C:/Espressif/examples/esp8266web/app'
mingw32-make.exe: *** [.subdirs] Error 2
C:/Espressif/examples/esp8266web/Makefile:255: recipe for target '.subdirs' failed
 

pvvx

Активный участник сообщества
Установил.
Все равно ошибки:
Опции компилятору вы обрезали и данный лог бесполезен.
Код:
c:/Espressif/xtensa-lx106-elf/bin/xtensa-lx106-elf-gcc -Os -Wall -Wno-pointer-sign -fno-tree-ccp -mno-target-align -mno-serialize-volatile -foptimize-register-move -Wundef -Wpointer-arith -Werror -Wl,-EL -fno-inline-functions -nostdlib -mlongcalls -mtext-section-literals -DICACHE_FLASH -DPBUF_RSV_FOR_WLAN -DLWIP_OPEN_SRC -DEBUF_LWIP  -I ./include -I ../include -I ../../include -I E:/ESP8266/git/esp8266web/include -I E:/ESP8266/git/esp8266web/app/include  -o .output/eagle/obj/fost02.o -c fost02.c
 

mcmega

Member
Я ничего не делал с настройками, сделал всё как по инструкции и добавил проект esp8266web-master, но ругался на пути и я переименовал в esp8266web.
Поясните пожалуйста более подробно, что нужно сделать?
 
Последнее редактирование:

pvvx

Активный участник сообщества
Я ничего не делал с настройками, сделал всё как по инструкции и добавил проект esp8266web-master, по ругался на пути и я переименовал в esp8266web.
Поясните пожалуйста более подробно, что нужно сделать?
Обратиться туда error: floating constant truncated to zero далее по той теме. У меня такой ошибки нет на Win7x64 и последней версии UDK.
Как вариант - стереть каталог с примером оверлея \ovls\sht7x (можно и других, если вами не используются).
 

-VenoM-

New member
Крутейший проект. Задела его, думаю, хватит ещё надолго.
Разбираюсь как работать с файлами html+ AJAX. http://esp8266.ru/forum/threads/html-redaktor-versija-html-dlja-esp8266.1460/ . Что в т.ч. в этом проекте и реализовано.

Хотел спросить, правильно ли понимаю последовательность действий для отправки файла на сервер.
1. Инициализация файловой системы.
Код:
WEBFSInit(); // файловая система
2. Открыть файл .
Допустим, прошили некий файл file.htm.
Код:
/******************************************************************************
* FunctionName : webserver_open_file
* Description  : Open file
* Parameters   : filename -- file name
* Returns      : 1 - open, 0 - no
*******************************************************************************/
LOCAL bool ICACHE_FLASH_ATTR webserver_open_file(HTTP_CONN *CurHTTP, TCP_SERV_CONN *ts_conn)
Чтобы его открыть:
webserver_open_file ('/file',ts_conn);

3. Отправить файл на сервер.

Код:
LOCAL void ICACHE_FLASH_ATTR web_send_fnohanle(TCP_SERV_CONN *ts_conn)
В эту ф-цию параметры уже переданы после
Код:
webserver_open_file()
?, т.е. просто её вызываем?
 
Последнее редактирование:

AlexMelven

New member
что за файлы вы собираетесь отправлять на сервер? Туда никакие файлы отправить нельзя. Они там ридонли. То что запаковал в компьютере и прошил в пзу - то и будет на сервере.
 

-VenoM-

New member
Отлично. Я прошил в ПЗУ, но его ещё ведь как-то нужно отправить, чтобы увидеть в браузере по соотв. адресу.
 

AlexMelven

New member
так вы написали отправить на сервер. Сервер находится в устройстве на esp8266. Браузер это не сервер. Если файл уже на диске сервера, то и вроде как отправлять ничего никуда не нужно. Или вы разбираетесь в механизме коммуникации вебсервера с браузером? Типа ввел в строке браузера адрес страницы, браузер передал запрос вебсерверу esp8266, тот ответил html кодом, сгенерированным на основе содержимого файла? В этом случае передача идет от сервера в браузер, а не наоборот.
 

-VenoM-

New member
Код:
Типа ввел в строке браузера адрес страницы, браузер передал запрос вебсерверу esp8266, тот ответил html кодом, сгенерированным на основе содержимого файла? В этом случае передача идет от сервера в браузер, а не наоборот.
Да. Я про это. Со строковой html страницей мне понятно. Но с файловой не очень. Поэтому спрашиваю правильно я понял работу ф-ций.
 

AlexMelven

New member
файловая html страница? Строковая html страница? Я ничего не понимаю. Так же как и просьбу помочь разобраться с передачей файла на сервер. Больше не нужно на сервер передавать что-ли? Зачем вам в самом начале разбирания понадобилось вникать в механизм коммуникации между браузером и вебсервером? Там все работает, там ничего менять не нужно - положил файл на диск вебсервера (читай - скопировал в папку WEBFiles проекта), удалил WEBFiles.bin из папки webbin (т.к. make не отслеживает изменения в папке WEBFiles сам), скомпилировал проект, получил новый файл диска WEBFiles.bin, прошил его в пзу по правильному адресу - все, этот файл на диске вебсервера. Теперь можно с ним работать - открывать по адресу как вебстраницу, если это вебстраница, читать как текстовый файл если это текстовый файл, использовать как xml если это он. Но это все делается или через браузер (механизм уже работает, его не нужно трогать, если конечно не решили добавить что-то свое), либо через код javascript или html - все файлы диска доступны.
PS. В любом случае, надо писать понятным языком, чтобы не плодить сотню страниц, разбираясь что вам нужно на самом деле.
 

-VenoM-

New member
Я хотел разобраться с функциями файловой системы и веб-сервера, чтобы использовать их в своём проекте.
 

AlexMelven

New member
вы до сих пор не ответили на вопрос - файл на сервер больше не нужно отправлять?
 
Сверху Снизу