Спасибо за ответ.
1. ограничить подключения до одного клиента (устройством управлять можно только одним пользователем)
2. web или только передает данные, или только принимает, нет одновременных прием-передача, за очередностью следит сам web
Может ли возникнуть переполнение данных при передаче web <> UART? при условии 1 и 2 пункта.
Какие ограничения у текущего примера Hello? C точки зрения передаваемой длины сообщения?
Да, я все это скачал и на основе их, сейчас и пытаюсь все сделать. Andy Korg немного мне разжевал, что, куда в своей теме.
Только все примеры основанны на очень старых сборках, а в текущих много всего изменилось.
И постоянные утверждения:
Не верьте
Pvvx имеет ввиду, что в общем случае задача не решаемая, так как надо вводить дополнительные ограничения. Это правильно, конечно. Но в частном-то случае, под свою задачу, почему нет? Тем более как минимум два работающих примера есть на форуме.
Если сообщения будут выводится в UART, то программа встанет на ожидании вывода и ничего больше делать не сможет, пока UART не выведет все символы.
По этой причине рекомендуется отключать вывод отладочных сообщений в установках из web, если требуется получить максимальную скорость и отзывчивость web и т.д..
Поддерживаю эту мысль, pvvx создал довольно универсальную платформу. Как и всякая универсальная платформа имеет свои ограничения и допущения. Так что надо просто "подкручивать" под свою задачу вот и все.
Здравствуйте pvvx. Пытаюсь добиться стабильной работы своей платы на базе вашего веб-сервера. Плата мной разведенная, там стоит флешка EN25QH32A. Пока вникаю в особенности программирования ESP8266, питаю ее от USB порта, на котором переходник USB-COM, но через отдельный LDO, который до 600 мА. Нестабильность заключается в следующем - если сбрасывать плату кнопкой сброса (пин EXT_RSTB - там резистор 10К на 3.3 и конденсатор 1нф на землю), то программа стартует без проблем, винда подключается к точе доступа ESP8266 довольно быстро и я могу заходить на страницы сервера. Но если переткнуть юсб-кабель, подождав чтобы винда потеряла точку, то сначала она долго не появляется в списке, а потом подключается с ограниченным доступом к сети. Сделал скриншоты, чтобы было нагляднее:
так выглядит подключение, когда все нормально, после первой прошивки флешки.
так происходит, когда переткнешь питание.
и в конце заканчивается этим:
После этого уже ни перетыкание, ни сбросы - ничего не помогает. Если же в Эклипсе сделать FlashClearSettings, то через несколько секунд винда подключается нормально, даже без дополнительного сброса.
Я уже с месяц пробую разные примеры, разбираясь с написанием прошивки под ESP8266, пользуюсь UDK и примерами оттуда. Ваш пример пока самый стабильный, но этот момент меня напрягает, т.к. готовый продукт, который будет отваливаться от сети при пропадании питания - не есть хорошо. В других примерах часто есть такое, что даже при нажатии на кнопку сброса влетает в не понятные состояния с Exception. У вас все стартует после сброса, тут вопросов нету. Была мысль что в флешь шьются какие-то настройки точки доступа и при вырубании питания что-то там нарушается. Долго искал такое место в исходниках вебсервера, возможно даже что-то там сделал, потому-что какое-то время у меня перестало происходить отваливание точки доступа. Но случилось что пришлось переставить проект вебсервера заново и все началось опять.
Но если переткнуть юсб-кабель, подождав чтобы винда потеряла точку, то сначала она долго не появляется в списке, а потом подключается с ограниченным доступом к сети.
Возможно проблемы с включением питания - сбросом и инициализацией.
Это возможно от путаницы старта после deep-sleep, для ускорения инициализации WiFi. Надо глядеть....
еще одна проблема, возможно как-то перекликается с уже описанной.. Выставил на странице сервера Wifi settings -> Auth Mode: WPA2_PSK вместо OPEN, переподключился с вводом пароля через свисток на компьютере - все работает. После этого попробовал подключиться вторым клиентом через телефон - как только телефон пишет про аутентификацию, в терминале платы видно что происходит резет и телефон выдает ошибку аутентификации в итоге. Компьютер со свистком вроде не успевает потерять точку при этом.
если выставить OPEN, то подключается с двух мест без проблем. И еще - пробовал выставлять другой канал, отличный от 01 - после перезагрузки страницы все тот же первый канал.
PS. Похоже с телефона не получается подключиться при включенном WPA2_PSK даже в одиночку - тоже резетится плата и ошибка аутентификации в итоге.
Канал зависит от подключения к внешней AP. Меняется, если только режим SOFTAP.
Проблема с повторным включением питания и работой SOFTAP есть в SDK1.5.0. Пока не выловлена. Плавающая - то работает, то нет и у меня зависит от типа модуля. На котором (ESP-12) переделывал на SDK 1.5.0 всё работает , на ESP-01 не работает, на плате ESP12E DEVKIT - беда плавающая - то работает, то нет. Поиски продолжаются...
Всё - ничего с SDK 1.5.0 не сделать. Ошибки (протектед) в rijndaelEncrypt() и сплошной кошмар с либами. Надо добавлять слишком жирные и с совершенно ненужными функциями либы: libwpa2.a, libcrypto.a, кучу хлама из libmain.a и т.д. И это всё (сотни кило в прошивку !) ради wifi_station_set_cert_key() и wifi_station_clear_cert_key().
Откат на SDK 1.4.1 (в git откатил либы). Там всё работает.
Подождем итогов - может следующая, после 1.5.0 SDK будет лучше.
чтобы поменять либы, достаточно переименовать ESP8266_SDK_141 в ESP8266_SDK, сделать clean, all? Если да, то у меня все точно так же - при перетыкании питания ограниченный доступ. И FlashClearSetings помогает.
а как можно сравнить, что было записано в настройках вайфай когда все коннектилось и после того как перестало коннектиться? Может там мысли появятся, если станет понятно что портится?
чтобы поменять либы, достаточно переименовать ESP8266_SDK_141 в ESP8266_SDK, сделать clean, all? Если да, то у меня все точно так же - при перетыкании питания ограниченный доступ. И FlashClearSetings помогает.
"Свалка" ничего внешнего (из UDK) не берет. Вам надо загрузить новые исходники с git. Там уже изменена папка lib и номер версии DEF_SDK_VERSION в include\sdk\sdk_config.h, плюс мелкие доработки... Либы от SDK используются "обкоцанные". В директории lib есть батники, как они составлены из стандартных. Вырезают лишний хлам и ненужные объектники из стандартных SDK либ и перепаковывают в свои либы. Но все готовые *.a для сборки meSDK уже лежат в данной папке.
Это загрузка сертификата... В 2C-ESP8266__SDK__Programming Guide__EN_v1.5.pdf описано...
В 1.5.0 всё собирается без либы libwpa2.a, но почему-то, при WPA возникает WDT в rijndaelEncrypt() в разных точках. Зацикливается что-то.
Угу - от этого OTA полностью закончилось - это не лезет ни в какую их базовую flash и RAM чипа по размеру В общем "перегрузка" фичами не соизмеримыми с производительностью и сферой применения данного модуля. Оптимизацией этих фич под данный чип заниматься никто не будет.
Скорее всего это "испытание на пользователях" алгоритмов для ESP32. А нам оно не надо. Есть толпа модулей на OpenWRT, а их цена уже почти как у ESP32.