Розробка мобільного додатку для прачечної самообслуговування
Прачечна без мобільного додатку — це монети і черги до терміналу. З додатком: сканувати QR на машині, вибрати програму прання, оплатити, отримати сповіщення коли цикл закінчиться. Для власника мережі — дистанційний моніторинг машин, статистика навантаження, управління цінами без відвідування точок.
Керування машиною: протокол зв'язку
Стиральні машини самообслуговування керуються через IoT-модуль, вбудований або встановлений окремо: ESP32 або Raspberry Pi з GSM/Wi-Fi. Модуль підключається до плати керування машини через реле (емуляція кнопок) або через UART/RS485 якщо машина має сервісний інтерфейс.
Більшість виробників комерційних машин (Electrolux Professional, Miele Professional, Speed Queen) надають API або описання сервісного протоколу — попросити безпосередньо у виробника. Дешеві машини без протоколу керуються через реле: модуль бачить сигнал «цикл запущено» з датчика струму (SCT-013), відправляє стан на сервер.
Архітектура: IoT-модуль ↔ MQTT-брокер (Mosquitto/HiveMQ) ↔ бекенд ↔ мобільний додаток через WebSocket.
// Android: підписка на статус машини через MQTT
class LaundryMachineMonitor(private val machineId: String) {
private val mqttClient: MqttAndroidClient = /* ініціалізація */
fun subscribeToMachine(onUpdate: (MachineStatus) -> Unit) {
mqttClient.subscribe("laundry/$machineId/status", 1) { _, message ->
val json = String(message.payload)
val status = Json.decodeFromString<MachineStatus>(json)
onUpdate(status)
}
}
fun startCycle(program: WashProgram, token: String) {
val command = Json.encodeToString(StartCycleCommand(program, token))
mqttClient.publish("laundry/$machineId/command", command.toByteArray(), 1, false)
}
}
@Serializable
data class MachineStatus(
val state: MachineState, // IDLE, RUNNING, DONE, ERROR
val programName: String?,
val remainingSeconds: Int?,
val errorCode: String?
)
Оплата та обхід App Store Review
Ключова проблема: Apple вважає поповнення балансу гаманця «цифровим товаром» і вимагає IAP з комісією 30%. Але якщо гаманець використовується для оплати фізичних послуг (прання — фізична послуга), можна використовувати зовнішню обробку платежів безпосередньо.
Схема: поповнення балансу — перехід у Safari/SafariViewController на сторінку оплати (Яндекс.Касса, Stripe, CloudPayments). Оплата конкретного циклу — списання з балансу через API. Apple Guidelines 3.1.5(b) це дозволяють для «реальних товарів і послуг».
На Android з Google Pay — простіше: PaymentsClient з карткою або інтеграція в WebView.
UX: черга та бронювання
Користувач хоче знати чи вільна машина до поїздки в прачечну. Карта точок з індикаторами доступності машин у реальному часі — основна функція головного екрану. Фільтрування: «тільки зі вільними машинами», «зі сушарками».
Бронювання машини на 10–15 хвилин — спірна функція. Без бронювання: прийшов, а всі зайняті. З бронюванням: багато «кинутих» резервацій. Компроміс: платне бронювання (списується 1 умовна одиниця), зараховується в оплату циклу.
Push-сповіщення за 5 хвилин до закінчення циклу й при його завершенні — через FCM/APNs. На стороні сервера: воркер перевіряє час залишений за даними з машини, планує пуш через FCM Schedule (Android) або APNs з apns-expiration.
Програма лояльності
Накопичувальні бали за цикли прання — проста механіка утримання. Кожен N-й цикл безплатно. Реалізація на сервері, мобільний додаток показує прогрес через API.
Розробка мобільного додатку для мережі прачечних з оплатою, управлінням машинами через MQTT та сповіщеннями: 8–12 тижнів. З картою точок, програмою лояльності та CMS для управління мережею: 4–5 місяців. Стоимість розраховується індивідуально.







