Temel Chime cihaz türü, standart Matter tabanlı Matter.ChimeTrait veya Google'ın kendi özel özellik sürümü olan Google.ChimeTrait kullanılarak uygulanabilir. Bu sürüm, Matter standardında belirtilen özelliklere ek olarak harici zilleri de destekler.
Zil cihazı, Matter.IdentifyTrait özelliğini de uygulayabilir. Bu özellik, zil cihazını görme veya duyma yoluyla tanımlama imkanı 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 iOS başlıklı makaleyi inceleyin.
| Home API'leri Cihaz Türü | Özellikler | Swift Sample App | Kullanım Örneği |
|---|---|---|---|
|
Çan
Ç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 ChimeTrait |
Kapı zili |
Cihaz hakkında temel bilgileri edinme
iOS 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:
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!
Ç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, ChimeDeviceType birden fazla parçaya sahip olabileceğinden geliştiricilerin tüm zil seslerini çok parçalı cihazlar olarak ele alması önerilir. Bu durum, zil seslerini 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 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() } }
Ç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
Bazı cihazlar birden fazla cihaz türünü desteklediğinden, bir cihazın bağlantısı aslında cihaz türü düzeyinde kontrol edilir. Döndürülen durum, söz konusu cihazdaki tüm özelliklerin bağlantı durumlarının birleşimidir.
let lightConnectivity = dimmableLightDeviceType.metadata.sourceConnectivity .connectivityState
İnternet bağlantısı olmadığında, karışık cihaz türleri söz konusu olduğunda partiallyOnline 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 GeneralDiagnosticsTrait öğesinin networkInterfaces özelliğini kullanın.
Adresler, Data nesneleri olarak döndürülür. Bu nesneleri Network çerçevesini kullanarak standart IPv4 veya IPv6 dizeleri olarak biçimlendirebilirsiniz:
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
}