Panduan perangkat Chime untuk iOS

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

ChimeDeviceType

home.matter.0000.types.0146

Perangkat yang dapat memutar berbagai suara bawaan dan biasanya digunakan dengan bel pintu, bel pintu audio, atau bel pintu video.

Ciri Wajib
     matter ChimeTrait

Ciri Opsional
     materi IdentifyTrait
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
}