Інтеграція Matter-протоколу для IoT-пристроїв у мобільний додаток

TRUETECH займається розробкою, підтримкою та обслуговуванням мобільних додатків iOS, Android, PWA. Маємо великий досвід та експертизу для публікації мобільних додатків до популярних маркетів Google Play, App Store, Amazon, AppGallery та інші.

Розробка та підтримка будь-яких видів мобільних додатків:

Інформаційні та розважальні мобільні програми
Новинки, ігри, довідники, онлайн-каталоги, погодні, фітнес та здоров'я, туристичні, освітні, соціальні мережі та месенджери, квіз, блоги та подкасти, форуми, агрегатори
Мобільні програми електронної комерції
Інтернет-магазини, B2B-додатки, маркетплейси, онлайн-обмінники, кешбек-сервіси, біржі, дропшиппінг-платформи, програми лояльності, доставка їжі та товарів, платіжні системи
Мобільні програми для управління бізнес-процесами
CRM-системи, ERP-системи, управління проектами, інструменти для команди продажів, облік фінансів, управління виробництвом, логістика та доставка, управління персоналом, системи моніторингу даних
Мобільні програми електронних послуг
Дошки оголошень, онлайн-школи, онлайн-кінотеатри, платформи надання електронних послуг, платформи кешбеку, відеохостинги, тематичні портали, платформи онлайн-бронювання та запису, платформи онлайн-торгівлі

Це лише деякі з типів мобільних додатків, з якими ми працюємо, і кожен із них може мати свої специфічні особливості та функціональність, а також бути адаптованим під конкретні потреби та цілі клієнта.

Послуги, які ми пропонуємо
Показано 1 з 1Усі 1735 послуг
Інтеграція Matter-протоколу для IoT-пристроїв у мобільний додаток
Складний
від 1 тижня до 3 місяців
Часті запитання

Наші компетенції:

Етапи розробки

Останні роботи

  • image_mobile-applications_feedme_467_0.webp
    Розробка мобільного додатка для компанії FEEDME
    792
  • image_mobile-applications_xoomer_471_0.webp
    Розробка мобільного додатку для компанії XOOMER
    671
  • image_mobile-applications_rhl_428_0.webp
    Розробка мобільного додатку для компанії RHL
    1097
  • image_mobile-applications_zippy_411_0.webp
    Розробка мобільного додатку для компанії ZIPPY
    969
  • image_mobile-applications_affhome_429_0.webp
    Розробка мобільного додатку для компанії Affhome
    914
  • image_mobile-applications_flavors_409_0.webp
    Розробка мобільного додатку для компанії FLAVORS
    495

Інтеграція Matter-протоколу для IoT-пристроїв у мобільний додаток

Matter 1.x — це не заміна Bluetooth або Wi-Fi, а унірікований протокол прикладного рівня поверх IP. Пристрій може бути підключений по Thread, Wi-Fi або Ethernet — Matter працює одинаково. Сенс для розробника мобільного додатка простий: один SDK, та пристрої від різних виробників управляються через єдиний API. Але шлях від «один SDK» до робочого production-коду довший, ніж здається на старті.

Зоопарк екосистем та єдиний стандарт

До Matter кожен виробник робив власний протокол. IKEA TRÅDFRI говорив CoAP/DTLS, Philips Hue — Zigbee + REST, Tuya — хмарний MQTT з проприетарним шифруванням. Інтеграція кожного вимагала окремого адаптера. Matter вирішує це на рівні стандарту: Device Type Dictionary визначає Clusters — атомарні одиниці функціональності. Лампочка — OnOff Cluster + Level Control Cluster + Color Control Cluster. Термостат — Thermostat Cluster. Замок — Door Lock Cluster.

Мобільний додаток читає та пише атрибути кластерів, підписується на події — та не знає нічого про залізо за ними.

iOS: Matter через HomeKit API

Apple реалізує Matter через розширення HomeKit. Комісіювання нового пристрою:

import HomeKit
import MatterSupport

// Запуск комісіювання через MatterAddDeviceRequest
let topology = MatterAddDeviceRequest.Topology(
    ecosystemName: "MyApp",
    homes: [MatterAddDeviceRequest.Topology.Home(displayName: "Мій дом")]
)
let request = MatterAddDeviceRequest(topology: topology)

do {
    try await request.perform()
} catch {
    // MatterAddDeviceError.userCancelled, .alreadyOnNetwork тощо
}

Після комісіювання пристрій доступен через HMHomeManager. Управління конкретним кластером — через HMCharacteristic. Але HomeKit абстрагує Matter Clusters до своєї моделі, що створює обмеження: нестандартні кластери (Vendor-specific) через HomeKit недоступні.

Для повного доступу до Matter API на iOS потрібен entitlement com.apple.developer.matter.allow-setup-payload — запрашується через Developer Portal.

Android: Matter через Google Home SDK

Google розповсюджує Matter підтримку через Play Services та Home SDK:

// build.gradle.kts
implementation("com.google.android.gms:play-services-home:16.0.0")

Комісіювання:

val commissioningClient = HomeManager.getCommissioningClient(context)

val request = CommissioningRequest.builder()
    .setCommissioningService(ComponentName(context, MyCommissioningService::class.java))
    .build()

commissioningClient.commissionDevice(request)
    .addOnSuccessListener { result ->
        val deviceId = result.commissionedDeviceId
    }
    .addOnFailureListener { exception ->
        // CommissioningException з кодом помилки
    }

MyCommissioningService розширює CommissioningService та отримує колбек onCommissioningRequested() — тут додаємо пристрій у власний бекенд.

Прямое управління через Matter SDK

Для випадків, коли потрібен прямий доступ до кластерів без екосистемної надбудови, використовується Matter Open Source SDK через JNI або Kotlin-обертки:

// Читання атрибута з OnOff Cluster
val devicePtr = ChipDeviceController.openPairingWindowWithPin(deviceId, 300, 0, pinCode)
chipClient.getDeviceController().readAttributePath(
    object : ReportCallback {
        override fun onReport(nodeState: NodeState) {
            val onOffState = nodeState
                .getEndpoint(1)
                ?.getCluster(OnOffCluster.CLUSTER_ID)
                ?.getAttribute(OnOffCluster.ATTRIBUTE_ID_ON_OFF)
        }
    },
    devicePtr,
    listOf(AttributePath(endpointId = 1, clusterId = OnOffCluster.CLUSTER_ID,
                         attributeId = OnOffCluster.ATTRIBUTE_ID_ON_OFF))
)

Прямий SDK складніший, вимагає розуміння Interaction Model (Read/Write/Subscribe/Invoke), але дає доступ до vendor-specific кластерів та працює без залежності від Google Play Services.

Fabric та Multi-admin

Важлива архітектурна деталь Matter: пристрій може одночасно належати кільком Fabrics. Fabric — це криптографічний домен з парою ключів. Додаток Google Home, Apple Home та ваш додаток можуть управляти одним пристроєм незалежно. Це називається Multi-admin.

Для реалізації потрібно передати Open Commissioning Window (OCW) пристрою, щоб другий контроллер мог провести комісіювання у свій Fabric:

// iOS: відкрити вікно комісіювання для додаткового контроллера
let accessory = homeManager.primaryHome?.accessories.first { $0.name == "Smart Lock" }
// Через HMAccessoryControl або прямий Matter API

Критично для продуктів, які хочуть працювати в екосистемах одночасно.

Типові помилки при інтеграції

На практиці частіше всього часу теряється на наступному:

  • Версіонування Matter SDK — Matter 1.0 та 1.3 несумісні на рівні деяких кластерів. Фіксуємо версію SDK у залежностях та тестуємо на конкретних прошивках пристроїв.
  • BLE Commissioning на Android — якщо телефон не має BLE-з'єднання з пристроєм в момент комісіювання, Google Play Services запрошує дозволи заново та скидає процес.
  • Fabric conflicts — якщо пристрій вже в іншому Fabric, повторне комісіювання вимагає фабричного скиду. Додайте перевірку у UX.

Оцінка робіт

Інтеграція Matter в існуючий мобільний додаток при наявності Matter-сумісних пристроїв для тестування: iOS — 3-4 тижні, Android — 3-5 тижнів, Flutter з нативними каналами — 5-7 тижнів. Розробка з нуля, включаючи архітектуру управління пристроями та синхронізацію стану — від 2 місяців. Вартість розраховується індивідуально після аналізу вимог та парку пристроїв.