Скрыть объявление
На нашем форуме недоступен просмотр изображений для неавторизованных пользователей. Если Вы уже зарегистрированы на нашем форуме, то можете войти. Если у Вас еще нет аккаунта, мы будем рады, если Вы к нам присоединитесь. Зарегистрироваться Вы можете здесь.

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

Тема в разделе "SDK и создание собственных прошивок", создана пользователем pvvx, 3 янв 2015.

  1. Tomahawk

    Tomahawk Читатель

    Сообщения:
    84
    Симпатии:
    10
    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> :)
     
    Последнее редактирование: 15 окт 2015
  2. pvvx

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

    Сообщения:
    8.490
    Симпатии:
    1.275
    Нужен Chrome и всякие Андронутые броузеры. :(...
    ----
    Ещё как жить с этим - https://github.com/espressif/esp-gdbstub ?
     
  3. pvvx

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

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

    Надо что-то подобное и чего долепить с этими "Probe Request"?
    Интерфейс и опции в Web-свалке всё увеличиваются:
    Ver050.gif
    :)
     
    Последнее редактирование: 16 окт 2015
  4. Andy Korg

    Andy Korg Moderator Команда форума

    Сообщения:
    413
    Симпатии:
    74
    Пора менять концепцию интерфейса :) Например прятать часть функций за кнопками или увеличивать количество вкладок
     
  5. pvvx

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

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

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

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

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

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

    Сообщения:
    8.490
    Симпатии:
    1.275
    Можно, но прошивка плеера MP3 сделана на RTOS, да ещё на старой версии, глючной. Берете и переписываете всё - можно всё - я разрешаю :)
    Очень непонятный вопрос. Вам всю трассу route надо? Тогда что-то типа http://www.visualroute.com/ :) Вот трасса из USA до моего тестового ESP8266:
    VisualRoute.gif
    ----
    Есть запрос ~web_host~ и он указывает ip: port c которого получаете данные.
    IP AP: ~wifi_ap_ip~ , ST: ~wifi_st_ip~
    Сравниваете IP в javascript и ставите имя AP: ~wifi_ap_ssid~ , ST: ~wifi_st_ssid~ или ещё чего...
    Пример вывода дан в http://aesp8266/system.xml:
    Код (XML):
    1. <web>
    2. <host>192.168.1.15:80</host><remote>192.168.1.2:8050</remote>
    3. </web>
    4. <tcp2uart>
    5. <connected>1</connected><host>192.168.1.15:12345</host><remote>192.168.4.3:8045</remote>
    6. </tcp2uart>
    7. <modbus>
    8. <host>192.168.4.1:502</host><remote>192.168.4.3:8056</remote>
    9. </modbus>
    10. <wifi>
    11. <ap><ssid>ESP8266</ssid><ip>192.168.4.1</ip></ap>
    12. <st><ssid>HOME_AP</ssid><ip>192.168.1.15</ip></st>
    13. </wifi>
    system.xml желательно не использовать для частых запросов - он как демо и долго отрабатывает, т.к. там много задержек на исполнении всяких типа чтения ADC, VDD и т.д. на которые накапливается дцать ms. Пишите свой xml, если хотите использовать xml или вставляете пременные прямо в HTML или javascript...
     
    Последнее редактирование: 18 окт 2015
  8. aloika

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

    Сообщения:
    367
    Симпатии:
    25
    Спасибо за идею, действительно, в простом случае сравнить IP с учетом маски будет достаточно. Например, AP имеет адрес 192.168.4.1, а ST выдался 10.0.0.7 с маской 255.255.255.0 и если у web-клиента IP, например, 10.0.0.12 то велика вероятность, что этот клиент подключен через "ST-интерфейс".
     
  9. A_D

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

    Сообщения:
    329
    Симпатии:
    55
    Добрый вечер!
    А есть ли версия голого 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 без правок работает?)
     
  10. pvvx

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

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

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

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

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

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

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

    Сообщения:
    329
    Симпатии:
    55
    Понял, спасибо большое!
    Еще пара вопросов:
    а изза чего может не записываться webbin ? если беру последние сборки, компилирую - заливаю и получаю в ответ от модуля не index.html а заглушку ? (самую свежую не пробовал еще)
    модули у меня довольно старенькие, esp-01 и на них память стоит winbond 25q40bvnig и на другом есть ah1434 25q40bt - это вполне вменяемая память или может сбоить изза такой ? (на других - esp-07, более новых нашел еще ah1448 25q41bt - лучше такую использовать?)
     
  14. Tomahawk

    Tomahawk Читатель

    Сообщения:
    84
    Симпатии:
    10
    Обсуждалось ранее.
     
  15. ciuafm

    ciuafm Новичок

    Сообщения:
    8
    Симпатии:
    0
    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
    Не могли бы вы осветить эту тему подробней?
     
  16. pvvx

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

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

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

    Сообщения:
    8.490
    Симпатии:
    1.275
    Давно изменен makefile. Рассчитывать теперь надо только старт ADDR_FW2, который кратен 4096 следующему числу от размера 0x00000.bin
    ADDR_FW2 = ((размер 0x00000.bin)+0xFFF)&0x7F000
    Он ещё должен быть прописан в eagle.app.v6.ld.
    Как это рассчитать и изменить автоматом в makefile пока не думал. Простыми методами makefile это не выходит.
     
    Последнее редактирование: 23 окт 2015
  18. Шаповалов Игорь

    Шаповалов Игорь Новичок

    Сообщения:
    32
    Симпатии:
    1
    @pvvx Не планируете ли вы реализовать в своей прошивке обмен даными и управление модулем по средствам SNMP ведь это идеальный протокол для нашего модуля? Для работы с ним есть утилиты на windows и linux командочку можно хоть в ярлык вставить. Для андройда тоже есть приложения. Так жэ существует полно систем мониторинга которые работают с данным протаколом. Так жэ если настроить DDNS на домашнем роутере можно управлять удалённо. Сам пытался написать в ардуино иде прошивку, но так и не начал так как библиотека для работы с SNMP валится даже на собственном примере.
     
    Последнее редактирование: 27 окт 2015
  19. pvvx

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

    Сообщения:
    8.490
    Симпатии:
    1.275
    Пока не вижу нужды в SNMP на ESP8266. Что им управлять на модуле? Переключить сеть и потерять связь? :)
     
  20. Tomahawk

    Tomahawk Читатель

    Сообщения:
    84
    Симпатии:
    10
    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 не получается, везде идёт пропадание своей АР.
     

Поделиться этой страницей