Перейти к содержанию
    

А зачем пинговать 8.8.8.8

Дело в том, что нет доверия к самому GSM-модулю: внутренний стек или GPRS может глюкнуть, тест состояния будет ОК, но пакеты не будут даже выходить. Контроллер будет считать, что умер сервер, и ждать, ситуация зациклиться. Если же после нескольких неудачных попыток получить ответ сервера пробовать пинговать что-то гарантийно работающее, то сразу ясно: причина в модуле или в сервере. И если в модуле, то можно перезапустить.

Причем 8.8.8.8 можно даже не пинговать, а отсылать в 51 порт UDP-пакет с DNS-запросом доменного имени, заведенного для вашего сервера, а по получению UDP-ответа парсить датаграмму и извлечь IP.

Сам запрос шаблонный: захватите снифером с РС и запишите в виде сonst в контроллер. С поиском IP в ответе сложнее: он не по фиксированному смещению, и есть два варианта упаковки. Если не лень, посмотрите мой ассемблерный код по ссылке выше и переведите на С. Или, лучше, почитайте rfc по DNS и напишите парсер сами.

Таким образом, убиваете сразу двух зайцев: убеждаетесь, что модуль не висит, и получаете новый IP сервера, если он изменился. Т.е. можно даже поднять сервер на динамическом IP c использованием DynDNS (правда, он сейчас полностью платный стал).

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

GeGeL, спасибо за советы. Да, может и стек в симкоме глюкнуть, и GPRS. Контроллер может ошибочно считатьчто умер сервер. Пингуя 8.8.8.8 (или не пингуя а запрашивая адрес, как Вы описали) можно убедиться в том что именно "висит", но при всем при этом выход из ситуации только один: перезагрузка модуля.

Но пинговать 8.8.8.8 безусловно может оказаться полезно, так как перегружать модуть бесконечно нет смысла. Нужно обдумать логику работы модуля, особенно если учесть, что у меня 2 SIM-карты.

 

Сейчас озадачился написанием "стека" АТ команд для модема. Как я погляжу народ все делает на задержках (функции Delay под различными соусами), но я думаю это не айс. Не хочется изобретать велосипед, но чувствую, что буду вынужден)

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Пинг будет нужен еще по одной причине - некоторые операторы при отсутствии активности в соединении просто превращают соединение в черную дыру.

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

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Пинг будет нужен еще по одной причине - некоторые операторы при отсутствии активности в соединении просто превращают соединение в черную дыру.

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

 

 

С периодом 20с отправлял 2е суток (UDP слот). Сейчас поставлю 60 с.

Изменено пользователем ISG2015

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Думаю что перепроверить с разным временем лучший выход.

 

У нас, у Киевстара, нет такого глюка, а у Лайфа - 3-5 минут нет данных и все - большой шанс отправить "в никуда"

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Поставил на компьютер программу снифер/анализатор сетев. протоколов "Wireshark". Отправляю по UDP 1 байт. Получаю: "Frame Length: 60 bytes (480 bits)" о_О

 

Таким образом, отправляя на сервер пакетик раз в 5 минут и получая на него ответ (контроль канала) я в месяц попадаю на 1 Мбайт :(

Что-то жирновастенько учитывая что мне бы хотелось чаще мониторить железку и канал связи.

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Так провайдер тарифицирует трафик на 3 уровне, весь фрейм отбрасывается ещё на оборудовании оператора, остается только внутренность IP-пакета. Хотя, этот момент я бы уточнил у оператора, но весь фрейм 2 уровня целиком уж точно никто не тарифицирует.

 

А вообще, у многих провайдеров есть нетарифицируемые ресурсы. Напрмиер, Яндекс-Карты у Мегафона. Можно их опинговывать. Или можно попробовать непосредственный шлюз провайдера, биллинг может стоят за ним.

Изменено пользователем p_kav

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Получаю: "Frame Length: 60 bytes (480 bits)"

Это проблема Ethernet - кадр дополняется нулями. В вашем случае внутреннего стека GSM-модуля оверхед будет 24 байта на пакет (на IP+UDP заголовки). Раньше они тарифицировались, сейчас не могу сказать, тем более по каждому оператору.

я в месяц попадаю на 1 Мбайт Что-то жирновастенько

Эдуард, это то, о чем я писал. :crying: И это только начало...

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Эдуард? о_О

 

С Лайфом договорился, обещают завтра помочь с доступом к билинговой системе. Вот там и посмотрю ,что именно тарифицируется.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

>>> Эдуард? о_О

 

Да. А шо? :)

 

Как мне сказал начальник Кемеровского ОРТПЦ

- Днепропетровца узнать легко - "шо", "га" и "тю" одновременно в лексиконе есть только там.

 

К сожалению это наша действительность - волкИ хотят "еды".

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Эдуард

Это была реплика к CADiLO в продолжение нашей старой дискуссии. :rolleyes:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Сейчас озадачился написанием "стека" АТ команд для модема. Как я погляжу народ все делает на задержках (функции Delay под различными соусами), но я думаю это не айс. Не хочется изобретать велосипед, но чувствую, что буду вынужден)

 

Правильно думаете. Велосипед давно придуман - switch, описывающий состояния автомата. На Delay делают первокурсники - тошно видеть такое от многоопытных дядек.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

То есть отправляем команду, и ждем пока не получим OK или не истечет таймаут, а дальше анализируем вывод команды или обрабатываем ситуацию таймаута?

А как реализуют обработку незапрошенного вывода? Например, модуль выводит текст длинного SMS, и в этот момент на него позвонили и он выводит RING прямо в середине текста, как это обрабатывают многоопытные дядьки?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

AT+GSMBUSY=1

-прочесть SMS

AT+GSMBUSY=0

 

это так - навскидку....

 

 

второй вариант

завести RI на контроллер, а URC RING отключить AT+CFGRI

 

 

кстати интересный момент - надо будет специально проверить

я что-то не видел чтобы в текст SMS вклинивались URC

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Сегодня таки выяснил какие накладные расходы на передачу 1 байта поверх сетей GSM (Life Украина) по технологии GPRS:

8 байт на UDP заголовки и 20 байт на IP. Итого 28 байт. Ну это уже нормальненько так:)

Остается надеяться, что подобного рода расклады с тарификацией и у других операторов.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...