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

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

pvvx

Активный участник сообщества
Здравствуйте! Уважаемый pvvx, подскажите пожалуйста как заставить оверлей wdrv запускать генерацию при запуске (перезагрузке) модуля? Пробовал по всякому в init.ini настраивать, добился только чтобы оверлей загружался при перезапуске модуля, а чтобы запустить генерацию надо в веб интерфейсе старт нажимать...
Пробовал и ovl$=1 и ovl$=2.
Он запускается с внешнего подключения. Так было задумано для теста, чтобы передать конкретный IP получателя и не орать на всю сеть. Посылаемые команды описаны...
Далее он заброшен - нет возможности обработки данных UDP в стандартных браузерах, а драйвера RTP для ESP8266 нет.
Т.е. после оценки качества работы ADC на ESP8266 вышло, что такое г не нужно никому.
Надо ставить внешний ADC и писать драйвер RTP. Но на ESP8266 и это нормально работать не будет. Он передает с дырками - такой китай-драйвер WiFi у него.
TCP это дело спасает - там есть перезапросы. Переписывать на websocket уже не стал - слишком много "но" у ESP8266 и появилась полноценная замена...
 
Последнее редактирование:

alex35567

New member
Понятно, спасибо за ответ. Хотел просто приспособить это дело для автонастройки IP адреса в программе-клиенте, типа модуль раз в секунду или реже броадкастом кидает данные, программа клиент слушает определенный порт и определяет IP модуля по IP источника.
Значит придется попробовать включать широковещательным пакетом с G на порт 10201 из приложения...
 

alex35567

New member
Еще один вопрос что будет когда Counter erase the last flash sector in the Chinese SDK, to save 28 bytes: 8227! сделает дырку во флэш в этом секторе? Я так понимаю сектор перезаписывается при любой перезагрузке что софтовым reset-ом через веб, что ножкой RST и ножкой CH_PD?
 

pvvx

Активный участник сообщества
Еще один вопрос что будет когда Counter erase the last flash sector in the Chinese SDK, to save 28 bytes: 8227! сделает дырку во флэш в этом секторе? Я так понимаю сектор перезаписывается при любой перезагрузке что софтовым reset-ом через веб, что ножкой RST и ножкой CH_PD?
Что будет? Дырка будет. По началу будет помнить недолго - пару дней, потом что-то не прописываться и тогда будет зависон - в SDK стоит процедура, делается запись в данный сектор, потом он читается и сравнивается, если запись не совпадает, то по кругу и вечно, пока совсем не умрет. Наверно будет срабатывать WDT. Расчет что вы купите новый модуль и чтобы не смогли сделать устройство на продажу. Espressif cделали так, чтобы за время гарантии исчерпать ресурс Flash. Необходимо патчить бинарные либы и вписать хотя-бы проверку, что пытается стереть сектор и записать то-же самое... Но там каждый раз могут оказаться разные данные. В записываемом куске много лишнего... В общем нет смысла бороться с устройством, сделанным для игры на один вечер. Оно и стоит соответственно.
 
Последнее редактирование:

vad7

Active member
@pvvx, как тут выяснялось, esp8266 используется в одной российской системе управление отоплением.... я в шоке... :eek:
Причем стоит этот девайс далеко не бюджетно.
 

alex35567

New member
Мда, зацикливание это плохо... Но патчить бинарные либы для ESP под силу только вам (ну за исключением наверно китайцев), так что придется пореже перегружать модуль (я то сделал периодическую перегрузку по отсутствию RTS типа "а вдруг модуль завис?", а потом увидел этот растущий счетчик...).
Вообщем спасибо за разъяснения и за эту отличную прошивку для народного WIFI!
 

pvvx

Активный участник сообщества
Мда, зацикливание это плохо... Но патчить бинарные либы для ESP под силу только вам (ну за исключением наверно китайцев), так что придется пореже перегружать модуль (я то сделал периодическую перегрузку по отсутствию RTS типа "а вдруг модуль завис?", а потом увидел этот растущий счетчик...).
Вообщем спасибо за разъяснения и за эту отличную прошивку для народного WIFI!
Попробуйте сменить процедуры установок режимов типа uint8 wifi_get_opmode_default(void) на uint8 wifi_get_opmode(void) и т.д. А то та часть конфигурации WiFi писалась до ввода в SDK различий с обязательной записью конфигов в Flash и без. По этому запись при старте происходит 2 раза. Один раз по причине что не всё сохраняется и требует изменения при старте. Что - уже не помню, но оно по старту ставится не в то значение, что надо :)
И есть простая возможность перенести сектор записи конфигов в новой версии SDK. Так-же патч можно написать не лазая в бинарник - с помощью проверки в процедуре чтения-записи на номер сектора :)
@pvvx, как тут выяснялось, esp8266 используется в одной российской системе управление отоплением.... я в шоке... :eek:
Причем стоит этот девайс далеко не бюджетно.
А может у них подписан NDA и они поправили всё что хотели. Наши то могут и на стенд её и прогнать по всем параметрам и выявить все глюки, да исправить. Это не жадные китайцы из Espressif. Тяните у них прошивку :) Я бы с удовольствием завершил проекты на ESP, но на реверс всей части WiFi у меня нет желания, времени и сил, да настроения после общения с ESP8266... А по причине глючности все проекты на ESP8266 застряли на стадии тестов, а не готовых проектов... Рабочего SDK так за два года и не дождались...
Сами китайцы выпускали поделки на SDK 0.9.2, который лезет в 256 кило раздел Flash, на большем номере SDK их поделок не встречал, но там что-то совсем примитивное - управление светодиодами :)
 
Последнее редактирование:

kiposergey

New member
Мне с этими долбомодулями невезет. Купил 07 версию, на ат команды нереагирует зато замкунть ногу на землю и зашил tcpuart, веб видно, обновил то еще хрень вторую. Немогу подключитса невкакую к порту что на заглавной странице. Уарт опять молчит. На АТ нету реакции. Ну думаю пидары китайские чето намудрили. Купил 01 версию, тоже сука молчит. Вернее эхом повторяет что в уарт скидую. Думал може какую ногу надо к земле или + приложить, а гугл говорит ненадо. Влил все что можно, один хер
oad 0x40100000, len 816, room 16
tail 0
chksum 0xef
load 0x00000000, len 0, room 8
tail 0
chksum 0xef
load 0x00000000, len 0, room 0
tail 0
chksum 0xef
csum 0xef
csum err
ets_main.c

сплевует при включении на скорости 75000 и все. Ни ат команд непонимает ниче.
 

kiposergey

New member
Проблема решилась перепайкой флеша на 8мбит. Теперь вобще недоганяю, приконектился вифи свистком, залил вебдиск. На заглавной странице TCP2UART connect: closed, Web connect: 192.168.4.2:53840, конектюсь сюда vcom терминалом и болт, конектион фалед. Можете дать детальную инструкцию как сделать нефалед и куда че вписывать чтоб выйти по типу "У меня андройд мобила и stm miny , у дружбана в другом городе тоже, хочю их подружить по уарту"

Main TCP-UART Settings тут вписал 192.168.4.2 и порт 12345, на главной странице всеравно рандромный порт и хрен подключишся.
 
Последнее редактирование:

alex35567

New member
Ну рандомный порт который "192.168.4.2:53840" это соединение по web - ответный сокет со стороны компа, а терминалом надо подключаться на 192.168.4.1:12345, раз в TCP settings 12345. В гипертерминале выбираем например пишем Winsock, пишем 192.168.4.1:12345 и должно приконнектиться, дальше на модуле замкни TX и RX (напрямую без конвертера уровней или USB-TTL) и в гипертерминале будешь видеть то же что и нажимаешь (эхо) - тогда все работает.
 

kiposergey

New member
Невидит 12345 порт, пробовал понизить 128 (мол може >1024 система чето недает), вобще нет конекта по этому порту. По 80 есть, еще чето есть. А указаный совсем нет.
 

alex35567

New member
Может файервол или сетевой экран антивируса? Повыключать все, указать на модуле 23 или 22 порт (какой в ОС свободный).
 

kiposergey

New member
Указазал 10 порт, он один хрен закрытый и к нему нет конекта. Я тут уже научил ево к моей точке по бсид имени подрубатса. Епт, поганые интернеты. Порты сокеты. Щяс еше поиграюсь, забью хер и напишу свой .
 

kiposergey

New member
Подрубил дебаг, пишет клиент ерор. Тут епт осенило, а чево это он в режиме клиента, оказалось ненадо трогать поле сервер\клиент а то он начнет ломитса по этому адресу. А мне надо было наоборот. Всем спасибо, все работает. Токо непонятно почему ошибка суммы была на старой флешке.
 

olegrogovenko

New member
Всем привет! Пытаюсь использовать ESP8266 в качестве моста UART-TCP и столкнулся с проблемой задержки данных. UART работает на 19200 8n1, данные передаются с интервалом около 70 мсек. Приём на комп по UART идёт как положено, а с TCP- рывками с задержкой. Для наглядности записал видео потока. Слева- открыт TCP, справа- COM:
Можно как-то это победить? Может кто уже сталкивался с таким?
 

pvvx

Активный участник сообщества
Всем привет! Пытаюсь использовать ESP8266 в качестве моста UART-TCP и столкнулся с проблемой задержки данных. UART работает на 19200 8n1, данные передаются с интервалом около 70 мсек. Приём на комп по UART идёт как положено, а с TCP- рывками с задержкой. Для наглядности записал видео потока. Слева- открыт TCP, справа- COM:
Можно как-то это победить? Может кто уже сталкивался с таким?
Подумайте как это передается. :) TCP, UDP, WiFi воощета блочные устройcтва :)
0.07*19200/11=122 байта в пакетике :p
"задержки данных" от последнего байтика в блоке? :)
У вас Pitty тормозит c прорисовкой. Ей сложно сразу нарисовать весь пришедший блок или комп такой тормоз? :)
 
Последнее редактирование:

olegrogovenko

New member
Подумайте как это передается. :) TCP, UDP, WiFi воощета блочные устройcтва :)
0.07*19200/11=122 байта в пакетике :p
"задержки данных" от последнего байтика в блоке? :)
У вас Pitty тормозит c прорисовкой. Ей сложно сразу нарисовать весь пришедший блок или комп такой тормоз? :)
Извиняюсь, с TCP сталкиваюсь впервые...
Не совсем понял про 122 байта...получается набирается пакет из данных в 122 байт и затем отправляется?
У меня передается по uart 3 слова по 16 бит (48 бит), затем пауза в 70 мсек, потом опять 48 бит и опять пауза 70 мсек и опять 48 бит и т.д.
Получается что задержка из-за того, что TCP ждёт наполнение пакета моими "данными с задержкой"?
Комп нормальный...
Вообще это всё делаю для "условного вольтметра" реального времени на AVR со своим протоколом по воздуху. Программа в VS на С#. Упрощённо в отдельном потоке принимаю массив байт по TCP , ищу заголовок, считываю определенные байты, преобразую и вывожу информацию. И получается такая ерунда:


Слева напрямую с uart, а справа- по wifi.

Выходит что не получается быстро обработать 122 байта?
Принудительно задал размер разбираемого массива от TCP в 6 байт (48 бит, т.е. одна пачка "моих" байт)- ничего не изменилось.
Извините если глупые вопросы задаю. Подскажите если можете в каком направлении двигаться...
 
Последнее редактирование:

pvvx

Активный участник сообщества
Извиняюсь, с TCP сталкиваюсь впервые...
Не совсем понял про 122 байта...получается набирается пакет из данных в 122 байт и затем отправляется?
Это при условии непрерывного поступления байт по UART с 19200 11 бит на байт и если пакеты приходят каждые 70 мс. В коде TCP2UART есть регулировки набора пакетов.
Выходит что не получается быстро обработать 122 байта?
У меня нет вашего кода и времени разбираться в нем, вы же даже тему вскользь не читали....
Передача, при блочных пакетах по UART описана - ждет 2.5 символа тишины и передает пакет.
 
Сверху Снизу