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