Pull to refresh

Побеждаем топливные махинации с помощью облачной логики

Level of difficultyMedium
Reading time3 min
Views525

Интересной историей поделились разработчики из Exzotron Technology, когда реализовали пилотный проект для логистических центров одного из маркетплейсов. Решаем здесь стандартную проблему – кражу топлива с помощью новых подходов. Проект показал, что иногда стоит принципиально изменить систему, а не улучшать старое. Здесь наглядно видно, что локальные оптимизации не дали бы нужного эффекта.

Для начала давайте разберемся, как все устроено.
Дано: выдача топлива происходит по QR-кодам. Процесс автоматизирован, и вся инфа передается через терминалы спутникового мониторинга на автомобилях. Но недобросовестные водители смекнули, что можно использовать один код на нескольких заправках одновременно. Как итог – несанкционированный расход топлива.

Очевидная проблема: каждый терминал автономно принимал решение о выдаче топлива. Поэтому насущная задача – настроить централизованную онлайн-выдачу топлива.

Решение: облачный «диспетчер» вместо локальной логики

Выбран путь радикального рефакторинга с выносом всей логики в облако вместо терминалов.

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

Модуль настроек алгоритма, в скриптах прописана основная работа
Модуль настроек алгоритма, в скриптах прописана основная работа

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

Более того, выдача топлива начинается после того, как со стороны сервера придет подтверждение о доступном лимите и отсутствии одновременной выдачи. Самое важное – как только начинается выдача топлива, на стороне сервера блокируется выдача по данному QR-коду на 30 минут.

Топливный модуль
Топливный модуль

Как снизить скорость принятия решения сервером до 0,3 секунды

Разберемся в программировании: решение состоит из основного топливного скрипта и ряда вспомогательных скриптов, которые расширяют функционал.

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

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

Алгоритм онлайн, удерживает связь с сервером, мониторит состояние считывателя, передаёт номер QR или карты, принимает лимиты от сервера
Алгоритм онлайн, удерживает связь с сервером, мониторит состояние считывателя, передаёт номер QR или карты, принимает лимиты от сервера

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

Благодаря оптимизированному собственному протоколу передачи данных, удалось достичь скорости отклика менее 0,3 секунды, что обеспечивает высокий уровень комфорта для пользователей и минимизирует задержки в работе.

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

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

Обработчик протокола AZT (ТОПАЗ, НАРА, СЕВЕР)
Обработчик протокола AZT (ТОПАЗ, НАРА, СЕВЕР)
Алгоритм печати чеков
Алгоритм печати чеков

Что получилось и куда двигаемся дальше

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

Решение находится в стадии «пилота», но уже отмечено исключение ошибок и махинаций с выдачей топлива по QR-кодам.

Самый очевидный результат для компании – экономия топлива. Но еще здесь снижаются трудозатраты службы безопасности и экономистов на разбор спорных и проблемных ситуаций.

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

Из оборудования использовали: терминал спутникового мониторинга с функцией hub, топливораздаточный комплекс и считыватель QR-кодов. 

Tags:
Hubs:
+5
Comments5

Articles