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

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

aloika

Active member
Решил тут попробовать новейшую сборку веб-сервера, прошил, работает. Изменил ее под свой проект, прошил, работает. Вроде бы. Залил свой веб-интерфейс - глюки какие-то... Не работает толком. Начал глядеть...
Ага: было wifi_ap_aum - стало wifi_ap_auth, было что-то там dncp - стало что-то там dhcp и т.д. :) Короче, название некоторых переменных поменялись.

На веб-страничке помощи в таблице в разделе WiFi Soft AP кое-какие переменные от станции... просто поправить надо...

Также в таблице нет wifi_ap_ip.
Также wifi_st_sip=ip - похоже на ошибку, наверное, wifi_st_ip=ip будет правильно.
 
Последнее редактирование:

pvvx

Активный участник сообщества
На веб-страничке помощи в таблице в разделе WiFi Soft AP кое-какие переменные от станции... просто поправить надо...
Также в таблице нет wifi_ap_ip.
Также wifi_st_sip=ip - похоже на ошибку, наверное, wifi_st_ip=ip будет правильно.
Спасибо, когда полезу туда - подправлю.
 

eugen-gm

New member
Уважаемый PVVX. Отличная работа. Тестировал Modbus TCP / RTU RS-485 + WEB server как мост между двумя модулями, и как MODBUS TCP на RS485. Все работает.
Вопрос: при данном уровне развития может ли данный проект делать следующее- после включения выполнить wifi_scan и полученный scan.xml отправить на заданный сервер. Потом sys_sleep_us.
 

pvvx

Активный участник сообщества
Уважаемый PVVX. Отличная работа. Тестировал Modbus TCP / RTU RS-485 + WEB server как мост между двумя модулями, и как MODBUS TCP на RS485. Все работает.
Вопрос: при данном уровне развития может ли данный проект делать следующее- после включения выполнить wifi_scan и полученный scan.xml отправить на заданный сервер. Потом sys_sleep_us.
Нет. Для этого обычно нужен какой-то специальный протокол связи с конкретным сервером, а это уже спец. проект под тот сервер. Ну а влиять на сервер прошивка не может. Найдите какой стандарт по данном поводу - тогда можно и сделать. Да и это как-то совсем далеко от основной темы - встроенный web сервер.
Задачи web сервера - это передача и предоставление информации по запросу.
Почему внешнему серверу, если в сети появится ESP не запросить у него scan.xml и после прихода не дать команду sleep на назначенный срок?
 
Последнее редактирование:

pvvx

Активный участник сообщества
Продолжение про драйвера/оверлеи/отладка
Скинул пока как есть, т.е. для грамотных :)
В директории ovls вложен архив проекта примера Web_ovls.zip.
Его надо экспортировать, желательно в тот-же workspace Eclipse, где и web-свалка.
В Eclipse, для этого проекта прописать в конфигурации правильные пути на web-свалку:
Project->Properties->C++ General->Paths and Symbols->Includes->GNU C
Иначе Eclipse не видит Include
Для трансляции в основном Web_ovls\Makefile в первых строчках тоже задать директорию проекта (WEB_BASE)
Пример WEB_BASE = C:/ESP8266/workspace/esp8266web
Далее транслируем web-свалку и затем этот проект. Выходит бинарник, готовый для загрузки. Web_ovls\bin\sht7x.ovl
Загрузить в модуль можно и из Eclipse (сетевой адрес модуля меняется в Web_ovls\Makefile - UPLOADOPTION).
05:13:41 **** Build of configuration Default for project Web_ovls ****
mingw32-make.exe -f E:/ESP8266/git/Web_ovls/Makefile upload
C:/Python27/python.exe E:\ESP8266\git\Web_ovls\ovl_upload.py ./bin/sht7x.ovl http://sesp8266/fsupload
Start send ./bin/sht7x.ovl to http://sesp8266/fsupload
End, response code: 200

05:13:42 Build Finished (took 784ms)
Примеры загрузки на HTM даны в Web_ovls\bin
 
Последнее редактирование:

pvvx

Активный участник сообщества
На сегодня уже 4-ре оверлея.
iointr.ovl - счетчик дрыганий GPIO по прерываниям
sht7x.ovl - датчик влажности на I2C
udptp.ovl - UDP Test Port
wdrv.ovl - UDP Wave Port
Всякие примеры убраны из общего кода web-свалки и перенесены в оверлеи...
Наступила халява - всякие глупые задачи теперь можно решать загрузкой оверлеев с web-диска или по HTTP, по принципу - кому какие надо...
Help писать некогда. :) Примеры даны в WEBFilesTCP2UART...
 
Последнее редактирование:

shaman1010

Member
Скинул пока как есть, т.е. для грамотных :)
А можно для любопытных? :)
1) Если попытаться бинарник оверлея закинуть через http://IP/fsupload - получаем гарантированный
Image Corrupt or Wrong Version!
Если закинуть их в web-папку, то упаковываются туда.
2) положил оба проекта в одном воркспейсе (C:\ESP8266_workspace\Web_ovls и C:\ESP8266_workspace\esp8266web)
в либах, после импорта двух проектов, было: /esp8266web/include и /esp8266web/app/include, в оверлейный дописал еще /Web_ovls Но файлов проект не видит:
Код:
Description    Resource    Path    Location    Type
fatal error: user_config.h: No such file or directory    fost02.c    /Web_ovls/sht7x/main    line 5    C/C++ Problem
fatal error: user_config.h: No such file or directory    gpios_intr.c    /Web_ovls/oiintr/main    line 6    C/C++ Problem
fatal error: user_config.h: No such file or directory    i2c_drv.c    /Web_ovls/sht7x/main    line 7    C/C++ Problem
fatal error: user_config.h: No such file or directory    udp_test_port.c    /Web_ovls/udptp/main    line 5    C/C++ Problem
fatal error: user_interface.h: No such file or directory    wdrv.c    /Web_ovls/wdrv/main    line 7    C/C++ Problem
No break at the end of case    fost02.c    /Web_ovls/sht7x/main    line 206    Code Analysis Problem
Где туплю? (в обоих случаях)
 

pvvx

Активный участник сообщества
А можно для любопытных? :)
1) Если попытаться бинарник оверлея закинуть через http://IP/fsupload - получаем гарантированный
Image Corrupt or Wrong Version!
Если закинуть их в web-папку, то упаковываются туда.
2) положил оба проекта в одном воркспейсе (C:\ESP8266_workspace\Web_ovls и C:\ESP8266_workspace\esp8266web)
в либах, после импорта двух проектов, было: /esp8266web/include и /esp8266web/app/include, в оверлейный дописал еще /Web_ovls Но файлов проект не видит:
Код:
Description    Resource    Path    Location    Type
fatal error: user_config.h: No such file or directory    fost02.c    /Web_ovls/sht7x/main    line 5    C/C++ Problem
fatal error: user_config.h: No such file or directory    gpios_intr.c    /Web_ovls/oiintr/main    line 6    C/C++ Problem
fatal error: user_config.h: No such file or directory    i2c_drv.c    /Web_ovls/sht7x/main    line 7    C/C++ Problem
fatal error: user_config.h: No such file or directory    udp_test_port.c    /Web_ovls/udptp/main    line 5    C/C++ Problem
fatal error: user_interface.h: No such file or directory    wdrv.c    /Web_ovls/wdrv/main    line 7    C/C++ Problem
No break at the end of case    fost02.c    /Web_ovls/sht7x/main    line 206    Code Analysis Problem
Где туплю? (в обоих случаях)
В строке номер 7: WEB_BASE = C:\ESP8266_workspace\esp8266web, которая находится в C:\ESP8266_workspace\Web_ovls\Makefile
 

shaman1010

Member
В WEB_BASE = C:\ESP8266_workspace\esp8266web, который в C:\ESP8266_workspace\Web_ovls\Makefile
Конечно. Это было в первую очередь.
p.s. эклипс - луна, версия свалки 0.6.0
и там варнинг еще, на отсутствие брека.

Это 8-я строка, 7-я: UPLOADOPTION...
 
Последнее редактирование:

pvvx

Активный участник сообщества
Конечно. Это было в первую очередь.
p.s. эклипс - луна, версия свалки 0.6.0
Когда транслируется, то пишет такую длинную строку:
Код:
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/udp_test_port.o -c udp_test_port.c
В которой видно, какие инклуды заданы (у меня так, как WEB_BASE = E:/ESP8266/git/esp8266web ):
-I ./include
-I ../include
-I ../../include
-I E:/ESP8266/git/esp8266web/include
-I E:/ESP8266/git/esp8266web/app/include
Остальное, чисто для Eclipse, а то в редакторе она не видит ничего.
Трансляция то через "Make Target" окно и опцию там "all".
 

shaman1010

Member
Когда транслируется, то пишет такую длинную строку:
Код:
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/udp_test_port.o -c udp_test_port.c
У меня она чуток отличается:
Код:
DEPEND: c:/Espressif/xtensa-lx106-elf/bin/xtensa-lx106-elf-gcc -M -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 C:\ESP8266_workspace\esp8266web/include -I C:\ESP8266_workspace\esp8266web/app/include wdrv.c
wdrv.c:7:28: fatal error: user_interface.h: No such file or directory
Трансляция то через "Make Target" окно и опцию там "all".
Да, и с clean-ом предварительным, и без него.
 

pvvx

Активный участник сообщества
У меня она чуток отличается:
Код:
DEPEND: c:/Espressif/xtensa-lx106-elf/bin/xtensa-lx106-elf-gcc -M -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 C:\ESP8266_workspace\esp8266web/include -I C:\ESP8266_workspace\esp8266web/app/include wdrv.c
wdrv.c:7:28: fatal error: user_interface.h: No such file or directory

Да, и с clean-ом предварительным, и без него.
Ну вот - палочки в другую сторону - не "\" а "/" - поменяйте в WEB_BASE = X:/ESP8266/workspace/Web_Base
 

shaman1010

Member
Ну вот - палочки в другую сторону - не "\" а "/" - поменяйте в WEB_BASE = X:/ESP8266/workspace/Web_Base
За секунду до ответа поменял :) Спасибо, вродеб то собралось, Но тот варнинг так и висит.

Кстати в мейке свалки тоже оверлей для сборки по идее стоит добавить :)
 

pvvx

Активный участник сообщества
За секунду до ответа поменял :)
Между тем ответом - скачал с git и всё установил в новый воркспейс и тоже получил ту ошибку от палочек :)
Спасибо, вродеб то собралось, Но тот варнинг так и висит.
Какой варнинг? В самом редакторе Eclipse? Там надо опции менять на проекте...
Выбираете активным Web_ovls и в меню Project->Properties->C++ General->Paths and Symbols->Includes->GNU C настраиваете инклуды. Скрипт обрабатывать Эклипсовские установки не охота писать, т.к. наверно солью всё в единый проект, но позже. Надо найти что и как там будет развиваться, а потом уже сливать... Времени на Help то самой web-свалке и даже поправить простые грам. ошибки счас пока нет.
 

shaman1010

Member
Какой варнинг?
Вот этот...
Код:
No break at the end of case    fost02.c    /Web_ovls/sht7x/main    line 206    Code Analysis Problem
Хотя сейчас отклинил и опять собрал - нет его.... Странно както :) (Палочки в предыдущем сегодняшнем релизе я тоже менял - тогда не собиралось все-равно).
Вы видать волшебные слова для дистанционного управления железом используете :) (очень много.....битные)

Пересобрал и web сервер (у меня он в STA сразу, без AP) и оверлеи - через http://IP/fsupload оверлей не закидывается...
 

pvvx

Активный участник сообщества
Вот этот...
Код:
No break at the end of case    fost02.c    /Web_ovls/sht7x/main    line 206    Code Analysis Problem
Хотя сейчас отклинил и опять собрал - нет его.... Странно както :) (Палочки в предыдущем сегодняшнем релизе я тоже менял - тогда не собиралось все-равно).
Вы видать волшебные слова для дистанционного управления железом используете :) (очень много.....битные)
Ну это я не знаю как ему объяснить, что 'No break at the end of case' так и надо :) Это есть главная фишка switch(), а он считает это варнингом :(
Забыл включить в git (закинуть) сами *.ovl в папку WEBFilesTCP2UART - докинул.
Пересобрал и web сервер (у меня он в STA сразу, без AP) и оверлеи - через http://IP/fsupload оверлей не закидывается...
А и не должен. Это загрузка диска. Там в мултидате волшебное слово не "file", а "overlay"
 
Последнее редактирование:

shaman1010

Member
Забыл включить в git (закинуть) сами *.ovl в папку WEBFilesTCP2UART - докинул.
Я их туда руками добрасывал, и в мейке добавил. Вопрос в том, что отдельно оверлейный файл через http://IP/fsupload не забрасывается. Но должен, как я смотрю по примерам...

Речь о версии с гита (свалка тоже), может там чуток чего-то не доправлено? (хотя светится много изменений, и, похоже, все в тему)
 

pvvx

Активный участник сообщества
Я их туда руками добрасывал, и в мейке добавил. Вопрос в том, что отдельно оверлейный файл через http://IP/fsupload не забрасывается. Но должен, как я смотрю по примерам...
Уже заметил это и написал что не так.
А и не должен. Это загрузка диска. Там в мултидате волшебное слово не "file", а "overlay"
Web-свалка уж давно и посекторно может писать flash по "fsec_xxx" в мультидате... xxx - номер сектора.
Т.е. там такие волшебные слова:
"sysconst", "overlay", "fsec_", "file"
Дописал про это тут: http://esp8266.ru/forum/threads/razrabotka-biblioteki-malogo-webservera-na-esp8266.56/#post-563

Для оверлеев команды пока такие:
ovl=имя_файла_на_web_диске
ovl$=N, где N - число. 0 - close, 1 - инициализация. Другие значения - передача опций для оверлея и специфичны.
ovl@=строка или список параметров - пока не задействована ни в одном примере.
аналогично ~ovl:имя_файла_на_web_диске~, ~ovl$N~, ~ovl@строка~ и в этих случаях ещё возврат в поток TCP есть - счас передает номер ошибки.
Параметры инициализации и ответы для всех оверлеев все находятся в modbus таблице и имеют доступ к ним с любых "дырок".
 
Последнее редактирование:

aloika

Active member
pvvx, а подскажите, пожалуйста - можно ли из этой сборки как-нибудь отправить GET-запрос на какой-нибудь внешний сайт? хотя бы куда посмотреть, чтобы это сделать.
 

pvvx

Активный участник сообщества
pvvx, а подскажите, пожалуйста - можно ли из этой сборки как-нибудь отправить GET-запрос на какой-нибудь внешний сайт? хотя бы куда посмотреть, чтобы это сделать.
Прошивка работает клиентом в TCP2UART и Modbus TCP.
 
Сверху Снизу