Сторінка GitHub Олександра Пупени
Сторінка Олександра Пупени -> Портфоліо
Електронний кабінет власника автомийок, що об’єднує віддалений контроль роботи обладнання, облік і аналіз оплат, систему лояльності, сервісну діагностику та інтеграцію онлайн-платежів. Рішення поєднує наявну систему локального керування автомийкою з IIoT-шлюзом і хмарним вебзастосунком.
Замовник: Premium Wash — компанія, що розробляє автомийки самообслуговування.
Рішення: система диспетчеризації та менеджменту автомийок («Електронний кабінет власника») з локальним IIoT-шлюзом.
Система надає власникам автомийок доступ через вебінтерфейс, адаптований до смартфона, до фінансової та технічної інформації, історії транзакцій, операцій з картками лояльності та засобів діагностики. На локальному рівні IIoT-шлюз збирає дані з контролера, термінала й інших підсистем, зберігає архіви та забезпечує обмін із хмарною платформою.
Стан на момент описаного впровадження: комерційне рішення, що експлуатується. Кілька десятків автомийок самообслуговування та кілька портальних мийок.
Рішення створювалося для власників та сервісної служби мережі автомийок Premium Wash. Його призначення — перетворити дані й операції локальної системи керування на доступні дистанційно інформаційні та управлінські функції.
Основні задачі:
Рішення є IIoT платформою з підключенням наявних локальних систем керування. Програмування PLC і локального термінала входило до іншої частини системи й не було предметом цього проєкту.
Фінансова статистика показує поповнення постів, аксесуарів і термінала за джерелами: готівка, банківська картка через термінал, карта лояльності та QR. Можна переглядати сьогоднішні показники, вибраний день, останні 7 або 30 днів і останні 12 місяців із відповідним погодинним, поденним чи помісячним розподілом.

Окремо реалізовано статистику готівкових поповнень. Дані ґрунтуються на локальних архівах, а агреговані показники за документацією оновлюються з періодичністю приблизно 30 хвилин.
Контроль постів дає змогу переглянути внески на конкретний пост або аксесуар за сьогодні чи за вибрану добу, з розподілом за способами оплати. Ураховується також термінал як окреме джерело готівкових внесків. Є загальна сума внесків та орієнтовний показник кількості клієнтів.
Контроль готівки та інкасації відображає накопичену в купюро- й монетоприймачах суму після останньої інкасації. Інкасацію можна зареєструвати для окремого поста або всієї автомийки, після чого лічильники обнуляються, а дата й час дії зберігаються в системі. Зберігається історія інкасацій для вибраного періоду.
Журнал термінала містить усі операції за вибрану добу: час, призначення поповнення (пост, аксесуар або картка лояльності), номер об’єкта чи рахунку, спосіб оплати. Передбачено агреговані підсумки за готівкою, банківськими картками, постами/аксесуарами та лояльністю.
Оплата за QR-кодами реалізована через інтеграцію з Portmone. Система відрізняє факт проведення платежу від фактичного зарахування коштів на пост або аксесуар. Для цього передбачено два інформаційні рівні:
У документації описано обмеження за часом при втраті зв’язку: система не повинна здійснювати надто пізнє зарахування на пост після оплати. Це зменшує ризик небажаного запуску послуги після значної затримки; такі випадки підлягають окремому розбору за журналами. Різні часові межі наведено для обміну з Portmone та спроби зарахування в PLC — вони стосуються різних етапів операції.
Кабінет інтегрується з наявною базою лояльності автомийки й надає:
Ця функціональність використовується також для партнерських карток і сервісного розбору ситуацій, коли оплата або надання послуги відбулися нештатно.

Сторінка оператора зводить в одному місці транзакції за поточну добу: поповнення постів, QR-операції, транзакції термінала та події. Таблиці дозволяють сортування за колонками; за документацією дані оновлюються автоматично кожні 10 секунд.
Журнал подій реєструє, зокрема, втрату та відновлення зв’язку IIoT-шлюзу з PLC, хмарною платформою, базою лояльності та Portmone, а також зміни балансів лояльності. Це дає змогу зіставляти платежі, роботу обладнання й мережеві збої.
Передбачено статистику використання програм миття та їхньої тривалості за вибрану дату або період. Окремий функціональний блок призначений для контролю сервісних операцій і технічного обслуговування.
Поклієнтний аналіз реконструює орієнтовні «заїзди» за непрямими ознаками активності на постах — поповненнями, вибором програм і періодами бездіяльності. Для кожного заїзду доступна хронологія дій. Це інструмент технічного аналізу, а не точний облік фізичних автомобілів: оцінки кількості клієнтів, меж заїзду та тривалості можуть бути неточними.
Для адміністраторів Premium Wash доступні додаткові засоби керування платформою та сповіщення через ботів. Конкретний перелік адміністративних операцій залежить від конфігурації й прав користувача.
Система має три логічні рівні: існуюче локальне керування, локальний IIoT-шлюз і хмарний електронний кабінет.
flowchart TB
subgraph WASH[Автомийка — локальний рівень]
PLC[PLC та обладнання керування]
TERM[Термінал оплати]
LOY[Система лояльності]
GW[IIoT Gateway: Raspberry Pi / Node-RED / DB]
PLC <-->|Modbus TCP| GW
TERM <--> PLC
LOY <--> GW
end
PM[Portmone — онлайн-платежі] <--> GW
subgraph CLOUD[Хмарна платформа UBOS]
NR[Node-RED: серверна логіка]
CDB[(База агрегованих даних)]
UI[Вебінтерфейс кабінету]
NR <--> CDB
UI <--> NR
end
GW <-->|WebSocket / MQTT| NR
USER[Власник / оператор / адміністратор] <--> UI
PLC і локальне обладнання. Виконують базові функції автомийки. Вони існували до створення електронного кабінету, і їхня розробка не входила до описаного обсягу робіт.
IIoT Gateway. Raspberry Pi з Node-RED забезпечує Modbus TCP-обмін із PLC, взаємодію з платіжним терміналом, базою лояльності й Portmone, локальне збирання та архівування даних і передавання інформації на платформу. Документація описує також локальний інтерфейс контролю автомийки.
Хмарна платформа. На платформі Ubos розміщено Node-RED, засоби побудови користувацького інтерфейсу, базу даних та інфраструктуру обміну через MQTT/WebSocket. Браузер є клієнтом власника, оператора й адміністратора.
Розділення зберігання. Детальні архівні дані залишаються на локальному Raspberry Pi. У хмару періодично передаються статистично оброблені показники. Деякі журнали та дані лояльності запитуються з локального вузла за потреби, через що їхнє завантаження може бути повільнішим.
Архітектура дозволяє масштабувати доступ до кількох мийок без перенесення технологічного керування в хмару.
| Рівень | Технології та засоби |
|---|---|
| Локальне керування | PLC, Modbus TCP; наявні термінали та локальні підсистеми |
| Edge | Raspberry Pi 4/5, Raspberry Pi OS, Node-RED |
| Локальні дані | MariaDB/MySQL |
| Хмарна платформа | Ubos LoCode: Node-RED, конструктор вебінтерфейсу, база даних, MQTT-брокер, MongoDB |
| Зв’язок | Modbus TCP, WebSocket, MQTT; інтеграції з терміналом і лояльністю |
| Платежі | Portmone та QR-посилання |
| Експлуатація | Експорти Node-RED/UI, конфігурації окремих Raspberry Pi, засоби моніторингу Telegraf у процедурі розгортання |
Важливі межі та залежності: користування Ubos передбачає платну підписку; доступність оперативних віддалених функцій залежить від зв’язку; частина аналітики оновлюється періодично.
Проєкт починався з мінімально працездатної версії (MVP): перші функції кабінету були доступні приблизно через місяць після укладення договору. Подальший функціонал допрацьовувався в реальній експлуатації протягом приблизно року.
Серед об’єктів, крім автомийок самообслуговування, наразі є дві портальні мийки. Замовник брав участь у постановці вимог і перевірці фінансових показників, а зміни функціональності вносилися під час роботи системи.
Кількісна економія, скорочення простоїв і фінансовий ефект у вихідних матеріалах не виміряні; їх не слід подавати як доведені результати.
Я виступав розробником електронного кабінету та інтеграційного IIoT-рівня: перетворював вимоги замовника на прикладну архітектуру, реалізовував вебфункції й Node-RED-потоки, інтегрував систему з наявним керуванням, локальними базами, лояльністю та оплатами. До роботи входили перевірка, виправлення й розвиток функціональності в експлуатації.
Локальну PLC-програму автомийок розробляв інший фахівець. Після завершення договірних робіт вихідні коди передано замовнику, якому вони належать. Це було індивідуальне комерційне рішення для Premium Wash, а не публічно поширюваний готовий продукт.
Подальший розвиток може включати нові управлінські звіти, поглиблену технічну аналітику, додаткові інтеграції та покращення сервісної діагностики.