[16689] Расширение функционала режима опроса «Опрашивать при подключении GPRS-устройства»

Проблема: При наличии проблем со связью (речь о CSD и мобильном интернете) сеансы связи не могут быть длительными, а их появление часто ситуативное — бывает 1-2-3 раза в сутки на очень короткое время. В регионах с регулярными проблемами сложилась практика получать коммерческие данные ежедневно, остальные — по возможности

Что такое коммерческие данные, зависит от региона и типа прибора: это всегда суточные данные, иногда текущие и месячные, а для газовых счетчиков — часто также и часовые архивы.

Остальные данные — база настроечных параметров, архив событий и иногда часовые архивы.

Текущий режим «Опрашивать при подключении GPRS-устройства» не позволяет реализовать такую схему напрямую.

Предложение: На мой взгляд, описанную проблему можно решить, дав пользователю возможность создавать несколько расписаний в режиме опроса «Опрашивать при подключении GPRS-устройства». Дополнительные расписания должны содержать указания, что опрашивать, и разрешённое время опроса. На скриншоте я выделил параметры, которые стоит перенести из режима по расписанию. К ним следует добавить разрешённое количество подключений для данного расписания в установленное время.

Это изменение также упростит три ситуации:

  • Снятие базы настроечных параметров с приборов, которые отдают её более 10 минут, а также скачивание архива событий, которое бывает долгим. Для таких приборов база нужна, но включать её регулярный опрос не всегда возможно.

  • Разделение времени опроса прибора: основное время прибор общается со SCADA, а ЛЭРС многократными перепросами находит окно 1-2 раза в сутки для получения коммерческих данных. В этом случае обычно настраивается к контроллере более одного сервера - приемника

  • Опрос приборов с батарейным питанием, например ВКТ 7. Чем меньше нагружаешь прибор обменом, тем дольше живёт батарейка. Достаточно выполнять опрос суточных и текущих данных 2-3 раза в сутки, не увеличивая время чтением месячных и настроечных данных, что снижает ресурс элемента питания.

Выскажусь по связанной теме (создание разных расписаний для автоопроса при подключении GPRS модема). Да, нужная функция. Например. Точка стоит на автоопросе при подключении GPRS модема для опроса суточных значений. И вот, нужно опросить чуть-чуть часовых за последние несколько дней. Сейчас нужно снять точку с автооопроса и создать новый автоопрос, что совсем не всегда удобно или целесообразно. А при попытке создать ещё одно расписание с только чтением часовых получаю вот такое сообщение. GPRS модем выходит на связь по расписанию на которое я не влияю (см. блокировки интернета), будь это CSD - всё решается, все инструменты есть. А с GPRS по расписанию почему - то нельзя. Зачем это ограничивать? Пусть каждый сам решит, что когда и как ему надо опрашивать и по какому расписанию. В конце концов, это то же расписание как по CSD, только событием для начала опроса прибора учёта является не дозвон до точки, а выход на связь GPRS модема. Вот и вся разница.

Именно потому, что для GPRS по расписанию без вызова мы не можем влиять на то, когда модем подключится. Поэтому всё опрашивается однократно при подключении модема.

Мы продумаем механизм, который позволит дополнительно задать для опроса по подключению расписание. Если модем подключится в пределах указанного окна, оно будет запущено.

В результате, мы рассчитываем получить следующие сецанарии.

Допустим, у точки учёта настроен автоопрос по подключению без расписания, в котором считывается суточный и часовый архивы. Дополнительно настраивается опрос по подключению с расписанием, например, еженедельно по воскресеньям. В нём считывается база настроек устройства.

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

В воскресенье запустится последовательно два задания. Первое на чтение суточного и часового архивов, а второе на чтение базы настроек. Объединить в один сеанс опроса не получится, опрос будет проведён дважды, но с разным набором данных.

Если это поведение устраивает, мы будем планировать работы.

Добрый день. В принципе да. Только если “воскресенье” в вашем примере это любой настраиваемый интервал,дата месяца или день недели как при расписании по CSD.

То есть. Будет возможно создать несколько расписаний. Например, 1-ое расписание) (основное) опрашиваем прибор при выходе GPRS модема на связь по суточным и текущим данным 2) опрашиваем прибор через GPRS модем (при его подключении) каждый 23-ий день месяца на предмет месячных данных 3) Опрашиваем прибор через GPRS модем каждое субботу и воскресенье по настроечным параметрам. Естественно при условии, что в эти дни модем в ЛЮБОЕ время выйдет на связь с сервером. Если не вышел, то и задание не будет выполнено. НО, если вышел, то надо иметь возможность как-то настроить кол-во повторов (не каждый сеанс успешен). Или просто выполнять это задание весь день, будет 100 сеансов, значит 100 раз спросим настройки.

Правильно я Вас понял?

Еще вопрос. Правильно ли я понял предлагаемую логику: запросы по GPRS с расписанием имеют приоритет перед запросами по подключению?
То есть, если настроить три расписания автоопроса — два по расписанию и основное — по подключению, то в день, когда есть автоопросы по расписанию, первые два подключения будут использованы для запросов по расписанию, а третье — для автоопроса по подключению.
При этом, при возникновении проблем во время опроса, теоретически, в день с автоопросами по расписанию запросы по подключению могут и не запускаться.

Правильно ли я понимаю логику предлагаемого алгоритма?

Да, любой интервал, включая месяцы и конкретные дни. Я привёл пример, чтобы было нагляднее.

Время тоже можно будет задать. Можете оставить с 00:00 по 23:59, тогда будет опрос в любое время.

Ну так и будет, если модем в разрешённый день вышел на связь 100 раз, и у вас для этого задания указано больше, чем 100 разрешённых сеансов, их будет 100.

Приоритет одинаковый, я может, рассматриваемый сценарий не совсем понимаю. Например, есть два опроса - по подключению и по расписанию. Когда подойдёт расписание, будет запущено задание “Р” и произведён вызов модема. В момент подключения модема мы составим для него очередь опроса. Первым будет выполнено задание “Р”, так как оно уже ожидает подключения после вызова. Вторым будет выполнено задание “П”, которое настроено по подключению модема. Но вы можете вручную поменять приоритеты в очереди опроса, чтобы задания поменялись местами.

Не совсем понял этот вопрос. Если модем не установит подключение, то да, не запустится. Если один из сеансов по расписанию вызовет модем, то после подключения в очередь встанет и опрос по подключению. Или что-то другое имеется в виду?

мой вопрос возник из-за этой фразы

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

Т.е. после вашего ответа неопределенность добавилась. Как именно будет идти опрос?

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

Я не увидел ответа на свой вопрос.

В документации (например, https://docs.lers.ru/manual/poll/poll-sessions.html) указано (пусть и неявно), что «сеанс опроса» — это процесс от начала установки канала связи (в нашем случае с момента подключения модема) до окончания чтения и закрытия канала. То есть если выполняется несколько заданий друг за другом (например, чтение архивов и затем базы настроек), для каждого задания создается отдельный сеанс — соединение устанавливается и закрывается отдельно для каждого. Объединить эти задания в один сеанс опроса не получится, каждый из них заканчивается разрывом связи и считается отдельным процессом.​

Поэтому фразу

я читаю так: после подключения модема читаются архивы, затем канал закрывается; ждём следующего подключения, потом читаем базу настроек. Если будет третье задание, для него потребуется отдельное подключение модема.

Только сегодня заметил, что вы используете разную терминологию, вы пишете то сеанс опроса, то опрос. Если в этом есть дополнительный смысл, то поясните. Для меня это одно и то же.

В вашей документации не увидел явного разграничения между терминами «сеанс опроса» и просто «опрос».

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

Опрос GPRS по подключению как раз обрабатывает эту ситуацию и ставит сеансы опросов последовательно. Это было сделано для многопортовых модемов, у которых каждый порт считается отдельным подключением. Чтобы они оба опросились после подключения модема связь рвать не нужно, они запустятся автоматически и связь будет разорвана после того как опросятся все задания из очереди.

В случае если мы делаем несколько сеансов по подключению с разным набором данных ситуация будет такая же. Сеансы опросов будут выполнены последовательно, а связь будет разорвана после окончания запуска всех сеансов.

Нюанс в том, что эти сеансы опроса будут проведены для одного и того же прибора. Будет небольшое дублирование при чтении (дважды считается конфигурация и текущее время), но проблемой это быть не должно, так как основной объём данных будет считан один раз.

Отлично. Разобрались.

Жду изменений описанных вами.

Сделали в следующей версии 3.64. Можно будет создать несколько расписаний автоопроса по подключению, и для каждого указать интервал времени, в котором опрос будет запущен.