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

Прошивка TCP2UART переходника с настройкой по Web

IgorPV

New member
Возникла необходимость передавать данные на удалённый сервер имеющий большое время отклика. Скорость передачи должна быть не менее 1МБит/сек. Когда отправляю данные на локальный сервер, достигаются и большие скорости, однако стоит сменить IP адрес на удалённый сервер, скорость падает до 100-150КБит/сек. В модуле использую прошивку TCP2UART.
Когда смотрю на обмен данными сниффером вижу что данные с модуля ESP передаются по 2 пакета, затем следует ACK. При передачи с компьютера, данные отправляются на высокой скорости, на сервер передаются до 10 пакетов за раз. Пробовал увеличивать размеры буферов в lwIP: TCP_SND_BUF, TCP_WND, TCP_SND_QUEUELEN. Это не помогло. Подскажите что можно сделать чтоб стек отправлял больше пакетов за раз или может что-нибудь ещё надо для быстрой передачи на такие сервера.
Просим помощи на возмездной основе.
 

pvvx

Активный участник сообщества
Возникла необходимость передавать данные на удалённый сервер имеющий большое время отклика. Скорость передачи должна быть не менее 1МБит/сек. Когда отправляю данные на локальный сервер, достигаются и большие скорости, однако стоит сменить IP адрес на удалённый сервер, скорость падает до 100-150КБит/сек. В модуле использую прошивку TCP2UART.
Когда смотрю на обмен данными сниффером вижу что данные с модуля ESP передаются по 2 пакета, затем следует ACK. При передачи с компьютера, данные отправляются на высокой скорости, на сервер передаются до 10 пакетов за раз. Пробовал увеличивать размеры буферов в lwIP: TCP_SND_BUF, TCP_WND, TCP_SND_QUEUELEN. Это не помогло. Подскажите что можно сделать чтоб стек отправлял больше пакетов за раз или может что-нибудь ещё надо для быстрой передачи на такие сервера.
Просим помощи на возмездной основе.
2 пакета на ACK - это алгоритм TCP для получения большей скорости https://support.microsoft.com/en-us...ing-small-data-segments-over-tcp-with-winsock
Размер самого стека TCP (TCP_WND) ограничен памятью ESP8266 и обычно до 4-х пакетов - к 6-ти кило. У компа, обычно за 100 килобайт. Без подтверждения приема (ACK-ов) при передачи этого объема TCP "стека" не может открыть новый "стек" - где он возьмет пакет из "стека" при перезапросе?
Разберитесь с работой TCP и выкиньте ESP8266 - он устарел и не имеет памяти для полной поддержки TCP по всем стандартам.
При передачи с компьютера, данные отправляются на высокой скорости, на сервер передаются до 10 пакетов за раз. - 10 пакетов - это за 15 килобайт - нет у ESP такой памяти на каждый буфер приема и передачи каждого сокета... И на скорость от этого мало зависит - всё равно передающий будет ждать подтверждение всех переданных вперед пакетов со скоростью работы линии (~ времени ping сети).
Если данные от UART идут на 115200, то 10 пакетов - это 10*1460/(115200/10) = 1.267361 сек.
У вас пинг с сервером 1.2 сек? Сервер на Луне? :) Чините связь, а тут, для приложений TCP2UART обычно требуются реакции на передачу и прием от конечного UART, хоть по байту, не более 50..200 мс.
У GSM российских сетей бывает ping до 5 секунд. Представьте размер буфера для 100Mbit/s :)
 
Последнее редактирование:

IgorPV

New member
Разберитесь с работой TCP и выкиньте ESP8266 - он устарел и не имеет памяти для полной поддержки TCP по всем стандартам.
Спасибо за объяснение. Подскажите какие WiFi модули вы рекомендуете использовать для решения задачи передачи пакетов данных по 300КБайт на сервера с пингом 200-400мс за время не более 2 сек.
 
Последнее редактирование:

pvvx

Активный участник сообщества
Спасибо за объяснение. Подскажите какие WiFi модули вы рекомендуете использовать для решения задачи передачи пакетов данных по 300КБайт на сервера с пингом 200-400мс за время не более 2 сек.
Не озадачивался, т.к. для скоростных решений всегда локалка с пингом до 1 ms.
Из именно модулей, доступных в продаже в российских магазинах с малой стоимостью среди других, и запросто справляющимся с вашими задачами есть Omega2+.
 
Последнее редактирование:

AleksLux

New member
Спасибо Автору за труды! Очень нужная вещь
Подскажите ноутбук ни в какую не хочет заходить не вебморду. со 100 попыток может зашел раз 5. Зато смартфон аж бегом. Нетбиос включал в настройках толку никакого, если это должно было помочь
Второй момент другая, которая готовая плата NodeMcu с этой прошивкой вообще не стартует
 
Последнее редактирование:

AleksLux

New member
Нужно подключится на порт tx debug и посмотреть чего там валится при подключении ноута
Подключился к RX TX ничего там не валится, только при перезагрузке модуля выскакивает информация. Может как то какой то режим надо включать? Ноут упорно получает почему то совершенно другой айпишник, А даже когда получает нормальное подключение очень часто браузер тоже не грузит страницу и вытелает по таймауту. Пробовал уже на двух модулях.
Также не мешало б вообще мануальчик по прошивке обновить. Да и по менюхам веб интерфейса сделать. для новичков вообще не понятно(( изменились названия файлов, в первом посту и в инструкции архива не совпадают с имеющимися. Зачем шить WEBFiles.bin вообще не понятно, его вообще в прошивке нет)) когда сгенерировал программой WEBFS22.exe и попробовал залить WEBFiles.bin, не заливается,разве что программатором, но и без него работает. Прошил так- зашил два файла fullflash_tcp2uart.bin 0x00000 WEBFilesUART.bin 0x80000 Но об том вообще нигде не слова!
Вчерашний NodeMcu готовая плата вчера так и не запустилась и была закинута, сегодня включил все работает. Чудеса)
fullflash_modbusrs485.bin WEBFilesRS485.bin что это и как его применить вообще пока не понял
 
Последнее редактирование:

AleksLux

New member
Замечены реконекты сети с разным интервалом времени, можно как то подлечить? Также скорость порта не выставляется в четко заданные значения
 

pvvx

Активный участник сообщества
Замечены реконекты сети с разным интервалом времени, можно как то подлечить? Также скорость порта не выставляется в четко заданные значения
Скорость порта не может быть выставлена любая на ESP8266. Подбирается и указывается ближайшее возможное значение делителя.
Реконекты связаны с дровами WiFi от Espressif, самим чипом, наличию помех в эфире. Это не проводная система.
 

AleksLux

New member
Реконекты связаны с дровами WiFi от Espressif, самим чипом, наличию помех в эфире. Это не проводная система.
Спасибо большое за ответ. ТО есть те же реконекты (пробовал на двух чипах) у меня будут если я настрою мост к примеру на родной прошивке АТ командами? Ваша собрана я так понимаю на версии 1.5.4 может в последней разработчики 2.1 Эту проблему устранили? То что не проводная система понятно, но у меня же от роутера не отваливается каждые 1-7мин )) Насчет дров возможно, надеюсь устранят. Может еще как то надо правильно поднастроить Вашу прошивку?
 

pvvx

Активный участник сообщества
Спасибо большое за ответ. ТО есть те же реконекты (пробовал на двух чипах) у меня будут если я настрою мост к примеру на родной прошивке АТ командами? Ваша собрана я так понимаю на версии 1.5.4 может в последней разработчики 2.1 Эту проблему устранили? То что не проводная система понятно, но у меня же от роутера не отваливается каждые 1-7мин )) Насчет дров возможно, надеюсь устранят. Может еще как то надо правильно поднастроить Вашу прошивку?
С разными AP ситуация разная. В настройках их бывает смена времени ротации ключа шифрования. На это плохо реагирует ESP8266.
Бывает, что у AP роутера включен тайм-аут тишины (когда нет передаваемых данных к станции или от неё), по которой он отключает станцию. Это норма для WiFi по стандартам.
Для этого надо передавать что-нибудь или пинговать в период к 20 сек.
Сама AP ESP8266 выкидывает клиентов, которые соединились и молчат в течении 20..60 сек. Опций изменения этого у драйвера ESP8266 нет.
На роутере типа ASUS RT-N56U с неоф. прошивкой соединение длится вечно. Кроме случаев глюков самой ESP8266. Но тогда её станция уже не пашет до переключения питания или RESET. (Если глюк не привел к глушилке всего окружающего WiFi, то зайдя на AP ESP8266 можно увидеть, что станция соединена и типа всё ok, а отключение и включение станции программными методами и в меню web уже ничего не дает - чип что-то съел, а дрова не могут его вывести из этого состояния)
 
Последнее редактирование:

AleksLux

New member
С разными AP ситуация разная.
Сама AP ESP8266 выкидывает клиентов, которые соединились и молчат в течении 20..60 сек.
прошил на последнюю V2.1.0 20170505 и настроил

AT+CWMODE_DEF=2 режим точки доступа
AT+CWSAP_DEF="WIFI","0123456789",1,0 (название,пароль,канал,тип шифрования)
AT+CIPAP_DEF="192.168.0.10","192.168.0.10","255.255.255.0" айпи точки доступа
AT+CIPMUX=1 колво соединений (1-несколько)
AT+CIPSERVER=1,35000
Так вот может не корректно сравниваю, но висит уже довольно долго и реконекта сети не происходит!
ESP не висит, так как Телнет на смартфоне подключается по первому требованию

Еще насколько я понимаю одной настройкой АТ командами сквозной передачи в режиме точки доступа не обойтись? если можно то как?
 
Последнее редактирование:

pvvx

Активный участник сообщества
прошил на последнюю V2.1.0 20170505 и настроил

AT+CWMODE_DEF=2 режим точки доступа
AT+CWSAP_DEF="WIFI","0123456789",1,0 (название,пароль,канал,тип шифрования)
AT+CIPAP_DEF="192.168.0.10","192.168.0.10","255.255.255.0" айпи точки доступа
AT+CIPMUX=1 колво соединений (1-несколько)
AT+CIPSERVER=1,35000
Так вот может не корректно сравниваю, но висит уже довольно долго и реконекта сети не происходит!
ESP не висит, так как Телнет на смартфоне подключается по первому требованию
Смарт всё время долбит соединение, вот и не разрывается.
Если смарт гасит экран и включает DTIM(x) на WiFi, то часто отваливается, но потом он опять автоматом соединяется, если его "взбодрить" - включить экран...
Еще насколько я понимаю одной настройкой АТ командами сквозной передачи в режиме точки доступа не обойтись? если можно то как?
Что за "сквозная" передача?

У "AT" от Espressif ранее было много ошибок. Например один и тот-же порт, без учета TIME_WAIT в TCP. Если выключить и включить ESP8266, то он открывает тот-же порт и IP и запрос с предыдущего порта и старого ip, а в TCP это значит, что команда закрытия соединения не прошла и ему дается команда закрыть соединение :) Ну и вокруг этого плодится много приколов.
Так-же, если соединение удаленное и пинг немного долгий, то при соединении к AP "AT" прошивка ждет не более 1 сек и закрывает соединение - делает новое, не дождавшись ответа и этот цикл бесконечен :)
+ При передаче блоков в "AT" от Espressif в более пары килобайт идут пропуски, даже если сильно постараться и вписываться в размер её буфера...
Ещё много мелочи... Но зачем что-то нужно делать на устаревшем чипе?
 
Последнее редактирование:

pvvx

Активный участник сообщества
Неужели TCP2UART на RTL уже есть? :)
Изначально. В первых версиях SDK.
Какие беды у LwIP socket? Ели плохо пашет -пишите в LwIP :) Может RTOS неверно там работает? Тогда в RTOS :) Остальное вроде пашет. UART стандартная, со времен intel 286 :) ARM и дрова на неё тоже откатаны и повторены из Linux, прямо с тормозящими глупостями в прерывании :) ... Видимо на каких-то 16550 с глюками так когда-то было лучше, но не в данном случае с вариантом ip 16550 в RTL.
Думаю, но не проверял, что и в ESP-32S тоже всё ok с RTOS и LwIP socket, да UART. Там espconsole нет и не используется - RTOS всё-же...
А убить неправильными конфигами того-же LwIP можно всё что угодно. В RTL серии "A" специальная ветка конфига LwIP при использовании TCP2UART для смарта с их программой на смарт... Данные отдельно, конфиги UART отдельно...
А буфер у 200..300 рублевого модуля RTL8711AM можно задать и в 2 мегабайта, и socket такие объемы сожрет, если поставить динамическое распределение в LwIP конфиге...
 
Последнее редактирование:

AleksLux

New member
Смарт всё время долбит соединение, вот и не разрывается.
Если смарт гасит экран и включает DTIM(x) на WiFi, то часто отваливается, но потом он опять автоматом соединяется, если его "взбодрить" - включить экран...

Что за "сквозная" передача?

У "AT" от Espressif ранее было много ошибок. Например один и тот-же порт, без учета TIME_WAIT в TCP. Если выключить и включить ESP8266, то он открывает тот-же порт и IP и запрос с предыдущего порта и старого ip, а в TCP это значит, что команда закрытия соединения не прошла и ему дается команда закрыть соединение :) Ну и вокруг этого плодится много приколов.
Так-же, если соединение удаленное и пинг немного долгий, то при соединении к AP "AT" прошивка ждет не более 1 сек и закрывает соединение - делает новое, не дождавшись ответа и этот цикл бесконечен :)
+ При передаче блоков в "AT" от Espressif в более пары килобайт идут пропуски, даже если сильно постараться и вписываться в размер её буфера...
Ещё много мелочи... Но зачем что-то нужно делать на устаревшем чипе?
1-Мне кажется что смарт никуда ничего не долбит)) Лежит с выкл. экраном и постоянно в соединении, главное поставить настройку не выкл wi-fi в спящем режиме)) А если и долбит, то почему реконект сети на этой происходит с этим же смартом каждые 1-7 мин.
2-Пусть будет не сквозная- Пусть будет прозрачная)) Ну то что выполняет ваша прошивка в этой теме))
3- что значит устаревшем?)) я только до него добрался)) (шутка) А серьезно во первых много чего под него сделано, в том числе и программного обеспечения вроде Вашего. Для новичка это важно! Во вторых разве есть более новые чипы по той же цене? В третьих размер. В четвертых зачем пихать то то более мощное,большое и дорогое туда, где всего навсего нужна передача АТ команд с UART в точку доступа и наоборот!) В пятых а что более новое, ESP32?
4- Может я неясно выразился, но речь веду именно о реконекте точки доступа на ESP, а не об отключении софта, когда он молчит.
Короче 3 дня уже мучаю это дело и пока вижу У вас вроде все хорошо, все прекрасно, здорово сделано! Но есть минус что реконектит точку каждые 1-7 мин, интервал хаотичен. И если можно сравнить выше приведенные мной настройки АТ командами на прошивке V2.1.0 20170505 с вашей, то там это происходит вроде как гораздо реже. Просьба может глянете список изменений? да апгрейдите свою, если это так на новую версию.))
5-По АТ командам спросил можно ли на постоянку с записью в память настроить эту самую передачу в режиме точки доступа, или только до перезагрузки? и без вот этих вот префиксов (отправляешь АТ приходит +IPD,0,4:at) Потому что не нашел такой команды что записать кол-соединений и запуск сервера прям в память. Ну и опять же режим передачи.
В режиме клиента вроде как это решает AT+SAVETRANSLINK
1.1Обобщу- можно ли сделать с помощью АТ передачу в оба конца и без мусора АТ команд, чтоб работало и после перезагрузки в режиме точки доступа или нет?
1.2 Возможно Ваше творение на более новой версии прошивки будет работать стабильнее! Спасибо надеюсь поймете что хотел сказать
 

pvvx

Активный участник сообщества
4- Может я неясно выразился, но речь веду именно о реконекте точки доступа на ESP, а не об отключении софта, когда он молчит.
Короче 3 дня уже мучаю это дело и пока вижу У вас вроде все хорошо, все прекрасно, здорово сделано! Но есть минус что реконектит точку каждые 1-7 мин, интервал хаотичен. И если можно сравнить выше приведенные мной настройки АТ командами на прошивке V2.1.0 20170505 с вашей, то там это происходит вроде как гораздо реже. Просьба может глянете список изменений? да апгрейдите свою, если это так на новую версию.))
У меня этого не проявляется. Я не могу угадать ваши условия со всем оборудованием и настройками.

5-По АТ командам спросил можно ли на постоянку с записью в память настроить эту самую передачу в режиме точки доступа, или только до перезагрузки? и без вот этих вот префиксов (отправляешь АТ приходит +IPD,0,4:at) Потому что не нашел такой команды что записать кол-соединений и запуск сервера прям в память. Ну и опять же режим передачи.
В режиме клиента вроде как это решает AT+SAVETRANSLINK
Давно не копался в "AT" ESP - спросите кто с ними возится...
Возможно Ваше творение на более новой версии прошивки будет работать стабильнее! Спасибо надеюсь поймете что хотел сказать
Возможно, но невозможно возобновить, т.к. это будет чистая потеря времени. Какие-то глюки Espressif починил, но наверняка вставили новые. Это всё надо тестировать, а будущего у этого всё равно нет.
 

AleksLux

New member
У меня этого не проявляется. Я не могу угадать ваши условия со всем оборудованием и настройками.

Давно не копался в "AT" ESP - спросите кто с ними возится...
Возможно, но невозможно возобновить, т.к. это будет чистая потеря времени. Какие-то глюки Espressif починил, но наверняка вставили новые. Это всё надо тестировать, а будущего у этого всё равно нет.
У меня ноут тупит с выходом на вебморду, но думаю это это проблемы узкого профиля с конкретным железом. Не критично, так как через ноут использовать не собираюсь. Смарт цепляется сразу и хорошо! все работает! единственно происходят переотвалы точки доступа, буквально на секунду, неприятно(( проверю если в активном режиме при работе программы этого не будет, то жить наверно можно.Если будет отлетать, то придется отказаться.
Понял, обновлений не будет. жаль((
 

Ramzez

New member
Добрый день.
Подскажите пожалуйста. Использую 2 модуля 8266 у себя дома в своих проектах. Прошивка 0.5.9 .
На обоих периодически сбрасываются настройки.
Например сохраненное имя точки доступа после нескольких перезапусков меняется обратно на ESP**** , сбрасывается пароль и точка становится открытой. Пробовал отключать в настройках опцию сброса настроек - все равно когда нибудь да сбросятся.

На этапе разработки перезагрузки очень частые, поэтому в день несколько раз приходится все вбивать заново.

Но это бы ладно, если бы оно еще подключалось стабильно к роутеру...
Включаю, не подключилось, лезу на точку с новым именем ESP***** , захожу в настройки, там статус WIFI "не подключено" и уже сами выставились галочки "DHCP". Хорошо хоть IP не слетает обычно)

Убирание галочки DHCP и кнопка SET CONFIG обычно не помогают. После ожидания 10 секунд галочка DHCP все равно стоит. Для подключения обычно нужно N итераций: поиск сети - выбор - применение - перезагрузка. Потом оно снова работает сколько то перезагрузок, пока настройки не слетят.

Скорее всего я дурак и что то неправильно делаю. Научите как надо, прошу! Уже скачал последнюю прошивку и хочу попробовать, но не уверен, что выйдет. Пробовал 0.6.2 , показалось, что 0.5.9 работала стабильнее.

Где можно увидеть принципиальную схему подключения что бы именно TCP2UART работал стабильно ? может я какие ноги не развел? Должна ли галка DHCP сохранятся снятой после применения настроек?
Выпадающий список Status несет какую то функцию ? если у меня модуль OFF, все настройки заданы, я выберу GOT IP и нажму Set Config, модуль должен подключиться? (у меня это не работает). Иначе зачем нужно выбирать статусы ?

Возможно есть какие то ограничения - сброс по питанию в процессе загрузки приводит к сбоям или еще что то... что может сбивать настройки ?

Автору большое спасибо за проделанный труд!
Единственное , чего мне не хватает - однократной настройки , что бы потом забыть про веб морду. Пока что не удалось этого добиться.
В мечтах грежу конечно о том, что когда то смогу продать свой девайс, который приедет к юзеру, он зайдет на веб морду, настроит и забудет... но пока что это не возможно, получается.



Заранее спасибо за ответы.

______________________________________

UPDATE прошил 0.6.4 - в архиве нет файла для веб морды (WEBFiles.bin - defult TCP2UART.)
Есть только webfilesRS485 и webfilesUART
 
Последнее редактирование:

AleksLux

New member
У меня этого не проявляется. Я не могу угадать ваши условия со всем оборудованием и настройками.
Скажите может к этим файлам надо зашить свой esp_init_data_default.bin Поэтому глюки. И где его взять тогда, и по какому адресу шить?
 
Сверху Снизу