Panduan perangkat Chime untuk Android

Jenis perangkat Chime dasar dapat diimplementasikan menggunakan karakteristik berbasis Matter standar com.google.home.matter.standard.Chime atau versi karakteristik kustom Google sendiri, com.google.home.google.Chime, yang, selain kemampuan yang ditentukan dalam standar Matter, mendukung bel eksternal. Perangkat bel pintu juga dapat menerapkan sifat Identify, yang memberikan cara untuk mengidentifikasi perangkat bel pintu berdasarkan penglihatan atau suara.

Selalu periksa dukungan atribut dan perintah untuk perangkat sebelum menggunakan fitur atau mencoba memperbarui atribut. Lihat Mengontrol perangkat di Android untuk mengetahui informasi selengkapnya.

Jenis Perangkat Home API Sifat Aplikasi Contoh Kotlin Kasus Penggunaan

Denting

ChimeDevice

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
     penting Bel

Ciri Opsional
     matter Identifikasi
Bel pintu

Mendapatkan informasi dasar tentang perangkat

   Diterapkan di Aplikasi Contoh untuk Android   

Trait BasicInformation mencakup informasi seperti nama vendor, ID vendor, ID produk, nama produk (mencakup informasi model), dan versi software untuk perangkat:

// Get device basic information. All general information traits are on the RootNodeDevice type.
    device.type(RootNodeDevice).first().standardTraits.basicInformation?.let { basicInformation ->
        println("vendorName ${basicInformation.vendorName}")
        println("vendorId ${basicInformation.vendorId}")
        println("productId ${basicInformation.productId}")
        println("productName ${basicInformation.productName}")
        println("softwareVersion ${basicInformation.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 ChimeDevice mungkin 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 com.google.home.automation.automation
import com.google.home.automation.greaterThan
import com.google.home.google.GoogleDoorDevice
import com.google.home.google.OpenClose
import com.google.home.matter.standard.ChimeDevice
import com.google.home.matter.standard.Chime
// ...

// Fetch devices
val devices = homeManager.devices()

// Fetch devices using the multipart device model.
val multipartDevices = homeManager.devices(enableMultipartDevices = true)

val doorDevice = devices.first() {
  it.has(GoogleDoorDevice) &&
  it.has(OpenClose)
}

// Obtain a reference to the chime device.
val chime = multipartDevices.first() {
  it.has(ChimeDevice) &&
  it.has(Chime)
}

// Extract the AutomationPartPath for the specific Chime part
val chimePartPath = chime.automationPart(chime.part(ChimeDevice).first())!!

// Build the automation
val chimeAutomation = automation {
  sequential {
    val doorOpenClose = stateReader<_>(doorDevice, GoogleDoorDevice, OpenClose)
    // Starter: When the door state changes
    val starterNode = starter<_>(doorDevice, GoogleDoorDevice, OpenClose)
    condition {
     expression = doorOpenClose.openPercent greaterThan(0)
    }
    // Action: Play a chime sound
    action(chimePartPath) {
      command(Chime.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.

   Diterapkan di Aplikasi Contoh untuk Android   
val lightConnectivity = dimmableLightDevice.metadata.sourceConnectivity.connectivityState

Status PARTIALLY_ONLINE dapat diamati dalam kasus jenis perangkat campuran saat tidak ada konektivitas internet. Matter standar mungkin masih online karena perutean lokal, tetapi trait berbasis cloud akan offline.

Mendapatkan alamat IP perangkat

Untuk menemukan alamat IP perangkat, gunakan atribut networkInterfaces dari trait GeneralDiagnostics. Alamat ditampilkan sebagai array byte, yang dapat Anda format ke string IPv4 atau IPv6 standar:

val ipAddresses =
  trait.networkInterfaces?.flatMap { networkInterface ->
    (networkInterface.ipv4Addresses + networkInterface.ipv6Addresses).mapNotNull { bytes ->
      try {
        java.net.InetAddress.getByAddress(bytes).hostAddress
      } catch (e: java.net.UnknownHostException) {
        null
      }
    }
  } ?: emptyList()