• Уважаемые посетители сайта esp8266.ru!
    Мы отказались от размещения рекламы на страницах форума для большего комфорта пользователей.
    Вы можете оказать посильную поддержку администрации форума. Данные средства пойдут на оплату услуг облачных провайдеров для сайта esp8266.ru
  • Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

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

Tomahawk

New member
pvvx, придумал
<!--<a href='/protect/fullflash.bin'>Download fullflash.bin</a><br><br>-->
<div id="ident">temp текст</div>
<script type="text/javascript">
var set_name = 'bin_name.bin';
var output = document.getElementById('ident');
output.innerHTML = "<a href='/protect/fullflash.bin' download='" + set_name +"'>Download fullflash.bin</a><br><br>"
</script>
Но опять же работаем через атрибут download, который пока не всеми браузерами поддерживается, но это их проблемы, мне кажется :)

P.S.: это если сильно хочется через ява-скрипт ;) можно и просто <a href='/protect/fullflash.bin' download='тут написать'>Download fullflash.bin</a><br><br> :)
 
Последнее редактирование:

pvvx

Активный участник сообщества
<!--<a href='/protect/fullflash.bin'>Download fullflash.bin</a><br><br>-->
<div id="ident">temp текст</div>
<script type="text/javascript">
var set_name = 'bin_name.bin';
var output = document.getElementById('ident');
output.innerHTML = "<a href='/protect/fullflash.bin' download='" + set_name +"'>Download fullflash.bin</a><br><br>"
</script>
Но опять же работаем через атрибут download, который пока не всеми браузерами поддерживается, но это их проблемы, мне кажется :)
Нужен Chrome и всякие Андронутые броузеры. :(...
----
Ещё как жить с этим - https://github.com/espressif/esp-gdbstub ?
 

pvvx

Активный участник сообщества
Что делать с WiFi event(7): Probe Request (MAC:12:34:56:78:90:12, RSSI:-86) ?
Написал накопление их в буфер с выдачей в виде xml. Накапливает только новые MAC, вычисляя у повторяющихся минимальный и максимальный RSSI.
Пока круговой буфер на 64 MAC от Probe Request -ов (когда буфер забивается, то переписывает самые старые.)
Можно узнать, сколько долбится устройств и узнать по ним расположение (и какие двигаются, а какие нет :) ) ...
XML:
<?xml version="1.0" encoding="windows-1251"?>
<response>
<mac>00:0f:54:10:6a:b5</mac>
<min>-77</min>
<max>-41</max>
<mac>dc:71:44:6b:62:f1</mac>
<min>-94</min>
<max>-91</max>
<mac>0c:84:dc:0b:f7:23</mac>
<min>-83</min>
<max>-65</max>
<mac>fa:83:ff:0b:d5:75</mac>
<min>-90</min>
<max>-86</max>
<mac>cc:07:ab:6a:8e:8d</mac>
<min>-90</min>
<max>-70</max>
<mac>08:ed:b9:cb:82:b9</mac>
<min>-89</min>
<max>-81</max>
<mac>44:6d:57:70:28:06</mac>
<min>-94</min>
<max>-94</max>
<mac>e8:50:8b:7b:ef:fc</mac>
<min>-91</min>
<max>-87</max>
<mac>c0:63:94:79:13:79</mac>
<min>-96</min>
<max>-90</max>
<mac>d6:81:dc:bf:30:a9</mac>
<min>-93</min>
<max>-83</max>
<mac>e4:f8:ef:67:f2:53</mac>
<min>-92</min>
<max>-71</max>
<mac>66:e3:23:61:5b:96</mac>
<min>-92</min>
<max>-89</max>
<mac>84:85:06:d0:89:0b</mac>
<min>-95</min>
<max>-92</max>
<mac>be:23:d1:d1:44:33</mac>
<min>-92</min>
<max>-80</max>
<mac>dc:71:44:6b:62:44</mac>
<min>-96</min>
<max>-92</max>
<mac>8a:56:04:09:94:49</mac>
<min>-87</min>
<max>-81</max>
<mac>b6:1d:3b:55:56:94</mac>
<min>-93</min>
<max>-90</max>
<mac>7a:28:69:0f:e4:5c</mac>
<min>-89</min>
<max>-86</max>
<mac>16:09:7a:df:79:23</mac>
<min>-87</min>
<max>-85</max>
<mac>f0:f6:1c:3d:c4:b6</mac>
<min>-92</min>
<max>-89</max>
<mac>7a:16:d9:36:5c:ca</mac>
<min>-87</min>
<max>-84</max>
<mac>6a:d4:bb:9a:44:34</mac>
<min>-90</min>
<max>-83</max>
<mac>60:21:c0:08:5c:b2</mac>
<min>-91</min>
<max>-90</max>
<mac>ca:55:c1:5a:43:14</mac>
<min>-93</min>
<max>-86</max>
<mac>40:b8:37:0f:f0:a1</mac>
<min>-93</min>
<max>-93</max>
<mac>b4:52:7d:d1:23:f3</mac>
<min>-93</min>
<max>-93</max>
<mac>62:38:05:d6:dc:5a</mac>
<min>-93</min>
<max>-93</max>
<mac>00:1c:bf:0d:5d:2c</mac>
<min>-88</min>
<max>-75</max>
<total>28</total>
</response>
Надо что-то подобное и чего долепить с этими "Probe Request"?
Интерфейс и опции в Web-свалке всё увеличиваются:
Ver050.gif
:)
 
Последнее редактирование:

pvvx

Активный участник сообщества
Пора менять концепцию интерфейса :) Например прятать часть функций за кнопками или увеличивать количество вкладок
Да ладно, это же пример, чтобы были видны все переменные. И это включены все модули, в версии 050 (странным образом совпадая с номером страницы темы :) ). Вер 0.5.0 = усиленное обновление - перелопачено много переменных и немного сокращен объем общего кода и при включении всего не сильно разрослась... Ещё не всё проверено - в процессе...
Теперь в user_config.h можно выключить трансляцию и самого WEB :)
 
Последнее редактирование:

aloika

Active member
pvvx, а можно такой вопрос - как думаете, реально ли соединить этот "малый веб-сервер" и проект, который играет mp3 ? Типа выбрал из веб-интрфейса файл, находящийся на компьютере (ну или планшете или с чего там зашел), а модуль его как давай играть :)

И еще вопрос. Можно ли как-то узнать, через какой интерфейс (точку доступа или станцию) подключен к модулю данный веб-клиент? Т.е., например, подключаюсь я к модулю, как к точке доступа и хочу изменить название или пароль этой точки доступа. А веб интерфейс мне - "ай-яй-яй, нельзя так делать, а то щас связь пропадет, ты же через эту же точку доступа и подключен". И про режим станции то же.
 

pvvx

Активный участник сообщества
pvvx, а можно такой вопрос - как думаете, реально ли соединить этот "малый веб-сервер" и проект, который играет mp3 ? Типа выбрал из веб-интрфейса файл, находящийся на компьютере (ну или планшете или с чего там зашел), а модуль его как давай играть :)
Можно, но прошивка плеера MP3 сделана на RTOS, да ещё на старой версии, глючной. Берете и переписываете всё - можно всё - я разрешаю :)
И еще вопрос. Можно ли как-то узнать, через какой интерфейс (точку доступа или станцию) подключен к модулю данный веб-клиент? Т.е., например, подключаюсь я к модулю, как к точке доступа и хочу изменить название или пароль этой точки доступа. А веб интерфейс мне - "ай-яй-яй, нельзя так делать, а то щас связь пропадет, ты же через эту же точку доступа и подключен". И про режим станции то же.
Очень непонятный вопрос. Вам всю трассу route надо? Тогда что-то типа http://www.visualroute.com/ :) Вот трасса из USA до моего тестового ESP8266:
VisualRoute.gif
----
Есть запрос [inline]~web_host~[/inline] и он указывает ip: port c которого получаете данные.
IP AP: [inline]~wifi_ap_ip~[/inline] , ST: [inline]~wifi_st_ip~[/inline]
Сравниваете IP в javascript и ставите имя AP: [inline]~wifi_ap_ssid~[/inline] , ST: [inline]~wifi_st_ssid~[/inline] или ещё чего...
Пример вывода дан в http://aesp8266/system.xml:
XML:
<web>
<host>192.168.1.15:80</host><remote>192.168.1.2:8050</remote>
</web>
<tcp2uart>
<connected>1</connected><host>192.168.1.15:12345</host><remote>192.168.4.3:8045</remote>
</tcp2uart>
<modbus>
<host>192.168.4.1:502</host><remote>192.168.4.3:8056</remote>
</modbus>
<wifi>
<ap><ssid>ESP8266</ssid><ip>192.168.4.1</ip></ap>
<st><ssid>HOME_AP</ssid><ip>192.168.1.15</ip></st>
</wifi>
system.xml желательно не использовать для частых запросов - он как демо и долго отрабатывает, т.к. там много задержек на исполнении всяких типа чтения ADC, VDD и т.д. на которые накапливается дцать ms. Пишите свой xml, если хотите использовать xml или вставляете пременные прямо в HTML или javascript...
 
Последнее редактирование:

aloika

Active member
Есть запрос ~web_host~ и он указывает ip: port c которого получаете данные.
IP AP: ~wifi_ap_ip~ , ST: ~wifi_st_ip~
Сравниваете IP в javascript и ставите имя AP: ~wifi_ap_ssid~ , ST: ~wifi_st_ssid~ или ещё чего...
Спасибо за идею, действительно, в простом случае сравнить IP с учетом маски будет достаточно. Например, AP имеет адрес 192.168.4.1, а ST выдался 10.0.0.7 с маской 255.255.255.0 и если у web-клиента IP, например, 10.0.0.12 то велика вероятность, что этот клиент подключен через "ST-интерфейс".
 

A_D

Active member
Добрый вечер!
А есть ли версия голого Web сервера без всяких дополнительных пристроек ? (аля tcp2uart, управление светодиодами, adc-wave, modbus, сигмадельта и т.п.)
Пробую самостоятельно обрезать до такого состояния и не получается, точнее выходит такая картина:
Обрезается довольно легко до момента вырезания tcp2uart - он глубоко внедрен и его трудно с ходу вырезать (насколько я понял, это уже что то совмещенное просто работа с uart, вывод отладки и собственно преобразование из TCP в UART....) , ну да ладно, остальное если удалить и довести остальное до успешной компиляции, то при заливании прошивки появляется сеть ESP8266, к ней телефон коннектится, а вот при загрузке странички с 192.168.1.4 выводится только Buildin server ESP8266 - понимаю, что это страничка-заглушка, если не загружен webbin - но, в этой то части я ничего не трогал и он должен по идее заливаться вместе с прошивкой... Если заливаю оригинальную, не резанную прошивку - то все работает. (и подобная проблема у меня возникала и на самых последних сборках WebServer, сейчас использую v0.4.8c 300915 - компилируется нормально, а вот странички не грузит - это проблема в железе? если да, то как тогда 0.4.8 без правок работает?)
 

pvvx

Активный участник сообщества
Обрезается довольно легко до момента вырезания tcp2uart - он глубоко внедрен и его трудно с ходу вырезать
?
Он отключается в user_config.h закоментив [HASHTAG]#define[/HASHTAG] USE_TCP2UART. Остаются только настройки UART для любого другого проекта. Там и другое отключается.
Это только в последних версиях, на которые полные прошивки пока не делал (а имеющиеся имеют множество глюков, часть которых уже исправлена и натворены новые :) в исходниках, которые надо собирать самим). Сегодня ещё добавилось это
 
Последнее редактирование:

A_D

Active member
я полностью удалял связзанное с тем, что явно не будет использоваться, к примеру modbus - удаляю папку и далее ссылки на него, так же убираю из makefile а - в итоге собирается.
Если же закоментить в user_config.h - то этого вполне хватит что бы оно не влияло на итоговую работоспособность и быстродействие?
хочу сделать AP с веб мордой, в которой есть небольшие скрипты и через uart это дело управляет движком шаговым(там мини драйвер свой), собственно на старых sdk аля 0.9.х когда в web свалке было порядком меньше плюшек встроено, это заработало, но изза глючности самого sdk не шибко стабильно было. потом проект забросился на некоторое время - к слову, могу выложить как получится, это для товарища поворачиваемый столик городим - что то типа PhotoPizza, только с wifi и полным управлением через web.
И отсюда еще возникает вопрос - пока разбирался как чего вырезать из проекта - заметил что нету как такового в папке drivers драйвера для UART, если планирую использовать основной UART0, дебаговый вывод не буду трогать и отключать - не мешает, с чего начать или для записи\ чтения с него уже есть драйвер, только лежит в другом месте? (опять же в старых сборках web свалки был именно отдельный файл-драйвер, по анологии с adc и т.п. , тут нет такого уже..)
 

pvvx

Активный участник сообщества
Если же закоментить в user_config.h - то этого вполне хватит что бы оно не влияло на итоговую работоспособность и быстродействие?
На быстродействие там ничего не влияет.
для записи\ чтения с него уже есть драйвер, только лежит в другом месте?
После отключения [inline]//#define USE_TCP2UART[/inline]
Останутся только куски в app\web\uart_tcp.c, отвечающие за настройку и инициализацию UART0 и 1 и их выходов, инверсия там или нет входов/выходов и т.д..
app\web\tcp2uart.c полностью отключится и можете стереть.
Так-же можно стереть всё, что подсветится серым в Eclipse и в app\web\uart_tcp.c отмеченное [HASHTAG]#ifdef[/HASHTAG] USE_TCP2UART и т.д.
[inline]void uart0_write_char(char c)[/inline] находится в базовой части meSDK.
 

A_D

Active member
На быстродействие там ничего не влияет.
После отключения [inline]//#define USE_TCP2UART[/inline]
Останутся только куски в app\web\uart_tcp.c, отвечающие за настройку и инициализацию UART0 и 1 и их выходов, инверсия там или нет входов/выходов и т.д..
app\web\tcp2uart.c полностью отключится и можете стереть.
Так-же можно стереть всё, что подсветится серым в Eclipse и в app\web\uart_tcp.c отмеченное [HASHTAG]#ifdef[/HASHTAG] USE_TCP2UART и т.д.
[inline]void uart0_write_char(char c)[/inline] находится в базовой части meSDK.
Понял, спасибо большое!
Еще пара вопросов:
а изза чего может не записываться webbin ? если беру последние сборки, компилирую - заливаю и получаю в ответ от модуля не index.html а заглушку ? (самую свежую не пробовал еще)
модули у меня довольно старенькие, esp-01 и на них память стоит winbond 25q40bvnig и на другом есть ah1434 25q40bt - это вполне вменяемая память или может сбоить изза такой ? (на других - esp-07, более новых нашел еще ah1448 25q41bt - лучше такую использовать?)
 

ciuafm

New member
pvvx, я читал что вы негативно относитесь к идее подключить SD card к esp8266, но все таки это может заметно расширить область применения как девайса так и web-сервера. Я нашел два проекта на тему подключения SD:
http://esp8266.ru/forum/threads/esp8266-sd-mmc-fat16-32-demo.501/
http://www.esp8266.com/viewtopic.php?f=32&t=3558
Не могли бы вы осветить эту тему подробней?
 

pvvx

Активный участник сообщества
pvvx, я читал что вы негативно относитесь к идее подключить SD card к esp8266
если её подключать к линям FLASH.
Не могли бы вы осветить эту тему подробней?
Нет описания регистров ESP8266 работы с SD.
Замечено, что китай-инициализация лезет в зону регистров 0x60000A00 по байту sdio_configure в esp_init_data_default.bin[50]...
Кроме того есть DMA для SPI, но тоже не описана.
Дайте описание и всё будет :)
 
Последнее редактирование:

pvvx

Активный участник сообщества
Давно изменен makefile. Рассчитывать теперь надо только старт ADDR_FW2, который кратен 4096 следующему числу от размера 0x00000.bin
[inline]ADDR_FW2 = ((размер 0x00000.bin)+0xFFF)&0x7F000[/inline]
Он ещё должен быть прописан в eagle.app.v6.ld.
Как это рассчитать и изменить автоматом в makefile пока не думал. Простыми методами makefile это не выходит.
 
Последнее редактирование:
@pvvx Не планируете ли вы реализовать в своей прошивке обмен даными и управление модулем по средствам SNMP ведь это идеальный протокол для нашего модуля? Для работы с ним есть утилиты на windows и linux командочку можно хоть в ярлык вставить. Для андройда тоже есть приложения. Так жэ существует полно систем мониторинга которые работают с данным протаколом. Так жэ если настроить DDNS на домашнем роутере можно управлять удалённо. Сам пытался написать в ардуино иде прошивку, но так и не начал так как библиотека для работы с SNMP валится даже на собственном примере.
 
Последнее редактирование:

pvvx

Активный участник сообщества
Не планируете ли вы реализовать в своей прошивке обмен даными и управление модулем по средствам SNMP ведь это идеальный протокол для нашего модуля? Для работы с ним есть утилиты на windows и linux командочку можно хоть в ярлык вставить. Для андройда тоже есть приложения. Так жэ существует полно систем мониторинга которые работают с данным протаколом. Так жэ если настроить DDNS на домашнем роутере можно управлять удалённо. Сам пытался написать в ардуино иде прошивку, но так и не начал так как библиотека для работы с SNMP валится даже на собственном примере.
Пока не вижу нужды в SNMP на ESP8266. Что им управлять на модуле? Переключить сеть и потерять связь? :)
 

Tomahawk

New member
SDK 1.4.0. работает хуже, чем SDK 1.3.0. По этой причине вынужден использовать версию сборки 0.4.6f (в которой последний раз использовалась 1.3.0) и на базе неё прикручивать изменения из последующих версий, вот такой вынужденный реверс... Возьмём последнюю fullflash_web051.bin, чтобы исключить возможную кривость эклипса, и прошьём им модуль, тогда видим, как в телефоне точка доступа всё время пропадает с периодом 5-10 секунд, также с каким-то периодом рушится связь с другой АР. Не знаю как на ноутбуке, но на смартфоне подключение к модулю точно сбоит.

На данный момент хорошо показывает себя сборка 0.4.6f + фрагменты си-файлов из 0.4.8 - работает стабильно. Единственный минус только, когда пропадает сторонняя АР, то своя АР пропадает с периодом. По этой причине уже не один раз пробовал новые сборки свалки, тем более что недавно писалось об устранении проблемы, но пока использовать новые версии с SDK 1.4.0 не получается, везде идёт пропадание своей АР.
 
Сверху Снизу