Розробка мобільного додатка для управління умним домом
Рынок умного дома фрагментований як жоден інший: Zigbee-лампа одного вендора, Z-Wave замок іншого, Wi-Fi камера третього та проприетарний термостат — в одній квартирі. Мобільний додаток, який об'єднує їх в єдиний інтерфейс, — це не просто UI-задача. Це багатопротокольна інтеграція з асинхронним станом, push-сповіщеннями та обов'язковим офлайн-фоллбеком.
Протоколи та SDK: що з чим працює
Zigbee та Z-Wave напрямку з телефону не працюють — немає апаратного модуля. Всі команди йдуть через хаб: Philips Hue Bridge (REST API), SmartThings Hub (REST + WebSocket), Home Assistant (REST + WebSocket + MQTT). Протокол спілкування з хабом — ваш вибір. Home Assistant переважніший з точки зору відкритості: WebSocket API з підпискою на state_changed события, Long-Lived Access Token для авторизації.
Matter — актуальний стандарт з 2022 року, підтримується Apple (HomeKit), Google (Google Home), Amazon (Alexa). SDK для Android: com.google.home:home-sdk (beta, потребує Google account). Для iOS — HomeKit framework, HMHomeManager, HMAccessory. Matter працює поверх Wi-Fi та Thread, але для Thread потрібен border router (Apple HomePod, Google Nest Hub).
Прямое управління через Wi-Fi — для пристроїв з відкритим API (Shelly, Sonoff у режимі DIY, Tuya). Shelly дает локальний HTTP API та MQTT без хмари — добре для приватності. Tuya IoT Platform SDK для Android: TuyaSmartDevice з методами publishDps() для відправки команд.
// Tuya: відправити команду включення
val dps = hashMapOf<String, Any>("1" to true)
TuyaHomeSdk.newDeviceInstance(deviceId).publishDps(
JSONObject(dps as Map<*, *>).toString(),
object : IResultCallback {
override fun onError(code: String, error: String) { /* обробка */ }
override fun onSuccess() { /* оновлення UI */ }
}
)
Bluetooth Low Energy — для ближньої зони: розумні замки (August, Nuki), датчики. CoreBluetooth на iOS, Android BLE API + RxAndroidBle на Android. Нюанс: BLE-з'єднання потрібно утримувати активним для замків, інакше задержка при відкритті дверей — 2–3 секунди на переподключення, що неприйнято.
Реальний виклик: узгодженість стану
Найскладніше у додатку умного дома — показувати актуальний стан пристроїв. Лампа вимкнута вручну з настінного вимикача? Push-сповіщення через Matter subscription або MQTT повинно оновити UI до наступного відкриття екрана.
Архітектура для Android: ViewModel зберігає StateFlow<Map<DeviceId, DeviceState>>. Підписка на события хаба — окрема coroutineScope у Application-рівні, щоб не прив'язуватися до життєвого циклу екрана. При отриманні state_changed від Home Assistant WebSocket — оновлення через MutableStateFlow.
На iOS аналогічно: HomeKit дает делегатні callbacks home(_:didUpdate:) — їх потрібно маршрутизувати у @Published властивості ObservableObject або через Combine pipeline.
Мертві события. Якщо хаб недоступний — додаток не повинен зависнути на останньому відомому стані без попередження. Таймаут на WebSocket heartbeat: якщо нема pong за 30 секунд — показувати «пристрій недоступний», а не стару кнопку включення.
Автоматизація та сценарії
Користувачі очікують не просто управління кнопкою — вони очікують автоматизацій. «Коли відкривається дверь після 23:00 — включити світло у коридорі на 50%». Сценарії реалізуються на рівні хаба (Home Assistant automations, Apple Shortcuts, Google Home routines), додаток лише надає UI для їхнього створення.
Конструктор автоматизацій — найтрудомістка частина. Drag-and-drop умов та дій, вибір пристроїв, часові триггери, геозони. Готовий node-based editor реалізувати складно — простіше tabbed flow «триггер → умова → дія» з обмеженою логікою.
iOS HomeKit vs Android: практичний розрив
HomeKit на iOS строгіший: всі пристрої повинні пройти MFi-сертифікацію або використовувати Matter. Зато інтеграція з Siri Shortcuts — бесплатна фича для користувачів. INIntent для включення сцен — кілька рядків коду.
На Android гнучче: можна працювати з будь-яким API напрямую, без сертифікації. Але немає єдиного стандарту — у кожного вендора свій SDK.
Терміни
MVP з одним протоколом (наприклад, Home Assistant + WebSocket): 6–8 тижнів. Мультипротокольний додаток з Matter, MQTT, BLE та конструктором автоматизацій: 4–6 місяців. Вартість залежить від числа підтримуваних протоколів та платформ.







