Прием потока через GPRS

Тема в разделе "Arduino & Shields", создана пользователем Ariadna-on-Line, 5 авг 2018.

  1. Ariadna-on-Line

    Ariadna-on-Line Гуру

    Всем привет. Возникли 3 вопроса:
    1. Какая минимальная допустимая скорость обмена между GSM модемом и Ардуиной, чтобы модем успевал передавать Ардуине потоковые данные от сервера ? Есть ли тут какой стандарт, или для каждого подбирать свой ?
    2. Если станция начала слать поток, требуется ли периодически посылать запросы на продолжение? Если да, то что надо отправить ?
    3. При приеме потока, в потоке регулярно встречается сообщение +TCPRECV:1,1024
    Станция такого вроде бы слать не должна. Это что, модем сам приплюсовывает ? Что-то я такого в даташите не видел.
    ПС. Использую модем NeoWay 590E и библиотеку TinyGSM. Используется - HTTP.
     
  2. b707

    b707 Гуру

    Для начала поясните, что такое "поток данных с сервера"? В моем понимании HTTP протокол работает немного не так - клиент посылает запрос, сервер отвечает. Или вы что-то типа потокового видео хотите ардуиной передавать?
     
    Последнее редактирование: 6 авг 2018
    Igor68 нравится это.
  3. Igor68

    Igor68 Гуру

    Оно верно... но современные браузеры в состоянии работать и по websock. Таким образом соединение одно и непрерывно в обе стороны. Недавно я имел удачный опыт в этом. Тут во флудилке описано.
     
  4. b707

    b707 Гуру

    это не меняет сути протокола, как я понимаю - все равно общение происходит в стиле "запрос - ответ", не так ли?
     
    Igor68 нравится это.
  5. b707

    b707 Гуру

    прошу понять правильно - я ни на кого не наезжаю - я просто пытаюсь добраться до сути вопроса ТС
     
    Igor68 нравится это.
  6. Igor68

    Igor68 Гуру

    Не спорю, но мне не по душе вот это:
    1. браузер соединяется с сервером и делает запрос
    2. сервер отвечает
    3. браузер разрывает соединение.
    и... на стороне сервера вот это:
    Код (Text):
    www-data@debian2:~$ netstat -nlta
    Active Internet connections (servers and established)
    Proto Recv-Q Send-Q Local Address           Foreign Address         State    
    tcp        0      0 127.0.0.1:3306          0.0.0.0:*               LISTEN    
    tcp        0      0 0.0.0.0:111             0.0.0.0:*               LISTEN    
    tcp        0      0 0.0.0.0:8080            0.0.0.0:*               LISTEN    
    tcp        0      0 0.0.0.0:8338            0.0.0.0:*               LISTEN    
    tcp        0      0 0.0.0.0:57300           0.0.0.0:*               LISTEN    
    tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN    
    tcp        0      0 0.0.0.0:8118            0.0.0.0:*               LISTEN    
    tcp        0      0 0.0.0.0:23              0.0.0.0:*               LISTEN    
    tcp        0      0 127.0.0.1:631           0.0.0.0:*               LISTEN    
    tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN    
    tcp        0      0 0.0.0.0:8196            0.0.0.0:*               LISTEN    
    tcp        0      0 0.0.0.0:8197            0.0.0.0:*               LISTEN    
    tcp        0      0 192.168.0.234:41966     192.168.0.232:8197      TIME_WAIT
    tcp        0      0 127.0.0.1:47809         127.0.0.1:8338          TIME_WAIT
    tcp        0      0 192.168.0.234:41801     192.168.0.232:8197      ESTABLISHED
    tcp        0      0 192.168.0.234:58553     192.168.0.246:8971      TIME_WAIT
    tcp        0      0 192.168.0.234:22        192.168.0.237:47293     ESTABLISHED
    tcp        0      0 127.0.0.1:23            127.0.0.1:35309         ESTABLISHED
    tcp        0      0 192.168.0.234:58388     192.168.0.246:8971      ESTABLISHED
    tcp        0   2012 192.168.0.234:8338      192.168.0.20:52854      ESTABLISHED
    tcp        0      0 192.168.1.110:34363     192.168.1.210:23        ESTABLISHED
    tcp        0      0 192.168.1.110:43208     192.168.1.210:9891      ESTABLISHED
    tcp        0      0 127.0.0.1:48430         127.0.0.1:8197          TIME_WAIT
    tcp        0      0 192.168.0.234:58557     192.168.0.246:8971      TIME_WAIT
    tcp        0      0 192.168.1.110:42585     192.168.1.100:102       ESTABLISHED
    tcp        0      0 127.0.0.1:35309         127.0.0.1:23            ESTABLISHED                                                                                                                
    tcp        0      0 127.0.0.1:47812         127.0.0.1:8338          TIME_WAIT                                                                                                                  
    tcp6       0      0 :::139                  :::*                    LISTEN                                                                                                                    
    tcp6       0      0 :::80                   :::*                    LISTEN                                                                                                                    
    tcp6       0      0 :::21                   :::*                    LISTEN                                                                                                                    
    tcp6       0      0 :::22                   :::*                    LISTEN                                                                                                                    
    tcp6       0      0 ::1:631                 :::*                    LISTEN                                                                                                                    
    tcp6       0      0 ::1:25                  :::*                    LISTEN    
    tcp6       0      0 :::445                  :::*                    LISTEN    
    tcp6       0      0 192.168.0.234:80        192.168.0.104:35798     TIME_WAIT
    tcp6       0      0 192.168.0.234:80        192.168.0.104:35797     TIME_WAIT
    tcp6       0      0 192.168.0.234:80        192.168.0.104:35795     TIME_WAIT
    tcp6       0      0 192.168.0.234:80        192.168.0.104:35800     TIME_WAIT
    tcp6       0      0 192.168.0.234:80        192.168.0.104:35793     TIME_WAIT
    tcp6       0      0 192.168.0.234:80        192.168.0.104:35801     TIME_WAIT
    tcp6       0      0 192.168.0.234:80        192.168.0.104:35799     TIME_WAIT
    tcp6       0      0 192.168.0.234:80        192.168.0.104:35794     TIME_WAIT
    tcp6       0      0 192.168.0.234:80        192.168.0.104:35803     ESTABLISHED
    tcp6       0      0 192.168.0.234:80        192.168.0.104:35796     TIME_WAIT
    tcp6       0      0 192.168.0.234:80        192.168.0.104:35802     TIME_WAIT
    www-data@debian2:~$
     
    Посмотрите на это:
    Код (Text):
    tcp6       0      0 192.168.0.234:80        192.168.0.104:35798     TIME_WAIT
    tcp6       0      0 192.168.0.234:80        192.168.0.104:35797     TIME_WAIT
    tcp6       0      0 192.168.0.234:80        192.168.0.104:35795     TIME_WAIT
    tcp6       0      0 192.168.0.234:80        192.168.0.104:35800     TIME_WAIT
    tcp6       0      0 192.168.0.234:80        192.168.0.104:35793     TIME_WAIT
    tcp6       0      0 192.168.0.234:80        192.168.0.104:35801     TIME_WAIT
    tcp6       0      0 192.168.0.234:80        192.168.0.104:35799     TIME_WAIT
    tcp6       0      0 192.168.0.234:80        192.168.0.104:35794     TIME_WAIT
    tcp6       0      0 192.168.0.234:80        192.168.0.104:35803     ESTABLISHED
    tcp6       0      0 192.168.0.234:80        192.168.0.104:35796     TIME_WAIT
    tcp6       0      0 192.168.0.234:80        192.168.0.104:35802     TIME_WAIT
    сколько TIME_WAIT... и это намусорил только 1 клиент (там на странице HTML+JS) каждую секунду идёт обращение к серверу за новой порцией JSON. А при websock соединение будет одно для всей сессии.
     
    arkadyf нравится это.
  7. b707

    b707 Гуру

    судя по всему, клиент соединение закрывает неправильно - сервер не получает извещения о закрытии канала и остается ждать
     
    Mitrandir нравится это.
  8. Ariadna-on-Line

    Ariadna-on-Line Гуру

    Не передавать, а принимать поток музыки. После приема такой партии данных потока - то что поместилось на картинке - ничего больше не происходит.
    Обрыва связи тоже не показывает. Скорость интерфейса модем - Ардуина - 19200bps. Впечатление - модем "захлебнулся" или сервер чего-то ждет от нас. Отсюда мои вопросы.

    Когда я смотрю Вирешарком как принимает музон с этой станции Мозилла - там два раза станция шлет пакеты данных (не повтор), потом Мозилла отправляет короткий пакет чего-то. Потом два раза - станция. И так без конца.
     

    Вложения:

    • Monitor.JPG
      Monitor.JPG
      Размер файла:
      116,7 КБ
      Просмотров:
      287
    Последнее редактирование: 6 авг 2018
  9. b707

    b707 Гуру

    больше похоже на то, что в потоке попался управляющий символ, который подвесил терминал. Попробуйте выводить данные в HEX - вполне возможно, зависать не будет.
     
  10. Igor68

    Igor68 Гуру

    Честно не знаю что сказать. Web-сервер стоит Apache в Debian6. В роли клиента Mozilla-Firefox в Debian8. Но результаты идентичны и с MOXA UC-7112-Lx-Plus и с Raspberry PI (Raspbian). Давние наблюдения. А вот часть скрипта на страничке:
    Код (Javascript):
    function loadFromUno() {

             var str;
        var xmlhttp = new XMLHttpRequest();
        //
        xmlhttp.onreadystatechange = function() {
            if (xmlhttp.readyState == 4 ) {
                if(xmlhttp.status == 200){
                //
                    uno_dat = xmlhttp.responseText;
                    //document.getElementById("myDiv").innerHTML = uno_dat;
                    dbs = eval('(' + uno_dat + ')');
                    UnoParse();
                    }
                    //
                    setTimeout(loadFromUno, 4000);       // Вызвать снова через 4 сек
                }
            }
        //}
        //
        xmlhttp.open("GET", "uno_dat.php?dtime=" + new Date().getTime, true);
        //
        xmlhttp.send();
    }
     
    В принципе я это списал(подсказали)
    Вроде никто ничего не закрывает.
     
  11. parovoZZ

    parovoZZ Гуру

    так ведь там же не браузер, а целый мк.
     
  12. Ariadna-on-Line

    Ariadna-on-Line Гуру

    Вы имеете в виду Монитор порта Ардуины IDE ? Если я принимаю эту станцию этой же ардуиной, но через кабельный интернет, естественно с другой прошивкой - вижу на Мониторе такую же картинку - отродясь зависаний монитора не было. Там работают функции библиотеки Ethernet (но вывод в монитор - мой собственный). А в библиотеке GSM модема нет похожего. Приходится запросы рисовать самому. Отсюда и вопросы.
     
    Последнее редактирование: 6 авг 2018
  13. Airbus

    Airbus Радиохулиган Модератор

    WEBрадио с доступом по 3G?Посмотртте скетч Вебрадио на esp8266 может там по аналогии?
     
  14. Ariadna-on-Line

    Ariadna-on-Line Гуру

    Там для связи - свои библиотеки. Я видел.
     
    Последнее редактирование: 6 авг 2018
  15. b707

    b707 Гуру

    то, что у NeoWay 590E нет 3G :)
     
  16. Ariadna-on-Line

    Ariadna-on-Line Гуру

    То есть не хватит быстродействия канала связи ? Это может быть. Позже отпишусь.
     
  17. Airbus

    Airbus Радиохулиган Модератор

    А не АТ команды разве?
     
  18. Ariadna-on-Line

    Ariadna-on-Line Гуру

    Всем здравствуйте. Есть 3 вопроса :
    1. Максимальная скорость безошибочного приема данных с модема Ардуиной ( и его собственных и принятых извне) - 19200bps. При настройке интерфейса выше, например 38400bps, - появляются ошибки. Вопрос - кому удавалось использовать бОльшую скорость интерфейса, и как этого добились ?
    2. Модем выводит в Ардуино потоковые данные (.mp3 музыку) c сервера очень странно - пакетами около 500 байт/ пакет. Каждый пакет мгновенно, но с большими и разными паузами между пакетами. В среднем получается смехотворно низко - 3 байта/сек. При этом обрыва соединения нет (протокол - HTTP). По даташиту - модем может принимать из сотовой до 48Kbps, но не написано - как это настроить. Вопрос - какими командами управляется выбор диапазона сотовой связи и вообще скорость связи. Как его заставить так работать ? Может что-то надо передать серверу ?
    3. Можно ли перепрошить софт этого модема ? Как и чем ? Оно мне нафиг не надо, но любопытно. Ответа в сети не нашел.
    С уважением.
     
    Последнее редактирование: 12 авг 2018
  19. parovoZZ

    parovoZZ Гуру

    Так ты в 2G работаешь?
     
  20. Ariadna-on-Line

    Ariadna-on-Line Гуру

    Просто подключаюсь ( библ - TinyGSM). Какой диапазон и битрейт выбирает модем - мне неведомо. Как там называется - не знаю. Потому и вопрос. В списке команд модема я такого не нашел. Какой максимальный битрейт можно "выжать" из этого модема в наших сетях ?
     
    Последнее редактирование: 12 авг 2018