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

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

pvvx

Активный участник сообщества
Ответ есть на форуме.
P.S.: по-моему тему пора чистить, потому что 40 страниц читать для новичков уже становится сложным )
А нет никакого смысла чистить и читать старое. Надо FAQ. Всё равно у каждого свои вопросы и когда одна страница и всё строго, то многие стесняются их задавать. А тут именно "Web-свалка" ...
 

pvvx

Активный участник сообщества
Как быть то, как запустить Python27?
Один из путей для вас: Скопировать esptool.py в c:/Espressif/utils и странслировать c помощью py2exe_esptool.cmd. Затем раскомментировать строку
[HASHTAG]#ESPTOOL[/HASHTAG] ?= $(SDK_TOOLS)/esptool
а следующую
ESPTOOL ?= C:/Python27/python.exe $(CWD)esptool.py
закомментировать.
Но у меня C:/Python27/python.exe $(CWD)esptool.py работает во всех проектах и в разных версиях Eclipse и UDK.
Вложеный в проект esptool.py работает со всем другими проектами UDK, что не сказать о имеющемся в UDK (тот содержит массу ошибок)
 

Perfer

New member
Поддерживаю идею pvvx создания FAQ по по коду/структуре проектов https://github.com/pvvx/MinEspSDKLib и https://github.com/pvvx/esp8266web. Привожу здесь свой список вопросов и ответов от pvvx (из лички)
Вопрос: ROM-BIOS - почему так называется? по факту ведь обычный планировщик!
Ответ (pvvx): ROM - это не flash, ReadOnlyMemory. BIOS - это базовая система ввода вывода. В чипе ESP8266 находится 64к ROM, в ней записана базовая система загрузки и обработки всякого, т.е. BIOS
Вопрос: call_user_start кто ее вызывает? Bootloader ? или хто?
Ответ (pvvx): call_user_start вызывает загрузчик в ROM-BIOS, адрес старта записан в заголовке FLASH. call_user_start - название, даваемое программе формирования заголовка flash для прошивки.
Вопрос: коды из папки info в прошивку не входят?
Ответ (pvvx): Нет. Это только в качестве информации и может быть не совсем корректно для трансляции. Беглый ревеср

Вопрос: кто обеспечивает запись структуры g_ic в flash? где-нибудь есть полное описание это структуры кроме libmain.h?
Вопрос: почему инициализация протоколов проводиться в user_init() а не в lwip_init(), где все функции инициализации заменены пустышками? :)
 

pvvx

Активный участник сообщества
Вопрос: кто обеспечивает запись структуры g_ic в flash? где-нибудь есть полное описание это структуры кроме libmain.h?
Есть у Espressif. Это закрытая информация, а данный файл получен путем "реверса" их бинарных библиотек из SDK. 'Запись', т.е. инициализацию структуры g_ic в bss обеспечивает закрытый код в SDK.
Подпишите NDA, запросите у Espressif исходники, да опубликуйте нам :)
Вопрос: почему инициализация протоколов проводиться в user_init() а не в lwip_init(), где все функции инициализации заменены пустышками? :)
А какое отношение имеет LwIP к массе другого функционала ?
Да и в user_init() LwIP ещё не работает. Таймеры и 'таски' начинают работать только в ets_run() и только когда она исполняется. Т.е. только после исполнения init_done_cb(), назначенной в system_init_done_cb(init_done_cb).
Чем больше назначено таймеров и мал их период, тем больше жрет ESP8266ex. В режиме ожидания прерывания в процедуре ets_run() потребление модулем до пары mA (если в данный момент выключен блок WiFi)... и десяток mA при включенном WiFi на прием (ожидание приема пакета)
 
Последнее редактирование:

Perfer

New member
А какое отношение имеет LwIP к массе другого функционала ?
Хорошо, но тогда назначение вот таких вызовов в init.c (LwIP):
Код:
tcp_init();  
udp_init(); 
raw_init();
когда объявлено что:
Код:
#define raw_init()
#define udp_init()
#define tcp_init()
не очень понятно
 

pvvx

Активный участник сообщества
Хорошо, но тогда назначение вот таких вызовов в init.c (LwIP):
Код:
tcp_init();
udp_init();
raw_init();
когда объявлено что:
Код:
#define raw_init()
#define udp_init()
#define tcp_init()
не очень понятно
Обратитесь к разработчику LwIP :)
И там описано [HASHTAG]#define[/HASHTAG] tcp_init() /* Compatibility define, no init needed. */
А чаго там Compatibility хотел автор - я не знаю.
 

Tomahawk

New member
Хотелось бы написать ещё и простого клиента, который отсылает данные на сервер. Подключается к сторонней точке доступа, отправляет GET запрос на сервер. pvvx, где-то недавно вы писали, что в "tcp_srv_conn.с" теперь заработал клиент, он справится с поставленной задачей?) Как я понял, этот файл управляет lwip'ом. Следовательно, предварительно надо ещё соединиться с точкой. В сторону каких функций и си-файлов в проекте следует смотреть? И через какой буфер будет происходить передача?
 

pvvx

Активный участник сообщества
Хотелось бы написать ещё и простого клиента, который отсылает данные на сервер. Подключается к сторонней точке доступа, отправляет GET запрос на сервер. pvvx, где-то недавно вы писали, что в "tcp_srv_conn.с" теперь заработал клиент, он справится с поставленной задачей?) Как я понял, этот файл управляет lwip'ом. Следовательно, предварительно надо ещё соединиться с точкой. В сторону каких функций и си-файлов в проекте следует смотреть? И через какой буфер будет происходить передача?
Клиент работает для TCP2UART. Вводите ip и он соединяется... При указании 127.0.0.1 или 'none' или пустой строки - TCP2UART переходит в режим сервера. Url пока не отрабатывается - слишком много условий и так.

Клиент/сервер TCP2UART включается по событию WiFi event EVENT_STAMODE_GOT_IP и EVENT_SOFTAPMODE_STACONNECTED. Далее клиент TCP2UART пытается соединиться каждые 5 секунд. Для клиента желательно установить таймауты соединения...
Сделал и отключение TCP2UART по WiFi events...
Да, и увеличилось место для Web диска на 512 k Flash до 256 килобайт.

PS: в примере SNTP делается запрос на получение ip из строки url через dns... SNTP тоже стартует по WiFi events...
 
Последнее редактирование:

pvvx

Активный участник сообщества
Web-свалка переехала на SDK 1.3.0, точнее на meSDK 1.3.0.
Реал heap 43480 (во время HTTP запроса, с открытыми буферами).
 

pvvx

Активный участник сообщества
В свалку добавлено:
1) В режиме теста с примером обработка NMI вектора ([HASHTAG]#define[/HASHTAG] USE_NMI_VECTOR).
2) Добавлена опция задания паузы между подключением ST к внешней AP (пока через патч, т.к. в китай-SDK сплошные баги с событиями и вокруг этого - обещают исправить).
wifi_st_rect=0..8192 в сек...
 
Последнее редактирование:

pvvx

Активный участник сообщества
Переезд на китай-SDK ver: 1.3.0 compiled: Aug 19 2015 17:50:07 (версия 2, с поправками от китайцев - типа будущая 1.4.0...).
Реконнект ST по событиям заработал. AP вроде не отваливается... Патч SDK для событий отключен.
 
Доброй ночи pvvx ! Давно сюда не заходил. Снова интересует вопрос :
Появилась ли возможность через веб интерфейс достучаться к юарту ?
Очень нужен этот функционал.....
Веб страницы чтоб хранить в модуле и вебсервером выступал модуль, а данные ( не большие объёмы ) 3-24 Байта чтобы можно было отдавать/принимать в/из юарт.
 

pvvx

Активный участник сообщества
Доброй ночи pvvx ! Давно сюда не заходил. Снова интересует вопрос :
Появилась ли возможность через веб интерфейс достучаться к юарту ?
Очень нужен этот функционал.....
Веб страницы чтоб хранить в модуле и вебсервером выступал модуль, а данные ( не большие объёмы ) 3-24 Байта чтобы можно было отдавать/принимать в/из юарт.
Этого скорее всего не будет. Web многопользовательский, UART - нет. Если 10 клиентов посылают 3-24 Байта, то как их и куда? Да кому из них и что отвечать?
Такую задачу я не в состоянии решить - используйте Arduino :)
Что-то подобное готовиться, но ещё далеко. Вам думаю не подойдет, т.к. это будет Modbus сервер на RS-485, а Web будет отображать/запрашивать значения у устройств на Modbus, но по типу через ОПС-сервер...
 
Последнее редактирование:
Этого скорее всего не будет. Web многопользовательский, UART - нет. Если 10 клиентов посылают 3-24 Байта, то как их и куда? Да кому из них и что отвечать?
Такую задачу я не в состоянии решить - используйте Arduino :)
Что-то подобное готовиться, но ещё далеко. Вам думаю не подойдет, т.к. это будет Modbus сервер на RS-485, а Web будет отображать/запрашивать значения у устройств на Modbus, но по типу через ОПС-сервер...
Нужно только получать и передавать данные с одного клиента .
Если такого нет , то подскажите какая есть прошивка чтобы работала хорошо ? Нужна либо АТ прошивка , либо любая похожая , чтобы веб сервер сделать силами внешнего АRM микроконтроллера.
Заранее спасибо.
 

Tomahawk

New member
Появилась ли возможность через веб интерфейс достучаться к юарту ?
Если проект называется TCP2UART, то как думаете это возможно? :) Передать переменные из веб-интерфейса в МК возможно, отправить пакет данных в uart тоже. Осталось только разобраться и сделать.
 

aloika

Active member
Такую задачу я не в состоянии решить - используйте Arduino :)
Артемий, pvvx шутит :) Видите, там смайлик. Конечно, это сделать можно, более того, это уже сделано.
А именно: посмотрите проект от Andy Korg про часы, и/или мою микро-разработку тут. У Andy Korg много всего наворочено, у меня всего несколько команд реализовано. Но принцип тот же.
 
Последнее редактирование:

pvvx

Активный участник сообщества
Ни у кого случаем не осталось старой сборки pvvx ранее расположенной по адресу: https://yadi.sk/d/RoB2HR2xdnBBE и сейчас недоступной?
Не осталось, но по вашему вопросу (из лички) с адресом загрузкой WEBFiles.bin описание на первой странице темы исправлено.
Диск проще загрузить после прошивки кодами по HTTP или PVFS2.exe, т.к. адрес загрузки диска будет вычислен автоматически.
 
@Артемий, @pvvx шутит :) Видите, там смайлик. Конечно, это сделать можно, более того, это уже сделано.
А именно: посмотрите проект от Andy Korg про часы, и/или мою микро-разработку тут. У Andy Korg много всего наворочено, у меня всего несколько команд реализовано. Но принцип тот же.
Спасибо ))) прикола не понял ) домой приеду - буду разбираться ) Спасибо!
 
Последнее редактирование:
Сверху Снизу