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

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

pvvx

Активный участник сообщества
А что будет, если в Windows 2 (и более) сетевых карты и, соответственно, соединения - например, по проводной сети идет инет, а по wi-fi "свистку" - соединяюсь с ESP8266. И что получится тогда, при вводе любого адреса будет перекидывать на ESP?
Да, если последнее соединение было с нашим модулем :) т.е. всё будет перенаправлено на aesp8266.
Иначе надо корректировать route в винде...
 
Последнее редактирование:

Tomahawk

New member
Заметил, что в функции web_int_callback в именах переменных (например, "sdkver") нельзя использовать числа от 10 и выше. Т.е. если задать переменнные Name1 .. Name30, начиная с Name10 увидим неверные данные. Пришлось нумеровать буквами )
 

pvvx

Активный участник сообщества
Заметил, что в функции web_int_callback в именах переменных (например, "sdkver") нельзя использовать числа от 10 и выше. Т.е. если задать переменнные Name1 .. Name30, начиная с Name10 увидим неверные данные. Пришлось нумеровать буквами )
Это не верно. Ставьте правильную последовательность парсинга (Nane10, Name11, ... Name1) или разбирайте "Name" и далее число по atoi() и т.д.
ifcmp("Name") {
swith(ahextoul(cstr+4)){
case 0:
...
case 4294967295:
}}
sys_ramNNNN - работает и выбирает любой адрес :) Как и gpioNN_xxx от 0 до 16...
 
Последнее редактирование:

aloika

Active member
Да, если последнее соединение было с нашим модулем :) т.е. всё будет перенаправлено на aesp8266.
Иначе надо корректировать route в винде...
Попробовал, прошил. Работает не совсем так, как описано.

1. Под виндой:
  • Если в винде стоит опция "Включить NetBios через TCP/IP", то при единственном сетевом подключении, действительно, любой запрос перенаправляется на http://aesp8266.
  • Если подключение не единственное (как у меня - инет по проводной сети, модуль через "свисток") - то инет работает, ничего никуда не перенаправляется, к модулю можно обратиться только через 192.168.4.1, Windows 8.1, если это имеет значение.
  • Если в опция "Включить NetBios через TCP/IP" не стоит, то все плохо - к модулю не получается обратиться никак вообще. Ввожу 192.168.4.1 - в строке адреса появляется http://aesp8266, но сама страничка не грузится. Проверено на Win8.1 и XP.
  • И надпись не вылезает, как обещано. Ни на 8, ни на ХР.

2. А под андроидом все хорошо и красиво вообще - вылезает иконка "Подключение к сети" со знаком вопроса, туда тычешь - сразу перекидывает на веб-интерфейс. Проверено под Android 4.1. и под 5. И да, любой адрес в браузере вводишь - перебрасывает на веб.
 

pvvx

Активный участник сообщества
Попробовал, прошил. Работает не совсем так, как описано.
А у меня, как описал. Win7 x64 - вылазит "соо", Android 5.0.1 - ничего. В обоих работает перенаправление всего и вся.
Именно по причине нечеткой ситуации и данная фича не задействована.
Если подключение не единственное (как у меня - инет по проводной сети, модуль через "свисток") - то инет работает, ничего никуда не перенаправляется, к модулю можно обратиться только через 192.168.4.1, Windows 8.1, если это имеет значение.
Зависит от очередности подключения, если принудительно не указан основной шлюз.
Ещё, возможно, может происходить изменение route, если второй внешний IP не статический...
У меня статический IP и какой адаптер последний сконнектился - тот и является выходом в инет для windows (так винда работает по умолчанию).
Статья же дана: Как Windows определяет подключение к Интернету
В итоге о каждом запуске вашего инета в винде вот здесь знают :)
NetBios в данном процессе не участвует...
Samsung Note 4 у меня для тестов и там ничего с момента его покупки не трогал, кроме записной книжки телефонов - он основное своё рабочее время автообгредится по сотне мегобайт по wifi :)
Это всё к тому, что пока не знаю как сделать чтобы четко открывался web везде при подключении к AP нашего модуля. Winde для данного процесса нужен SSL... Предложите варианты... проверю и проверим...
 
Последнее редактирование:

pvvx

Активный участник сообщества
Замеры инициализации SDK 1.2.0 и соединения ESP8266 модуль_ST -> ESP8266 модуль_AP на текущей версии Web:
(Отладочные сообщения включены частично на 230400 baud)

Время событий после окончания deep_sleep() на Модуле_ST:
0.00 сек: импульс reset модуля
0.27 сек: user_init()
0.45 сек: init_done_cb()
0.57 сек: WiFi event 0, Connect to ssid ESP8266Mama, channel 1, dhcp client start…
1.34 сек: WiFi event 3, Station ip:192.168.3.2, mask:255.255.255.0, gw:192.168.3.1
Далее через менее 1 ms TCP client connected.
Имеем ужасный промежуток между событием соединения ST->AP и получением ip на ST (770 ms). Это с dhcp на ST.
При фиксированном адресе ST (ip:192.168.3.2) имеем подключение 'TCP client connected' на 0 sec 575 ms после reset от deep_sleep().
На старых SDK было значительно быстрее....
----
Покрутил ещё, со всеми инитами web свалки и выводом отладки в UART соединение модуля по TCP после сброса или deep-sleep с другим модулем устанавливается через 536 ms при фиксированном IP. Далее уже идет трансфер с 1 мегабайт в сек... Т.е. через 1 сек после старта уже возможно передать к 500 кило :rolleyes:
С роутерами всё гораздо сложнее... Но второй модуль ESP в режиме AP успешно работает в режиме посредника для пачки просыпающихся модулей с ST режимом для экономии батарейки. Пример проекта типа сигнализации с опросом датчика без инициализации SDK и deep-sleep с батарейкой и будет позже и наверно в другой теме...
 
Последнее редактирование:

pvvx

Активный участник сообщества
Ошибки:
Invalid project path: Include path not found (esp8266web\include)
MakeFile 241: @set -e; $(foreach d, $(SUBDIRS), $(MAKE) -C $(d);)
А больше нет esp8266web\include.
Оно теперь всё в esp8266web\app\include. Можно свободно перемещать esp8266web\app\include <-> esp8266web\include.
Скоро вообще SDK будет отдельно, как тут https://github.com/pvvx/MinEspSDKLib
Библиотекой типа libsdk120.a
 

mcmega

Member
Что то я совсем растерялся )...
Скачал архив esp8266web-master.zip
Распаковал, переименовал папку с проектом esp8266web и записал её в C:\Eclipse\workspace\esp8266web\файлы проекта
Импортировал проект в Eclipse
А он не собирается.... и папку include туда сюда копировал... Что не так делаю?
Ошибки:
mingw32-make.exe: *** [.subdirs] Error 2
mingw32-make[1]: *** [.output/eagle/bin/eagle.app.v6.bin] Error 1
recipe for target '.output/eagle/bin/eagle.app.v6.bin' failed (Line 199)
recipe for target '.subdirs' failed (Makefile Line 241)
Invalid project path: Include path not found (esp8266web\include)
 
Последнее редактирование:

mcmega

Member
mcmega, в Project\Properties\C\C++ General\Path and Symbols\Includes\GNU C\ всё совпадает?
В C прописано /esp8266web/app/include
В C++ прописано /esp8266web/app/include
Всё равно ошибки:
mingw32-make.exe: *** [.subdirs] Error 2
mingw32-make[1]: *** [.output/eagle/bin/eagle.app.v6.bin] Error 1
recipe for target '.output/eagle/bin/eagle.app.v6.bin' failed (Line 199)
recipe for target '.subdirs' failed (Makefile Line 241)
 
Последнее редактирование:

pvvx

Активный участник сообщества
mcmega, в Project\Properties\C\C++ General\Path and Symbols\Includes\GNU C\ всё совпадает?
Это, и другие установки в Eclipse никак не влияют на компиляцию. UDK не имеет конфигуратора и вообще никакой связи с makefile - автору копирования в один архив (UDK) это лень делать.
От Eclipse требуется только задать переменные среды PATH, CWD. Это в Project->Properties-> C/C++ build->environment.
Пример make.bat:
Код:
set CWD=E:\ESP8266\workspace\Web_Base\
PATH=C:\MinGW\bin;C:\MinGW\msys\1.0\bin;%PATH%
mingw32-make.exe -f Makefile all
CWD - это папка проекта, задается Eclipse автоматически и с ней могут быть связаны проблемы, когда она задана заранее, при экспорте...
 
Последнее редактирование:

mcmega

Member
Что то я ничего не понял... так что нужно сделать то, чтоб заработало?
 

pvvx

Активный участник сообщества

pvvx

Активный участник сообщества
А ссылка видимо битая на UDK, не качается ничего
Не битая она. Это её искажает форум и ваш эксполорер: https://github.com/pvvx/esp8266web/archive/master.zip
преобразуя во что-то типа [inline]http://esp8266.ru/forum/proxy.php?link=https://github.com/pvvx/esp8266web/archive/master.zip[/inline]
Пример.
Скачал zip, развернул на диск D:\esp8266web-master\ и добавил туда батник:
Код:
set CWD=D:\esp8266web-master\
PATH=C:\MinGW\bin;C:\MinGW\msys\1.0\bin
mingw32-make.exe -f Makefile all
Запустил:
Код:
D:\esp8266web-master>set CWD=D:\esp8266web-master\
D:\esp8266web-master>PATH=C:\MinGW\bin;C:\MinGW\msys\1.0\bin
D:\esp8266web-master>mingw32-make.exe -f Makefile all
mingw32-make[1]: Entering directory 'D:/esp8266web-master/app'
....
c:/Espressif/xtensa-lx106-elf/bin/xtensa-lx106-elf-gcc  -L../lib -nostdlib -T../ld/eagle.app.v6.ld -Wl,--no-check-sections -u call_user_start -Wl,-static -Wl,-Map -Wl,.output/eagle/image/eagle.app.v6.map -Wl,--start-group -lmicroc -lmgcc -lmphy -lpp -lnet80211 -lmwpa -lmmain    system/.output/eagle/lib/libaddmmain.a phy/.output/eagle/lib/libaddmphy.a wpa/.output/eagle/lib/libaddwpa.a driver/.output/eagle/lib/libdriver.a web/.output/eagle/lib/libweb.a mdbtcp/.output/eagle/lib/libmdbtcp.a user/.output/eagle/lib/libuser.a lwip/.output/eagle/lib/liblwip.a -Wl,--end-group -o .output/eagle/image/eagle.app.v6.out
------------------------------------------------------------------------------
   Section|                   Description| Start (hex)|   End (hex)|Used space
------------------------------------------------------------------------------
      data|        Initialized Data (RAM)|    3FFE8000|    3FFE854C|    1356
    rodata|           ReadOnly Data (RAM)|    3FFE8550|    3FFE8F48|    2552
       bss|      Uninitialized Data (RAM)|    3FFE8F48|    3FFEFAA0|   27480
      lit4|     Uninitialized Data (IRAM)|    40104E30|    401056A8|    2168
      text|          Uncached Code (IRAM)|    40100000|    40104E30|   20016
irom0_text|             Cached Code (SPI)|    40240000|    40271ED4|  204500
------------------------------------------------------------------------------
Entry Point : 40100134 call_user_start()
Total Used RAM : 53572
Free IRam : 10584 or 26968 (option 48k IRAM)
Free Heap : 50532
Total Free RAM : 77500
------------------------------------------------------------------------------
Add rapid_loader:
mingw32-make[1]: Leaving directory 'D:/esp8266web-master/app'
mingw32-make[1]: Entering directory 'D:/esp8266web-master/webbin'
mingw32-make[1]: 'WEBFiles.bin' is up to date.
mingw32-make[1]: Leaving directory 'D:/esp8266web-master/webbin'
 
Последнее редактирование:

mcmega

Member
В общем не добился я работы с Python27. esptool.py скопировал в C:\Espressif\utils\ не помогло
В Makefile сделал так:
SDK_TOOLS ?= c:/Espressif/utils
ESPTOOL ?= $(SDK_TOOLS)/esptool
[HASHTAG]#ESPTOOL[/HASHTAG] ?= C:/Python27/python.exe $(CWD)esptool.py
и заработало...
Как быть то, как запустить Python27?
 

Tomahawk

New member
Ответ есть на форуме.
P.S.: по-моему тему пора чистить, потому что 40 страниц читать для новичков уже становится сложным )
 
Сверху Снизу