Опрос одного модема с двух серверов

Добрый день.
Появилась задача с двух серверов ЛЭРС УЧЕТ пытаться опросить один модем.
На узлах стоят терминалы TELEOFIS WRX700-r4. У них есть возможность связи с 5 серверами, когда терминал находится в режиме “Клиент”.
Один сервер у нас находится с белым статическим адресов в интернете, другой с динамическим серым.
Белая статика подключается напрямую через GPRS, а динамический через M2M24 сервер.
Принцип работы терминала таков, что он подключается одновременно к двум серверам и как только один из серверов делает какой-то запрос, то он отключает все остальные соединения и начинает работать с тем сервером, который давал запрос.
Проблема стоит в том, что при прямом подключении к серверу ЛЭРС УЧЕТ, который находится с белым статическим адресом, сервер ЛЭРС УЧЕТ отправляет какую-то дежурную информацию на терминал WRX700-r4. В итоге сразу после подключения к серверам терминал обрубает все остальные соединения и работает с сервером с белой статикой (прямым подключение по GPRS), пока не истечёт время таймера тишины (задается настройками). Галочки “Keepalive” в настройках соединения все убраны.
Как отключить отправку дежурной информации со стороны ЛЭРС УЧЕТ, т.к. это практически блокирует работу данного терминала с другими серверами в GPRS режиме.

Какую версию ЛЭРС УЧЕт вы используете?
Какой тип авторизации у ваших TELEOFIS WRX700-R4? Авторизация производится по протоколу TELEOFIS или по протоколу Аналитика?

Везде стоит Аналитика. ЛЭРС УЧЕТ везде самая последняя версия по автоматическому обновлению, т.к. везде купленные лицензии с действующей подпиской на поддержку.

Драйвер ЛЭРС УЧЕТ TELEOFIS WRX700-R4 (протокол Аналитика) не отсылает никакой дежурной информации терминалу. При подключении термина драйвер устройства отсылает пакет Init, для получения идентификатора терминала, а затем отсылает команду start, с которой начинается штатный режим обмена данными с терминалом. Почему вы решили, что ЛЭРС УЧЕТ отправляет какую-то дежурную информацию?

Вы написали, что:

Затем вы пишите, что:

Согласно вашим словам, если один из серверов обменивается данными с терминалов, то соединения с другими серверами должно прерываться. А затем, вы сообщаете, что проблема заключается в том, что когда терминал подключился к серверу, отключаются все соединения с другими серверами. Исходя из ваших слов, соединения и должны отключаться, поскольку производится обмена данными с сервером.

В том и дело, что соединение с hub.m2m24.ru сразу же рвётся после загрузки модема. Общался с разработчиками, они говорят, что это возможно только в одном случае, когда началась передача информации по какому-нибудь из соединений. Т.к. за сутки модем всегда был на связи только не сервере со статикой, где было прямое подключение к ЛЭРС УЧЕТ. Одно из предположений, что ЛЭРС отправляет какой-то пакет, который терминал принимает за передачу данных. Хотя никакого обмена не происходит.

За начало передачи данных терминал принимает пакет с командой start, после чего и рвет все остальные соединения. Именно эту команду и посылает ЛЭРС УЧЕТ, когда получает идентификатор терминала. Если ЛЭРС УЧЕТ не отошлет данную команду, тогда считать данные через терминал будет невозможно.

А если команду start отправлять в момент начала опроса?
И еще вопрос: какую команду ЛЭРС УЧЕТ отправляет при установленной галочке Keepalive?
Попробую еще раз связаться с производителями терминалов Teleofis.

Сообщите, а как у вас настроен опрос прибора, который подключен к терминалу?
У вас опрос начинается не после подключения прибора?

Опрос начинается ежедневно по расписанию с 00:50 и через каждые 30 минут (40 попыток), пока не будет удачного опроса всех данных. Такие настройки стоят на обоих серверах.
В итоге после 5 часов ночи оба сервера опросили данные и ждут следующего дня, но модем цепляется только к одному серверу, который с белой статикой, а к M2M24 вообще не цепляется.
Мы пока выходим из положения тем, что белую статику, которая настроена через VPN, выключаем с помощью отключения VPN соединения. Тогда модем прекрасно цепляется к hub.m2m24.ru:6006, второй сервер проводит опрос и уходит в ожидание до следующего дня.
Стоит подключить VPN соединение и после окончания таймера тишины, когда модем рвёт все соединения и производит переподключение, у нас опять четкое подключение только к серверу с белым статическим адресом, где прямым ответчиком модему является ЛЭРС УЧЕТ.

Отправку пакета KeepAlive вы можете отключить в настройках оборудования. Начало отправки пакета start изменит нигде нельзя.

А есть ли возможность настроить поочередное подключение к серверам?

У данных терминалов две логики работы с несколькими серверами:

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

Сейчас мы выходим из ситуации именно вторым способом, но система работает, т.к. белая статика организована через vpn соединение, которое почему-то иногда разрывается. Тогда второй сервер получает данные. Но это работает пока у оператора интернета какие-то проблемы, которые рвут соединение vpn.

Вот к примеру, к чему привёл анализ данных, которые получает терминал:

DEBUG () (IMEI: 35152929)): 13:02:54 INPUT_DATA NAME=1 SIZE=13
DEBUG (
) (IMEI: 35152929)): FF FE 10 01 00 05 41 00 00 00 02 E6 B6 - 13 Bytes Received

DEBUG () (IMEI: 35152929)): 13:13:02 INPUT_DATA NAME=1 SIZE=13
DEBUG (
) (IMEI: 35152929)): FF FE 10 01 00 05 41 00 00 00 02 E6 B6 - 13 Bytes Received

Вот полный лога (убрал идентификационные данные и IP нашего сервера) с комментариями:
DEBUG () (IMEI: 35152929)): 13:23:05 CLOSE SOCKET NAME=1 IP= REASON=TIMEOUT - разрыв соединения из-за окончания таймера тишины
DEBUG (
) (IMEI: 35152929)): 13:23:05 TRYING TO CONNECT TO hub.m2m24.ru:6006 ERROR - попытка подключения к hub.m2m24.ru:6006
DEBUG () (IMEI: 35152929)): 13:23:06 OPEN_SOCKET NAME=2 IP:6006=hub.m2m24.ru - подключение к hub.m2m24.ru:6006 (соединение №2)
DEBUG (
) (IMEI: 35152929)): 13:23:07 AUTHORIZATION OK - авторизация прошла успешно
DEBUG () (IMEI: 35152929)): 13:23:07 TRYING TO CONNECT TO 85.159..:40000 ERROR - попытка подключения к нашему серверу
DEBUG (
) (IMEI: 35152929)): 13:23:08 OPEN_SOCKET NAME=1 IP=85.159..:40000 - подключение к нашему серверу (соединение №1)
DEBUG () (IMEI: 35152929)): 13:23:08 AUTHORIZATION OK - авторизация на нашем сервер прошла успешно
DEBUG (
) (IMEI: 35152929)): 13:23:09 CLOSE SOCKET NAME=2 IP= REASON=FOR OTHER CLIENT WORK - закрытие соединения №2 (hub.m2m24.ru) из-за получения данных на соединении №1 (наш сервер с прямой работой через ЛЭРС УЧЕТ)
DEBUG () (IMEI: 35152929)): 13:23:10 INPUT_DATA NAME=1 SIZE=13 - пришло 13 байт данных
DEBUG (
) (IMEI: 35152929)): FF FE 10 01 00 05 41 00 00 00 02 E6 B6 - 13 Bytes Received - расшифровка данных

Таймер тишины выставлен 10 минут. Как мы видим, то каждые 10 минут происходит переподключение и повторное получение 13 байт информации.
Со стороны ЛЭРС приходят какие-то данные, после которых рвётся другое соединение. И дальше тишина в эфире.
Эти данные отправил также разработчикам TELEOFIS WRX-700, т.к. они тоже интересуются проблемой.

Надеюсь общими силами получится решить данную проблему.

KeepAlive у меня отключен на всех узлах.

13 байт это и есть пакет start, о котором писал выше Константин Коротких.

Вы можете либо организовать подключение 2-м описанным вами способом, решив проблемы с vpn с вашим сотовым оператором. Либо вы может создать заявку в соответствующем разделе Предложения на улучшение ЛЭРС УЧЕТ, в котором предложить изменить поведение драйвера модема, чтобы тот отправлял команду start непосредственно перед началом опроса.

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

Создал заявку, но пока тишина.

Ожидайте, разработчики, как только это будет возможно, рассмотрят ваше предложение и по результатам внутреннего обсуждения примут решение.

Тему можно закрыть. Изменения в драйвере планируются в обновлении R28.
http://forum.lers.ru/viewtopic.php?f=8&t=7242