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

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

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

  1. mcmega

    mcmega Новичок

    Сообщения:
    93
    Симпатии:
    1
    Скажите, кто нибудь в Web добавлял страницу с отображением доступных сетей? Типа страница сканирования.
     
    Последнее редактирование: 30 мар 2015
  2. pvvx

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

    Сообщения:
    9.091
    Симпатии:
    1.303
    Нет. У меня в Web стоит время ожидания до закрытия соединения 5 сек, а этого может не хватить для простого вывода в HTML по ожиданию опроса, как это делают в Lua, да и такой подход не верен. По тому надо писать выдачу XML и опрашивать на AJAX готовность данных.
    Делается это всё элементарно. Причина почему нет указана тут: http://esp8266.ru/forum/threads/raz...go-webservera-na-esp8266.56/page-18#post-3922
     
  3. okan_vitaliy

    okan_vitaliy Новичок

    Сообщения:
    6
    Симпатии:
    0
    Уважаемый PVVX !!! Я в диком восторге от Вашей прошивки. Это просто удар по дикому западу. Огромное Вам спасибо за Вашу работу, можно представить сколько у Вас на это ушло времени. Уже второй день мучаю прошивку и столкнулся с одной маленькой, но очень неприятной проблемой. Когда на телефоне или планшете с помощью программы ez-gui multiwii открываю соединение, то все работает. Затем ложу тело в спячку и через несколько секунд включаю, то все работает. Если через несколько минут включаю, то программа пишет, что соединение потеряно и нужно пересоединиться. Но повторно соединиться не удается. Полностью выключаю телефон или планшет и перегружаю. Результата никакого. Вебсервер все время работает и показывает, что соединение по уарту открыто. Короче соединение не пропадает при отключенном телефоне . Помогает лишь снятие питания с модуля. Поэтому вопрос - это так должно быть или это баг. Если так должно быть может Вы в вебсервере сделаете опцию принудительного сброса соединения по уарту. Заранее благодарю.
    PS. Изменяя номер тсп порта для уарта и сохраняя соединение сбрасывается и потом восстановив старый адрес можно опять открывать порт. Так не очень удобно делать, когда модуль установлен на коптере или самолете, хотелось хоть бы кнопочку для сброса соединения.
     
    Последнее редактирование: 31 мар 2015
  4. pvvx

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

    Сообщения:
    9.091
    Симпатии:
    1.303
    Не много, т.к. дописывалось кусами и кое-как. И примером письма на СИ это не является - я не проргаммист и культурному описанию на СИ или C++ не обучен и не хочу - для этого есть программисты. :)

    Это связано с самим модулем ESP8266 и всей сетью. После долгой паузы, первый запрос имеет длительный, назовем "пинг".
    А то что соединение разрывает телефон, уходя в спячку, решается закрытием соединения и повторным открытием при просыпании. Протоколам это не мешает. Открывайте соединение когда приложение активно и закрывайте, когда не требуется коммуникация.
    У него нет таймаутов до передачи первого байта при соединении и ожидания следующего. При установке таймаутов получаем не туннель, а что-то другое. Если вам нужны таймауты на закрытие соединения - вставьте в СИ, в tcp_term_init(uint16 portn)
    там счас так:
    p->time_wait_rec = 0; // вечное ожидание
    p->time_wait_cls = 0; // вечное ожидание
    Укажите время в секундах, до 65535 сек. Можно сделать эти переменные и в 32 бита, изменив в заголовке struct t_TCP_SERV_CFG одновременно и у recv_check в t_TCP_SERV_CONN.
    uint16 time_wait_rec; // время (сек) ожидания запроса (передачи пакета) от клиента, до авто-закрытия соединения, по умолчанию TCP_SRV_RECV_WAIT сек .
    uint16 time_wait_cls; // время (сек) до авто-закрытия соединения после приема или передачи, по умолчанию TCP_SRV_END_WAIT сек.
    и uint16 recv_check; // счет тиков соединения в tcpsrv_poll

    Если соединение открыто, то его необходимо закрыть по протоколу TCP, а не бросать. Если бросили, то можно закрыть через HTTP - как раз тем что вы описываете далее - передав команду установки номера порта в нуль и далее вернуть в необходимый.

    Для Web сервера эти времена меняются ~web_twrec=x~ и ~web_twcls=x~, но не сохраняются по сбросу питания, т.к. их изменять может быть необходимо только разово, для специфических HTML приложений... и они влияют на все Web соединения.
    Могу вставить аналогичное и для TCP-UART в следующей версии...
     
    Последнее редактирование: 31 мар 2015
  5. okan_vitaliy

    okan_vitaliy Новичок

    Сообщения:
    6
    Симпатии:
    0
    Буду ждать с нетерпением изменений в следующей версии. И если есть возможность добавьте плиз кнопочку принудительного закрытия соединения. А то при плохой связи соединение физически прервется, а стек будет думать, что соединение еще активно. По идее должна быть где то проверка на наличие физического соединения. Ну типа как в юсб, когда выдергивается само устройство, то программа видет, что физически устройства нет и закрывает порт. По крайней мере я так когда то делал и винда не подвисала и программа потом сама могла при подключении восстановить соединение. В тсп я не сильно понимаю, но думаю аналогичный механизм там должен быть.
     
  6. pvvx

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

    Сообщения:
    9.091
    Симпатии:
    1.303
    Это не предусмотрено в простой работе с TCP. Т.е. вы не сможете этим воспользоваться в приложениях выше уровнем, чем сам драйвер TCP.
     
  7. FGX

    FGX Читатель

    Сообщения:
    100
    Симпатии:
    9
    Добрый день. А в MIT App Inventor 2 есть возможность подключения к TCP?
    И еще вопрос, чтобы был законченный продукт нам же нужно иногда соединить два ESP модуля между собой, чтобы получился как бы удлинитель без участия ПК или еще кого шипко умного, но ESP только умеет создавать порт, а подключаться он не умеет, т.е. я могу данные с UART передавать только на комп... или ставить на второй мк модуль с AT прошивкой и подключаться к порту, что не совсем удобно, однобоко как-то выходит. Эта проблема нерешаема в принципе или просто до этого еще руки не дошли?
     
  8. pvvx

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

    Сообщения:
    9.091
    Симпатии:
    1.303
    А посмотрите - он же online и требует только google disk (регистрацию)

    В ней существует беда "от мало памяти". Комп может держать буфера, а с двумя ESP, да ещё и на разных скоростях UART у нас буфер ограничен их размером TCP стека (до 4 кило). Вторая причина - это то, что тогда данная прошивка убьет всех конкурентов. По этой совокупности и не реализовано. (Политика очень простая - не хотите покупать готовые решения - извольте хоть немного поработать сами и дописать необходимую часть для себя.)
     
  9. pvvx

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

    Сообщения:
    9.091
    Симпатии:
    1.303
    По просьбе okan_vitaliy в 0.1.7 встроены такие переменные для WEB и написания своих страниц:

    Для текущего соединения TCP-UART:


    tcp_disconnect=x – закрыть текущее соединение TCP2UART, где x – любой символ

    ~tcp_twrec~ - возвращает время в сек стартового ожидания приема/передачи первого пакета, до авто-закрытия соединения. =0 –> без ограничения.
    tcp_twrec=x установить это время для текущего соединения TCP2UART

    ~tcp_twcls~ - возвращает время в сек до авто-закрытия соединения после приема или передачи последнего пакета. =0 –> без ограничения.
    tcp_twcls=x установить это время для текущего соединения TCP2UART

    Для конфигурации TCP-UART:

    ~cfg_tcp_twrec~ - возвращает время в сек стартового ожидания приема/передачи первого пакета, до авто-закрытия соединения. =0 –> без ограничения.
    cfg_tcp_twrec=x установить это время для текущего соединения TCP2UART и последующей конфигурации*.

    ~cfg_tcp_twcls~ - возвращает время в сек до авто-закрытия соединения после приема или передачи последнего пакета. =0 –> без ограничения.
    cfg_tcp_twcls=x установить это время для текущего соединения TCP2UART и последующей конфигурации*.

    (*) сохранение конфигурации в памяти модуля: cfg_save=1
    Проверяйте.
    Полный список переменных уже очень большой и его сложно описать :)

    Изменены базовые HTMl...
     
    JustACat и THK нравится это.
  10. okan_vitaliy

    okan_vitaliy Новичок

    Сообщения:
    6
    Симпатии:
    0
    ОГРОМНОЕ ВАМ СПАСИБО. Завтра протестю и отпишусь.
     
  11. pvvx

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

    Сообщения:
    9.091
    Симпатии:
    1.303
    уже нашел ошибку в HTMl - не то вписал в установку порта WEB на странице Setup :) Скоро исправлю...
    То было открыть ещё один порт для Web :)
    web_port=x - открыть новый порт
    web_close=x - закрыть Web с номером порта x
    А надо было cfg_web_port=x и ~cfg_web_port~ для чтения номера порта...
     
    Последнее редактирование: 1 апр 2015
  12. okan_vitaliy

    okan_vitaliy Новичок

    Сообщения:
    6
    Симпатии:
    0
    Проверил. Выставил 5 секунд при отсутствии данных отключать соединение - все работает. СПАСИБО.
     
  13. mcmega

    mcmega Новичок

    Сообщения:
    93
    Симпатии:
    1
    Было бы неплохо добавить функцию восстановления заводских настроек без сброса питания (установить режим Клиент + Точка), а при замыкании GPIOn в течении 5 секунд на землю.
    Скажем если модуль стоит в выключателе не очень каждый раз разбирать и автоматом щёлкать, проще кнопку сброса впаять. К тому же лишнее излучение дома совершенно не к чему, настроил подключение, проверил, что модуль зацепился с сетью и перевел в режим клиента.
     
  14. FGX

    FGX Читатель

    Сообщения:
    100
    Симпатии:
    9
    Добрый день, а саму прошивку можно только через прошивальщик обновлять? Вопрос снят, обновил через прошивальщик. В версии 1.0.8 пропали вкладки отладка с графиками. Если загрузить WEBFiles.bin старый то они появятся, т.е. поддержка осталась в самой прошивке?
     
    Последнее редактирование: 1 апр 2015
  15. pvvx

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

    Сообщения:
    9.091
    Симпатии:
    1.303
    В "пакете" есть каталог с полной демкой и файлами WEBFiles и make_webfs.bat, создающий новую версию WEBFiles.bin...
    Базовые файлы диска для TCP2UART находятся в папке WEBFilesTCP2UART и преобразуются make_webfs_tcp2uart.bat или PVFS2.exe в WEBFiles.bin.
    Расширенная версия - это только для демонстрации как и что писать в своих HTM для вашего проекта на основе данного Web.
     
  16. FGX

    FGX Читатель

    Сообщения:
    100
    Симпатии:
    9
    Спасибо, работает, просто уже привык к тому меню и графики красивые жалко было) Еще такой вопрос, wav файл не хочет открывать саундфордж, хотя в редакторе я вижу заголовок и все нормально вроде(если скопировать заголовок полностью с рабочей wav, то открывает, но неправильно, так как там и битрейт чужой получается и каналы и размер..) Это просто саундфордж выделывается, чем вы открываете его?
     
  17. pvvx

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

    Сообщения:
    9.091
    Симпатии:
    1.303
    Дык всё осталось, теперь просто два варианта для создания WEBFiles.bin - "простой TCP2UART" и "демонстрационный проект".
    adc.gif
    Про параметры интрасети в Вынь и обращение по имени, вместо IP, плюс поведение EI указано тут http://esp8266.ru/forum/threads/raz...go-webservera-na-esp8266.56/page-18#post-4077

    Заголовок там нормальный, стандартный и отклонений нет. Если ваш "саундфордж" его не понимает, то тут я ничем не могу помочь. Любой проигрыватель его ест.
    Есть одно примечание, когда в первый раз создаете WEBFiles.bin программой PVFS2.exe, то в ней надо дополнить список расширений файлов и/или названий файлов подлежащих "парсингу" файлами с расширением *.wav. Она запоминает установки. Если не дополнили, то wav генерироваться не будет и будет содержать 10 байт, равных: ~test_adc~. В случае использования make_web.... .bat это не требуется - там это разово передается в параметрах и не запоминается.
     
  18. FGX

    FGX Читатель

    Сообщения:
    100
    Симпатии:
    9
    Добрый день. Еще такой вопрос, я представляю ответ, но все же спрошу. Есть ли возможность подключения к серверу ESP и к его TCP порту с данными не из локальной сети? Может быть через какой-то сторонний ресурс или если подключить статичный ip адрес?
     
  19. Victor

    Victor Administrator Команда форума

    Сообщения:
    2.212
    Симпатии:
    387
    на домашнем роутере можно поднять Dynamic DNS (все еще есть бесплатные сервисы, предлагающие такую услугу), если у вас на нем динамический внешний адрес и, если роутер позволяет (а новые почти все позволяют), прокинуть 80 порт во внешний мир. Т.е. вы будете из интернета заходить браузером http://100.100.100.100 или http://esp8266.домен_дднс.org а попадать будете на вебсервер ESP8266. Однако это очень небезопасный подход, да и вебсервер ESP8266 просто не осилить весь тот трафик, который приходит из сети.
     
  20. FGX

    FGX Читатель

    Сообщения:
    100
    Симпатии:
    9
    Нашел сервис https://thingspeak.com, можно через него выводить немного информации и смотреть ее через интернет и мобилку, правда реализовать это в этой прошивке не получиться...
    Вообще интересная задача -это потоковая передача на мобилу данных с УАРТА по wifi, чтобы на мобиле рисовался график, в общем сделать простенький осциллограф с удаленным экраном.
    Т.к. веб сервер уже умеет выводить график со своего АЦП, то может можно выводить график именно из данных, которые приходят по УАРТУ через будущий web soket. Например в 8-ми битном режиме, каждый байт -новый отсчет. Тогда со стороннего мк трамбуем данные с АЦП в УАРТ и смотрим через сервер график. Конечно с настройками шкалы тут будет не очень, но можно сделать настройку цены деления, типа 0h00=-310В, 0hFF=310V и все, а количество выборок в секунду настаиваем в мк который делает измерения, т.е. тоже задействуем будущий web soket и шлем настройки измеряющему МК. Такая интересная идея сделать монитор каких-либо внешних датчиков, жаль я в web программировании совсем не секу. Да и приложение осциллографа, наверное, лучше писать в среде программирования, чтобы там синхронизация была. А то переменка будет прыгать по графику и ничего не разберешь. В принципе на ПК уже сейчас это можно реализовать...но на мобилке более мобильно, а веб реализация еще и универсальнее. В общем это так, мои мечты в слух, прошу сильно не пинать.
     

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