Jenis perangkat Bel dasar dapat diimplementasikan menggunakan
Matter.ChimeTrait
berbasis Matter standar
atau versi kustom ciri Google sendiri,
Google.ChimeTrait,
yang selain kemampuan yang ditentukan dalam standar
Matter, mendukung bel eksternal.
Perangkat bel juga dapat menerapkan
Matter.IdentifyTrait,
yang menyediakan cara untuk mengidentifikasi perangkat bel berdasarkan penglihatan atau suara.
Selalu periksa dukungan atribut dan perintah untuk perangkat sebelum menggunakan fitur atau mencoba memperbarui atribut. Lihat Mengontrol perangkat di iOS untuk mengetahui informasi selengkapnya.
| Jenis Perangkat Home API | Sifat | Aplikasi Contoh Swift | Kasus Penggunaan |
|---|---|---|---|
|
Denting
Perangkat yang dapat memutar berbagai suara bawaan dan biasanya digunakan dengan bel pintu, bel pintu audio, atau bel pintu video. |
Ciri Wajib matter ChimeTrait |
Bel pintu |
Mendapatkan informasi dasar tentang perangkat
Diimplementasikan di Aplikasi Contoh untuk iOS
Trait BasicInformation
mencakup informasi seperti nama vendor, ID vendor, ID produk,
nama produk (mencakup informasi model), dan versi software untuk perangkat:
let vendorName = basicInfoTrait.attributes.vendorName! let vendorID = basicInfoTrait.attributes.vendorID! let productID = basicInfoTrait.attributes.productID! let productName = basicInfoTrait.attributes.productName! let softwareVersion = basicInfoTrait.attributes.softwareVersion!
Dukungan multibagian
Bel dapat terdiri dari beberapa jenis perangkat, termasuk Bel dan Speaker (opsional). Selain itu, beberapa bel menyertakan Thread Border Router (TBR). Untuk memastikan dukungan terluas, aplikasi Home API yang mengontrol bel harus ditulis untuk mengakomodasi perangkat bel multipart. Lihat Perangkat multipart untuk mengetahui informasi selengkapnya.
Setiap perangkat bel multipart harus ditampilkan di aplikasi dengan satu kartu. Perangkat Chime harus menjadi perangkat utama, dan Speaker turunan harus menjadi bagian dari Chime.
Volume speaker akan muncul sebagai setelan utama perangkat Chime.
Pemetaan OnOff
Untuk bel dengan jenis perangkat Bel dan Speaker, tombol OnOff di aplikasi pengontrol harus dipetakan ke atribut Enabled Bel.
Sesuai spesifikasi Pustaka Perangkat Matter, menyetel atribut Enabled trait Bel ke False dapat, selain menonaktifkan Bel, bertindak seperti tombol mute global yang menekan semua indikator yang dapat didengar dan dilihat.
Dukungan otomatisasi
Seperti yang dinyatakan sebelumnya, karena ChimeDeviceType dapat memiliki beberapa bagian,
developer dianjurkan untuk memperlakukan semua bel sebagai perangkat multipart, dan hal ini
tetap berlaku dalam kasus otomatisasi yang menggunakan bel.
Bel dapat digunakan dalam pemicu dan tindakan otomatisasi.
Perangkat bagian komponen apa pun di bawah perangkat Chime induk yang digunakan dalam otomatisasi harus dirujuk menggunakan
AutomationPartPath.
Otomatisasi berikut menunjukkan cara membuat otomatisasi dengan bel multi-bagian yang menerapkan trait Bel serta Speaker. Otomatisasi dipicu saat pintu depan dibuka:
import GoogleHomeSDK import GoogleHomeTypes typealias ChimeTrait = Matter.ChimeTrait typealias OpenCloseTrait = Google.OpenCloseTrait // Fetch devices using the multipart device model. let multipartDevices = try await home.devices(enableMultipartDevices: true).list() guard let chimeParentDevice = multipartDevices.first(where: { $0.types.contains(ChimeDeviceType.self) }) else { return } guard let doorDevice = multipartDevices.first(where: { $0.types.contains(GoogleDoorDeviceType.self) }) else { return } // Extract the AutomationPartPath for the specific Chime part guard let chimeType = await chimeParentDevice.types.get(ChimeDeviceType.self), let chimePartPath = chimeParentDevice.automationPart(chimeType) else { return } let starterNode = starter(doorDevice, GoogleDoorDeviceType.self, OpenCloseTrait.self) let doorOpenClose = stateReader(doorDevice, GoogleDoorDeviceType.self, OpenCloseTrait.self) // Build the automation let chimeAutomation = automation( name: "Multipart Chime Demo", description: "Activate the chime when the door is opened" ) { starterNode condition { starterNode.openPercent.unwrapOptional().greaterThan(0) } // Action: Play a chime sound action(chimePartPath) { ChimeTrait.playChimeSound() } }
Lihat Otomatisasi perangkat multipart untuk informasi tambahan tentang otomatisasi menggunakan perangkat multipart.
Memeriksa konektivitas perangkat
Konektivitas untuk perangkat sebenarnya diperiksa di tingkat jenis perangkat karena beberapa perangkat mendukung beberapa jenis perangkat. Status yang ditampilkan adalah kombinasi status konektivitas untuk semua trait di perangkat tersebut.
let lightConnectivity = dimmableLightDeviceType.metadata.sourceConnectivity .connectivityState
Status partiallyOnline dapat diamati dalam kasus jenis perangkat campuran
jika tidak ada konektivitas internet. Fitur standar Matter mungkin masih online karena pemilihan rute lokal, tetapi fitur berbasis cloud akan offline.
Mendapatkan alamat IP perangkat
Untuk menemukan alamat IP perangkat, gunakan atribut networkInterfaces dari
GeneralDiagnosticsTrait.
Alamat ditampilkan sebagai objek Data, yang dapat Anda format ke string IPv4 atau IPv6 standar menggunakan framework Network:
func getIpAddresses(trait: Matter.GeneralDiagnosticsTrait) -> [String] {
let interfaces = trait.attributes.networkInterfaces ?? []
var ipAddresses: [String] = []
for interface in interfaces {
for data in interface.iPv4Addresses {
if let ipv4 = IPv4Address(data) {
ipAddresses.append(String(describing: ipv4))
}
}
for data in interface.iPv6Addresses {
if let ipv6 = IPv6Address(data) {
ipAddresses.append(String(describing: ipv6))
}
}
}
return ipAddresses
}