Парк вендинговых автоматов: телеметрия и удалённая поддержка
Автомат в 400 км перестаёт продавать. Вот программная цепочка, которая объясняет почему — без выезда техника.
- Направление
- Мобильные приложения и подключённые устройства
- Написано
- 2026
- Стек
- Встраиваемый Android
- Kotlin
- MQTT
- Node.js
- PostgreSQL
- React

Содержание проекта
Проблема
У оператора вендинга или киосков — три отдельных слепых зоны. Автомат знает, что произошло, но хранит это только у себя. Платёжный провайдер знает, что с карты списали деньги, но не знает, вышел ли товар из лотка. У службы поддержки нет ни того, ни другого, поэтому каждая неоднозначная жалоба обходится в выезд на место.
Программная проблема не в самой выдаче товара — она в сверке списано с выдано, причём достаточно быстрой, чтобы клиент на линии получил ответ.
Как мы это делаем
1. Приложение на автомате
Узкоспециализированное приложение на автомате: выбор товара, оплата, выдача и локальная очередь. Оно исходит из того, что сети нет, потому что рано или поздно так и будет. Каждое событие — брошена монета, авторизована карта, повернулся мотор, сработал оптический датчик — сначала записывается в локальный журнал только на дозапись, а уже потом публикуется.
2. Транспорт
MQTT поверх TLS с учётными данными для каждого устройства, сообщением last-will, благодаря которому замолчавший автомат становится событием, а не тишиной, и теневым документом, который хранит конфигурацию, на которой автомат должен работать.
3. Сервис
Небольшой сервис приёма данных превращает события с устройств в две вещи: строку реестра (списано / выдано / возвращено, сверяется по идентификатору транзакции) и запись о состоянии (температура, состояние дверцы, уровень остатка, версия прошивки, время последнего выхода на связь).
4. Экран, которым реально пользуется поддержка
Одна страница на автомат: текущее состояние, последние пятьдесят событий простым языком, остатки по ячейкам и две кнопки, которые действительно важны, — повторная выдача и возврат, — обе фиксируются за оператором, который на них нажал.
Что вы получите
- Приложение для автомата и канал его обновления
- Сервис приёма данных и схему событий, которые принадлежат вам
- Дашборд парка автоматов и экран одного автомата, созданный для разговора по телефону
- Отчёт о сверке, который примет финансовый отдел
Где начинаются сложности
Рассинхронизация часов между автоматом и сервером делает порядок событий лживым — поэтому устройство ставит монотонный порядковый номер, а не просто отметку времени. Раскатка прошивки требует поэтапного канала и отката, потому что неудачное обновление на весь парк — очень дорогой урок. А оптические датчики отказывают открыто: без второго сигнала «выдано» — это только предположение.
Типовая архитектура