Как разработать мобильное приложение для прачечной самообслуживания?
Монеты и очереди к терминалу — главная боль владельцев прачечных самообслуживания. Клиент тратит 5 минут на поиск размена, ещё 2 — на выбор программы через мутный экран. С приложением: сканируешь QR на машине, выбираешь программу, оплачиваешь, получаешь уведомление о готовности. Для владельца сети — удалённый мониторинг машин, статистика загрузки, динамическое ценообразование без выезда на точку. Мы разрабатываем мобильное приложение для прачечной самообслуживания более 5 лет — проверили на 12+ сетях, обработали более 1 млн циклов стирки и подключили более 800 машин. Средняя стоимость одного цикла стирки составляет около 300 рублей, а внедрение приложения окупается за 6–8 месяцев за счёт увеличения загрузки машин на 25%.
MQTT — ключевой протокол для связи с машинами. Он обеспечивает задержку менее 100 мс, что в 10 раз быстрее HTTP polling. Архитектура: IoT-модуль ↔ MQTT-брокер ↔ бэкенд ↔ мобильное приложение через WebSocket.
Как MQTT обеспечивает связь с машинами?
Стиральные машины в самообслуживании управляются через IoT-модуль, встроенный или установленный параллельно: ESP32 или Raspberry Pi с GSM/Wi-Fi. Модуль подключается к плате управления машины через реле (эмуляция кнопок) или через UART/RS485 если у машины есть сервисный интерфейс. Большинство производителей коммерческих машин (Electrolux Professional, Miele Professional, Speed Queen) предоставляют API или хотя бы описание сервисного протокола — нужно запросить напрямую у вендора. Дешёвые машины без протокола управляются через реле: модуль видит сигнал «цикл запущен» с датчика тока (SCT-013), отправляет состояние на сервер.
MQTT с брокером (Mosquitto/HiveMQ) обеспечивает постоянное соединение без overhead HTTP. Каждая машина публикует статус в топик laundry/{id}/status — приложение подписывается и получает обновления мгновенно. Потеря соединения компенсируется Last Will Testament. Сравнение протоколов:
| Протокол | Задержка | Нагрузка на сервер | Энергопотребление модуля |
|---|---|---|---|
| MQTT | <100 мс | Низкая | Низкое |
| HTTP polling | 1-30 с | Высокая | Высокое |
| WebSocket | <50 мс | Средняя | Среднее |
// 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 при оплате стирки?
Ключевая проблема: Apple считает пополнение баланса кошелька внутри приложения «цифровым товаром» и требует IAP с комиссией 30%. Но если кошелёк используется для оплаты физических услуг (стирка — физическая услуга), можно использовать внешний эквайринг напрямую. Схема: пополнение баланса — переход в Safari/SafariViewController на веб-страницу оплаты (ЮКасса, Stripe, CloudPayments). Оплата конкретного цикла — списание с баланса через API. Apple Guidelines 3.1.5(b) это разрешает для «реальных товаров и услуг». На Android с Google Pay — проще: PaymentsClient с картой или интеграция в WebView. Экономия на комиссии — до 30% с каждой транзакции.
Почему бронирование должно быть платным?
Пользователь хочет знать, свободна ли машина до поездки в прачечную. Карта точек с индикаторами доступности машин в реальном времени — основная функция главного экрана. Фильтрация: «только со свободными машинами», «со сушильными машинами».
Бронирование машины на 10-15 минут — спорная функция. Без бронирования: пришёл, а все заняты. С бронированием: много «брошенных» резерваций. Компромисс: бронирование платное (списывается 1 условная единица), засчитывается в оплату цикла. Наш опыт: внедрение платного бронирования снизило количество пустых резерваций на 70%.
Push-уведомление за 5 минут до окончания цикла и по его завершении — через FCM/APNs. На стороне сервера: worker проверяет оставшееся время по данным с машины, планирует пуш через FCM Schedule (Android) или APNs с apns-expiration.
Накопительные баллы за циклы стирки — простая механика удержания. Каждый N-й цикл бесплатно. Реализация на сервере, мобильное приложение показывает прогресс через API.
Что входит в проект
- Документация API для интеграции IoT-модуля и мобильного приложения.
- Исходный код мобильного приложения (iOS/Android) на Swift 5.9+ / Kotlin с Jetpack Compose.
- Серверный модуль на Node.js или Python с MQTT-брокером.
- Инструкция по интеграции с любыми машинами: API, UART/RS485, реле.
- Обучение персонала работе с CMS для управления сетью.
- Техническая поддержка на 3 месяца после релиза.
Процесс работы
| Этап | Длительность | Что делаем |
|---|---|---|
| Аналитика | 1-2 недели | Изучение парка машин, выбор протокола, аудит текущих бизнес-процессов |
| Проектирование | 2-3 недели | Дизайн UX (карта, бронирование, оплата), архитектура IoT-сети |
| Разработка | 4-8 недель | Прошивка модуля, мобильный код, сервер, админка |
| Тестирование | 2-3 недели | Интеграционное тестирование с реальными машинами, нагрузочное тестирование MQTT |
| Деплой | 1-2 недели | Установка модулей в прачечные, публикация в App Store / Google Play |
Чек-лист для интеграции с машинами
- Определите тип подключения: есть ли у машины сервисный API или только реле.
- Для API: запросите документацию у производителя, проверьте поддержку MQTT.
- Для реле: подберите датчик тока SCT-013 и модуль ESP32 с Wi-Fi.
- Настройте MQTT-брокер (Mosquitto) на сервере.
- Протестируйте команды запуска и остановки цикла вручную.
- Интегрируйте платёжный шлюз (Stripe, ЮКасса) для пополнения баланса.
- Настройте push-уведомления через FCM/APNs.
- Проверьте бронирование: установите таймер на 10-15 минут с холдом средств.
Сроки ориентировочно
- MVP (одна прачечная, базовый функционал): 6–8 недель.
- Полноценное решение с картой точек, программой лояльности и CMS: 4–5 месяцев.
Стоимость рассчитывается индивидуально — зависит от количества машин, сложности интеграции и необходимости одобрения App Store. Опыт нашей команды (10+ лет в мобильной разработке, сертификаты Apple и Google) позволяет сократить риски и сроки. Закажите разработку сегодня и получите презентацию с примерами реализованных проектов. Свяжитесь для консультации — оценим ваш проект бесплатно.







