Android için Chime cihaz kılavuzu

Temel Chime cihaz türü, Matter standardına dayalı özellik com.google.home.matter.standard.Chime veya Google'ın kendi özel özellik sürümü com.google.home.google.Chime kullanılarak uygulanabilir. Bu sürüm, Matter standardında belirtilen özelliklere ek olarak harici zilleri de destekler. Zil cihazları, Identify özelliğini de uygulayabilir. Bu özellik, zil cihazını görsel veya işitsel olarak tanımlamak için bir yöntem sunar.

Herhangi bir özelliği kullanmadan veya özellikleri güncellemeye çalışmadan önce cihazın özellik ve komut desteğini mutlaka kontrol edin. Daha fazla bilgi için Android başlıklı makaleyi inceleyin.

Home API'leri Cihaz Türü Özellikler Kotlin Örnek Uygulaması Kullanım Örneği

Çan

ChimeDevice

home.matter.0000.types.0146

Çeşitli önceden yüklenmiş sesleri çalabilen ve genellikle kapı zili, sesli kapı zili veya görüntülü kapı zili ile kullanılan bir cihaz.

Zorunlu Özellikler
     matter Chime

İsteğe Bağlı Özellikler
     matter Identify
Kapı zili

Cihaz hakkında temel bilgileri edinme

   Android için örnek uygulamada uygulandı   

BasicInformation özelliği; tedarikçi adı, tedarikçi kimliği, ürün kimliği, ürün adı (model bilgilerini içerir) ve cihazın yazılım sürümü gibi bilgileri içerir:

// 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}")
    }

Çok parçalı destek

Zil sesleri, Chime ve isteğe bağlı olarak hoparlör gibi birden fazla cihaz türünden oluşabilir. Ayrıca bazı zil seslerinde Thread Border Router (TBR) bulunur. En geniş desteği sağlamak için zil seslerini kontrol eden Home API'leri, çok parçalı zil sesi cihazlarını destekleyecek şekilde yazılmalıdır. Daha fazla bilgi için Çok parçalı cihazlar başlıklı makaleyi inceleyin.

Çok parçalı her zil cihazı, uygulamada tek bir kutucukla gösterilmelidir. Chime cihazı birincil cihaz olmalı ve çocuk hoparlör, Chime'ın parçası olmalıdır.

Hoparlör ses düzeyi, Chime cihazının birincil ayarı olarak görünmelidir.

OnOff eşleme

Hem Chime hem de Hoparlör cihaz türüne sahip bir zil için kontrol uygulamasındaki bir Açma/Kapama düğmesi, Chime'ın Enabled özelliğine eşlenmelidir.

Matter Cihaz Kitaplığı spesifikasyonuna göre, Chime özelliğinin Enabled özelliğini False olarak ayarlamak, Chime'ı devre dışı bırakmanın yanı sıra tüm işitsel ve görsel göstergeleri bastıran genel bir sessize alma anahtarı gibi davranabilir.

Otomasyon desteği

Daha önce de belirtildiği gibi, ChimeDevice birden fazla parçaya sahip olabileceğinden geliştiricilerin tüm zilleri çok parçalı cihazlar olarak ele alması önerilir. Bu durum, zilleri kullanan otomasyonlar için de geçerlidir.

Zil sesleri, otomasyon başlatıcılarında ve işlemlerinde kullanılabilir.

Otomasyonda kullanılan üst Chime cihazının altındaki tüm bileşen parçası cihazlara AutomationPartPath kullanılarak referans verilmelidir.

Aşağıdaki otomasyonda, Chime özelliğinin yanı sıra Speaker özelliğini de uygulayan çok parçalı bir zil sesiyle otomasyonun nasıl oluşturulacağı gösterilmektedir. Otomasyon, ön kapı açıldığında tetiklenir:

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())
    }
  }
}

Çok parçalı cihazların kullanıldığı otomasyonlar hakkında daha fazla bilgi için Çok parçalı cihaz otomasyonları başlıklı makaleyi inceleyin.

Bir cihazın bağlantısını kontrol etme

Bir cihazın bağlantısı aslında cihaz türü düzeyinde kontrol edilir. Çünkü bazı cihazlar birden fazla cihaz türünü destekler. Döndürülen durum, söz konusu cihazdaki tüm özelliklerin bağlantı durumlarının birleşimidir.

   Android için örnek uygulamada uygulandı   
val lightConnectivity = dimmableLightDevice.metadata.sourceConnectivity.connectivityState

İnternet bağlantısı olmadığında, karışık cihaz türleri söz konusu olduğunda PARTIALLY_ONLINE durumu gözlemlenebilir. Matter standart özellikleri, yerel yönlendirme nedeniyle online olmaya devam edebilir ancak bulut tabanlı özellikler çevrimdışı olur.

Cihazın IP adresini alma

Cihazın IP adresini bulmak için GeneralDiagnostics özelliğinin networkInterfaces özelliğini kullanın. Adresler, standart IPv4 veya IPv6 dizeleri olarak biçimlendirebileceğiniz bayt dizileri olarak döndürülür:

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()