Разработка программного обеспечения для автоматической АЗС самообслуживания
Шевцов Артём Сергеевич
Идея: полностью автоматизировать обслуживание на АЗС и убрать оператора — клиент сам оплачивает картой на терминале, сразу получает чек и заправляется. Стоимость оборудования — не более 100 тыс. руб.
Краткое описание: программное обеспечение терминала самообслуживания для автоматической АЗС. Клиент через сенсорный экран выбирает топливо и сумму, оплачивает покупку безналично, после чего система печатает фискальный чек и управляет отпуском топлива без участия персонала. Реализованы приём оплаты (терминал Vendotek VT), фискализация с ведением кассовой смены (ККТ PayOnline-01-ФА), отпуск топлива с управлением колонкой (протокол АЗТ 2.0), аппаратный контроль терминала (watchdog ESP32) и админ-панель для удалённого управления ценами, колонками и диагностики. Технологии: Go (бэкенд), Vue 3 / TypeScript (фронтенд).
Спроектировать и реализовать клиентские экраны оформления покупки и оплаты (выбор топлива, ввод параметров заправки, выбор способа оплаты, ожидание и результат оплаты).
Реализовать серверную логику создания транзакции продажи, приёма безналичной оплаты и фискализации с единой цепочкой состояний.
Интегрировать платёжный терминал (Vendotek VT) и контрольно-кассовую технику (ККТ PayOnline-01-ФА) с ведением кассовой смены и Z-отчётов.
Реализовать подсистему отпуска топлива с управлением топливораздаточной колонкой по протоколу АЗТ 2.0.
Реализовать аппаратный контроль и мониторинг состояния терминала на базе независимого сторожевого таймера ESP32 (watchdog) с автоматической перезагрузкой при зависании.
Реализовать удалённое администрирование оборудования и тарифов (управление ценами и колонками, режим техобслуживания, диагностика, журнал транзакций).
Клиентские экраны киоска (терминал самообслуживания):
— выбор вида топлива из доступных на АЗС колонок;
— ввод параметров заправки (сумма или объём) с числовой клавиатурой;
— выбор способа оплаты и оплата картой на платёжном терминале;
— экран ожидания оплаты с опросом статуса, экран результата (успех/отказ/отмена);
— экран налива топлива с отображением прогресса по фактически отпущенному объёму и экран завершения;
— автоматический сброс сессии по таймауту бездействия.
Серверная логика:
— управление жизненным циклом транзакции продажи (единая цепочка состояний с контролем порядка шагов);
— приём безналичной оплаты: управление платёжной сессией, опрос статуса, обработка отказов и таймаутов;
— фискализация: формирование чека, ведение кассовой смены, автоматическое открытие/закрытие смены, Z-отчёты, сохранение фискальных данных;
— отпуск топлива: задание цены и количества литров, авторизация налива, опрос отпущенного объёма в реальном времени, снятие и подтверждение итогов;
— отказоустойчивость отпуска: таймауты, контроль целостности кадров, безопасный отказ.
Аппаратный контроль (watchdog ESP32):
— независимый от ПО сторожевой таймер, принимающий heartbeat-сигналы от сервера;
— автоматическая перезагрузка терминала через реле сброса при потере связи (зависании ПО);
— снимок состояния и удалённая перезагрузка.
Административная панель:
— мониторинг состояния АЗС и перевод в режим техобслуживания;
— удалённое управление ценами (версии прайс-листа) и колонками;
— удалённая перезагрузка терминала;
— диагностика оборудования: статус watchdog ESP32, ТРК, платёжного терминала и ККТ;
— журнал транзакций, просмотр кассовой смены и Z-отчётов.
Языки и платформы: Go (серверное приложение), TypeScript (клиентское приложение), C++ (прошивка модуля аппаратного контроля ESP32).
Бэкенд (Go): веб-фреймворк Gin, СУБД SQLite (драйвер modernc.org/sqlite), миграции Goose, работа с последовательным портом go.bug.st/serial, godotenv, gin-contrib/cors, стандартные пакеты net/http и golang.org/x/text.
Фронтенд: Vue 3 (Vue Router), сборщик Vite, Pinia (управление состоянием), Zod (валидация), Tailwind CSS.
Протоколы интеграции с оборудованием: EzPOS поверх HTTP/Ethernet (платёжный терминал Vendotek VT), ККТ А.2.0 поверх TCP/Ethernet (ККТ PayOnline-01-ФА), АЗТ 2.0 по RS-485 (топливораздаточная колонка), UART (модуль аппаратного контроля ESP32).
Инструменты разработки и совместной работы: Git (система контроля версий), Kaiten (управление задачами).
— Добавление способов оплаты: СБП (оплата по QR-коду), топливные карты, оплата через мобильное приложение.
— Программа лояльности: бонусы, скидки, персональные тарифы.
— Интеграция с системами учёта и уровнемерами резервуаров (контроль остатков топлива), выгрузка данных в бухгалтерские и ERP-системы.
— Расширенная удалённая диагностика и предиктивное обслуживание оборудования, оповещения о неисправностях.
— Адаптация решения под другие сценарии самообслуживания (зарядные станции для электромобилей, газовые АГЗС).
Все поставленные задачи выполнены. Разработано работоспособное ПО автоматической АЗС, обеспечивающее полный цикл обслуживания клиента без участия оператора: выбор топлива, безналичная оплата, выпуск фискального чека и автоматический отпуск топлива. Ключевое ограничение достигнуто — стоимость оборудования не превышает 100 тыс. руб.
Реализованы и интегрированы все подсистемы: приём оплаты (Vendotek VT), фискализация с кассовой сменой (ККТ PayOnline-01-ФА), отпуск топлива (протокол АЗТ 2.0), аппаратный контроль (watchdog ESP32), клиентские экраны и админ-панель. Проект доведён до функционально завершённого прототипа, логика проверена на программных эмуляторах и на реальном оборудовании. Цель работы достигнута.
Доля безналичных платежей в рознице по итогам 2025 года достигла 88% (данные Банка России) — модель АЗС с оператором-кассиром устарела. Проект автоматизирует обслуживание и убирает очереди и ручной запуск колонки.
Экономическая польза: замена штата операторов (4 чел., 24/7) одним администратором по вызову даёт экономию ~215 тыс. руб./мес (~2,6 млн руб./год) при окупаемости оборудования менее месяца. Низкая стоимость (≤100 тыс. руб.) делает автоматизацию доступной небольшим и одиночным АЗС.
Социальная польза: быстрое обслуживание без очередей и круглосуточная доступность заправки, в том числе в удалённых и малолюдных точках, где содержать персонал невыгодно.
Масштабируемость. Серверная логика построена по слоистой архитектуре с разделением на handlers → services → adapters, а взаимодействие с оборудованием вынесено за интерфейсы адаптеров. Это позволяет наращивать число колонок и постов заправки, а также подключать новые модели платёжных терминалов, ККТ и колонок без изменения бизнес-логики — достаточно реализовать соответствующий адаптер.
Взаимодействие с другими системами. Система изначально интеграционная: она работает с внешним оборудованием по стандартным протоколам — EzPOS (платёжный терминал), ККТ А.2.0 (контрольно-кассовая техника), АЗТ 2.0 (топливораздаточная колонка), UART (модуль аппаратного контроля). Клиент и сервер обмениваются данными через REST API (HTTP/JSON), что упрощает подключение внешних систем — учётных, бухгалтерских, систем мониторинга сети АЗС и мобильных приложений.
Мобильность. Клиентское приложение — кроссплатформенное веб-приложение (SPA), работающее в браузере на любом сенсорном терминале без установки. Серверная часть на Go компилируется в единый бинарный файл без внешних зависимостей и запускается на разных ОС и на маломощном оборудовании (используется встраиваемая СУБД SQLite), что обеспечивает лёгкое развёртывание на каждой АЗС.
Автоматические АЗС самообслуживания как класс решений существуют, однако доступные на рынке системы, как правило, дороги, поставляются в составе комплексного оборудования конкретного вендора и ориентированы на крупные сети. Отличия и новизна проекта:
— Низкая стоимость. Решение спроектировано под ограничение стоимости оборудования не более 100 тыс. руб., что делает автоматизацию доступной для небольших и одиночных АЗС, для которых типовые промышленные системы экономически неоправданны.
— Открытая, вендоронезависимая архитектура. Взаимодействие с оборудованием вынесено за интерфейсы адаптеров, поэтому система не привязана к одному производителю и позволяет подключать разные модели терминалов, ККТ и колонок. Это отличает её от «коробочных» проприетарных комплексов.
— Аппаратный контроль надёжности. Независимый от основного ПО сторожевой таймер на ESP32 с автоматической перезагрузкой терминала при зависании повышает отказоустойчивость беспилотной точки — решение, которое редко встречается в бюджетном сегменте.