Trait yang dapat digunakan setelah perangkat diaktifkan adalah:
OtaSoftwareUpdateRequestorTrait
Trait ini menyediakan antarmuka untuk memantau update software OTA di perangkat kamera. Setelah diaktifkan, kamera akan memulai update dan melaporkan statusnya ke aplikasi. Setelah aplikasi menerima status bahwa update software selesai, kamera dapat mulai melakukan livestreaming.
Contoh kode dan penjelasan berikut menunjukkan cara penggunaan trait.
device.types.subscribe(OtaRequestorDeviceType.self)
.receive(on: DispatchQueue.main)
.compactMap { $0.traits[Matter.OtaSoftwareUpdateRequestorTrait.self] }
.removeDuplicates()
.timeout(.seconds(30), scheduler: DispatchQueue.main)
.sink { [weak self] completion in
guard let self else { return }
Logger.debug("OTA trait subscription completed unexpectedly: \(completion).")
if case .otaDownload = self.step {
Logger.debug("Advancing to settings step due to OTA trait subscription completion")
self.step = .settings
}
} receiveValue: { [weak self] otaTrait in
Logger.debug(
"OTA update is in progress, state: \(otaTrait.attributes.updateState), progress: \(otaTrait.attributes.updateStateProgress ?? 0)"
)
self.step = .otaDownload(
state: otaTrait.attributes.updateState ?? .querying,
progress: Double(otaTrait.attributes.updateStateProgress ?? 0) / 100.0)
}
}
.store(in: &cancellables)
Berlangganan ke trait perangkat: Berlangganan ke trait perangkat, khususnya mencari
OtaSoftwareUpdateRequestorTraituntuk memproses informasi update OTA.Menetapkan waktu tunggu: Menetapkan waktu tunggu 30 detik. Jika tidak ada update yang diterima dari trait dalam waktu tersebut, langganan akan berakhir.
Menangani update status OTA (
receiveValue): SaatOtaSoftwareUpdateRequestorTraitmemberikan status baru, blok ini akan dieksekusi. Blok ini mencatat status saat ini dan progres update OTA. Kemudian, blok ini memperbarui status internal aplikasi (step) untuk mencerminkan informasi baru ini.Menangani penyelesaian (
sink): Blok ini dieksekusi saat langganan berakhir, dan mencatat penyelesaian. Jika proses berada dalam status mendownload, status aplikasi akan berlanjut ke langkah berikutnya (.settings).Mengelola siklus proses langganan: Baris
.store(in: &cancellables)memastikan langganan dikelola dan dibatalkan dengan benar saat objek yang memilikinya di-deallocate.
Untuk mengetahui informasi selengkapnya, lihat referensi trait
OtaSoftwareUpdateRequestorTrait.
ConfigurationDoneTrait
Trait ini tidak diperlukan untuk aktivasi kamera, tetapi memungkinkan aplikasi melacak kapan perangkat disiapkan sepenuhnya dan dapat digunakan dengan menetapkan atribut AppConfigurationComplete ke true.
Trait ini harus digunakan setelah OtaSoftwareUpdateRequestorTrait.
let configDoneTrait = try await device.types.get(OtaRequestorDeviceType.self)?.traits[Google.ConfigurationDoneTrait.self]
_ = try await configDoneTrait?.update {
$0.setAppConfigurationComplete(true)
}