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

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

aloika

Active member
Спасибо за ответ.
1. ограничить подключения до одного клиента (устройством управлять можно только одним пользователем)
2. web или только передает данные, или только принимает, нет одновременных прием-передача, за очередностью следит сам web
Может ли возникнуть переполнение данных при передаче web <> UART? при условии 1 и 2 пункта.
Какие ограничения у текущего примера Hello? C точки зрения передаваемой длины сообщения?
Посмотрите здесь:

http://esp8266.ru/forum/threads/raz...go-webservera-na-esp8266.56/page-32#post-7796

И этот проект от Andy Korg:
http://esp8266.ru/forum/threads/matrichnye-chasy-s-muzykoj-i-internetom.87/

И там и там реализована передача web<>uart для частных случаев на основе актуальных на тот момент свалок pvvx.
 

PycLan

New member
Да, я все это скачал и на основе их, сейчас и пытаюсь все сделать. Andy Korg немного мне разжевал, что, куда в своей теме.
Только все примеры основанны на очень старых сборках, а в текущих много всего изменилось.
И постоянные утверждения:
Например передача данных из web в UART невозможна, т.к. web многопользовательский, а UART - нет.
немного настораживают :(
 

aloika

Active member
Andy Korg немного мне разжевал, что, куда в своей теме.
Только все примеры основанны на очень старых сборках, а в текущих много всего изменилось.
Там применительно к моему примеру не особо-то что поменялось. Что-то подправить придётся, конечно, но не принципиально.

постоянные утверждения:
Например передача данных из web в UART невозможна, т.к. web многопользовательский, а UART - нет.
немного настораживают :(
Не верьте :)
Pvvx имеет ввиду, что в общем случае задача не решаемая, так как надо вводить дополнительные ограничения. Это правильно, конечно. Но в частном-то случае, под свою задачу, почему нет? Тем более как минимум два работающих примера есть на форуме.
 

pvvx

Активный участник сообщества
Какие ограничения у текущего примера Hello? C точки зрения передаваемой длины сообщения?
Если сообщения будут выводится в UART, то программа встанет на ожидании вывода и ничего больше делать не сможет, пока UART не выведет все символы.
По этой причине рекомендуется отключать вывод отладочных сообщений в установках из web, если требуется получить максимальную скорость и отзывчивость web и т.д..
 
Последнее редактирование:

Andy Korg

Moderator
Команда форума
Pvvx имеет ввиду, что в общем случае задача не решаемая, так как надо вводить дополнительные ограничения. Это правильно, конечно. ...
Поддерживаю эту мысль, pvvx создал довольно универсальную платформу. Как и всякая универсальная платформа имеет свои ограничения и допущения. Так что надо просто "подкручивать" под свою задачу вот и все.
 

pvvx

Активный участник сообщества
Стоит ли из ESP8266 сделать "Всевидящую Мышку" ? :)
7.6 кадров в секунду 18x18 пиксель с датчика мышки ADNS-2620 (по SPI)
Есть 29x29 в ADNS-3090 и 30x30 в ADNS-6010, ADNS-9800 ... :)
 
Последнее редактирование:

AlexMelven

New member
Здравствуйте pvvx. Пытаюсь добиться стабильной работы своей платы на базе вашего веб-сервера. Плата мной разведенная, там стоит флешка EN25QH32A. Пока вникаю в особенности программирования ESP8266, питаю ее от USB порта, на котором переходник USB-COM, но через отдельный LDO, который до 600 мА. Нестабильность заключается в следующем - если сбрасывать плату кнопкой сброса (пин EXT_RSTB - там резистор 10К на 3.3 и конденсатор 1нф на землю), то программа стартует без проблем, винда подключается к точе доступа ESP8266 довольно быстро и я могу заходить на страницы сервера. Но если переткнуть юсб-кабель, подождав чтобы винда потеряла точку, то сначала она долго не появляется в списке, а потом подключается с ограниченным доступом к сети. Сделал скриншоты, чтобы было нагляднее:
1.gif
так выглядит подключение, когда все нормально, после первой прошивки флешки.
2.gif
так происходит, когда переткнешь питание.
и в конце заканчивается этим:
3.gif
После этого уже ни перетыкание, ни сбросы - ничего не помогает. Если же в Эклипсе сделать FlashClearSettings, то через несколько секунд винда подключается нормально, даже без дополнительного сброса.
Я уже с месяц пробую разные примеры, разбираясь с написанием прошивки под ESP8266, пользуюсь UDK и примерами оттуда. Ваш пример пока самый стабильный, но этот момент меня напрягает, т.к. готовый продукт, который будет отваливаться от сети при пропадании питания - не есть хорошо. В других примерах часто есть такое, что даже при нажатии на кнопку сброса влетает в не понятные состояния с Exception. У вас все стартует после сброса, тут вопросов нету. Была мысль что в флешь шьются какие-то настройки точки доступа и при вырубании питания что-то там нарушается. Долго искал такое место в исходниках вебсервера, возможно даже что-то там сделал, потому-что какое-то время у меня перестало происходить отваливание точки доступа. Но случилось что пришлось переставить проект вебсервера заново и все началось опять.
 
Последнее редактирование:

pvvx

Активный участник сообщества
Но если переткнуть юсб-кабель, подождав чтобы винда потеряла точку, то сначала она долго не появляется в списке, а потом подключается с ограниченным доступом к сети.
Возможно проблемы с включением питания - сбросом и инициализацией.
Это возможно от путаницы старта после deep-sleep, для ускорения инициализации WiFi. Надо глядеть....
 

AlexMelven

New member
сейчас через какое-то время сделал очередное FlashClearSettings и вместо точки ESP8266 появилась точка ESP_F333F6. Правда быстро исчезла сама. Чудеса :)
 

pvvx

Активный участник сообщества
сейчас через какое-то время сделал очередное FlashClearSettings и вместо точки ESP8266 появилась точка ESP_F333F6. Правда быстро исчезла сама. Чудеса :)
Это нормально при первом старте после прошивки.
Да и что-то нахимичили китайцы в SDK1.5.0 с инициализацией WiFi. Ищю...
 

AlexMelven

New member
еще одна проблема, возможно как-то перекликается с уже описанной.. Выставил на странице сервера Wifi settings -> Auth Mode: WPA2_PSK вместо OPEN, переподключился с вводом пароля через свисток на компьютере - все работает. После этого попробовал подключиться вторым клиентом через телефон - как только телефон пишет про аутентификацию, в терминале платы видно что происходит резет и телефон выдает ошибку аутентификации в итоге. Компьютер со свистком вроде не успевает потерять точку при этом.
4.gif
если выставить OPEN, то подключается с двух мест без проблем. И еще - пробовал выставлять другой канал, отличный от 01 - после перезагрузки страницы все тот же первый канал.

PS. Похоже с телефона не получается подключиться при включенном WPA2_PSK даже в одиночку - тоже резетится плата и ошибка аутентификации в итоге.
 
Последнее редактирование:

pvvx

Активный участник сообщества
И еще - пробовал выставлять другой канал, отличный от 01 - после перезагрузки страницы все тот же первый канал.
Канал зависит от подключения к внешней AP. Меняется, если только режим SOFTAP.
Проблема с повторным включением питания и работой SOFTAP есть в SDK1.5.0. Пока не выловлена. Плавающая - то работает, то нет и у меня зависит от типа модуля. На котором (ESP-12) переделывал на SDK 1.5.0 всё работает :(, на ESP-01 не работает, на плате ESP12E DEVKIT - беда плавающая - то работает, то нет. Поиски продолжаются...
 

pvvx

Активный участник сообщества
Всё - ничего с SDK 1.5.0 не сделать. :mad: Ошибки (протектед) в 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 будет лучше.
 

AlexMelven

New member
чтобы поменять либы, достаточно переименовать ESP8266_SDK_141 в ESP8266_SDK, сделать clean, all? Если да, то у меня все точно так же - при перетыкании питания ограниченный доступ. И FlashClearSetings помогает.
 

AlexMelven

New member
а как можно сравнить, что было записано в настройках вайфай когда все коннектилось и после того как перестало коннектиться? Может там мысли появятся, если станет понятно что портится?
 

pvvx

Активный участник сообщества
чтобы поменять либы, достаточно переименовать ESP8266_SDK_141 в ESP8266_SDK, сделать clean, all? Если да, то у меня все точно так же - при перетыкании питания ограниченный доступ. И FlashClearSetings помогает.
"Свалка" ничего внешнего (из UDK) не берет. Вам надо загрузить новые исходники с git. Там уже изменена папка lib и номер версии DEF_SDK_VERSION в include\sdk\sdk_config.h, плюс мелкие доработки... Либы от SDK используются "обкоцанные". В директории lib есть батники, как они составлены из стандартных. Вырезают лишний хлам и ненужные объектники из стандартных SDK либ и перепаковывают в свои либы. Но все готовые *.a для сборки meSDK уже лежат в данной папке.
Значит ли наличие этих функций что в 1.5.0 пытались сделать поддержку WPA-EAP с авторизацией по ключам?
Это загрузка сертификата... В 2C-ESP8266__SDK__Programming Guide__EN_v1.5.pdf описано...
В 1.5.0 всё собирается без либы libwpa2.a, но почему-то, при WPA возникает WDT в rijndaelEncrypt() в разных точках. Зацикливается что-то.
 
Последнее редактирование:

pvvx

Активный участник сообщества
да, это оно "Set certificate and private key for connecting to WPA2-ENTERPRISE AP"
забавно, куда замахнулись)
Угу - от этого OTA полностью закончилось - это не лезет ни в какую их базовую flash и RAM чипа по размеру :) В общем "перегрузка" фичами не соизмеримыми с производительностью и сферой применения данного модуля. Оптимизацией этих фич под данный чип заниматься никто не будет.
Скорее всего это "испытание на пользователях" алгоритмов для ESP32. А нам оно не надо. Есть толпа модулей на OpenWRT, а их цена уже почти как у ESP32.
 
Последнее редактирование:
Сверху Снизу