• Уважаемые посетители сайта esp8266.ru!
    Мы отказались от размещения рекламы на страницах форума для большего комфорта пользователей.
    Вы можете оказать посильную поддержку администрации форума. Данные средства пойдут на оплату услуг облачных провайдеров для сайта esp8266.ru
  • Система автоматизации с открытым исходным кодом на базе 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.
 
Сверху Снизу