ประเภทอุปกรณ์กริ่งพื้นฐานอาจใช้ได้โดยใช้Matterตามมาตรฐาน
Matter.ChimeTrait
หรือลักษณะภาษาของเวอร์ชันที่กำหนดเองของ Google เอง
Google.ChimeTrait
ซึ่งนอกเหนือจากความสามารถที่ระบุไว้ในมาตรฐานMatterแล้ว ยังรองรับกริ่งภายนอกด้วย
อุปกรณ์กริ่งประตูอาจใช้
Matter.IdentifyTrait
ซึ่งเป็นวิธีระบุอุปกรณ์กริ่งประตูด้วยภาพหรือเสียง
โปรดตรวจสอบการรองรับแอตทริบิวต์และคำสั่งสำหรับอุปกรณ์ก่อนที่จะใช้ฟีเจอร์หรือพยายามอัปเดตแอตทริบิวต์ ดูข้อมูลเพิ่มเติมได้ที่ควบคุมอุปกรณ์ใน iOS
| ประเภทอุปกรณ์ API สำหรับ Home | ลักษณะ | แอปตัวอย่าง Swift | กรณีการใช้งาน |
|---|---|---|---|
|
กริ่ง
อุปกรณ์ที่เล่นเสียงจากเสียงที่ติดตั้งไว้ล่วงหน้าได้หลากหลาย และมักใช้กับกริ่งประตู กริ่งประตูเสียง หรือกริ่งประตูแบบบันทึกวิดีโอได้ |
ลักษณะที่ต้องระบุ matter ChimeTrait |
กริ่งประตู |
ดูข้อมูลพื้นฐานเกี่ยวกับอุปกรณ์
ติดตั้งใช้งานในแอปตัวอย่างสำหรับ iOS
ลักษณะBasicInformation
ประกอบด้วยข้อมูล เช่น ชื่อผู้ให้บริการ รหัสผู้ให้บริการ รหัสผลิตภัณฑ์
ชื่อผลิตภัณฑ์ (รวมถึงข้อมูลรุ่น) และเวอร์ชันซอฟต์แวร์ของอุปกรณ์
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!
การรองรับหลายพาร์ท
กริ่งอาจประกอบด้วยอุปกรณ์หลายประเภท รวมถึง Chime และลำโพง (ไม่บังคับ) นอกจากนี้ กริ่งบางรุ่นยังมี Thread Border Router (TBR) หากต้องการให้การรองรับครอบคลุมมากที่สุด แอปที่ใช้ Home API ซึ่ง ควบคุมกริ่งควรเขียนให้รองรับอุปกรณ์กริ่งแบบหลายส่วน ดูข้อมูลเพิ่มเติมได้ที่ อุปกรณ์แบบหลายพาร์ท
อุปกรณ์กริ่งประตูแบบหลายส่วนแต่ละเครื่องควรแสดงในแอปด้วยไทล์เดียว อุปกรณ์ Chime ควรเป็นอุปกรณ์หลัก และลำโพงย่อยควรเป็นส่วนหนึ่งของ Chime
ระดับเสียงของลำโพงควรปรากฏเป็นการตั้งค่าหลักของอุปกรณ์ Chime
การแมปเปิด/ปิด
สำหรับกริ่งที่มีทั้งประเภทอุปกรณ์กริ่งและลำโพง ควรแมปปุ่มเปิด/ปิดในแอปควบคุมกับแอตทริบิวต์ Enabled ของกริ่ง
ตามMatterข้อกำหนดของคลังอุปกรณ์ การตั้งค่าแอตทริบิวต์ Enabled ของลักษณะ False อาจทำหน้าที่เป็นสวิตช์ปิดเสียงส่วนกลางที่ระงับตัวบ่งชี้ที่มองเห็นได้และได้ยินทั้งหมด นอกเหนือจากการปิดใช้False
การสนับสนุนการทำงานอัตโนมัติ
ดังที่กล่าวไว้ก่อนหน้านี้ เนื่องจากChimeDeviceTypeอาจมีหลายส่วน
เราจึงขอแนะนำให้นักพัฒนาแอปถือว่าเสียงกริ่งทั้งหมดเป็นอุปกรณ์แบบหลายส่วน และข้อความนี้
ยังคงเป็นจริงในกรณีของการทำงานอัตโนมัติที่ใช้เสียงกริ่ง
คุณใช้กริ่งในเงื่อนไขเริ่มต้นและการดำเนินการของการทำงานอัตโนมัติได้
อุปกรณ์ที่เป็นส่วนประกอบใดๆ ภายใต้อุปกรณ์ Chime หลักที่ใช้ในการ
ระบบอัตโนมัติจะต้องอ้างอิงโดยใช้
AutomationPartPath
การทำงานอัตโนมัติต่อไปนี้แสดงวิธีสร้างการทำงานอัตโนมัติด้วย เสียงกริ่งหลายส่วนที่ใช้ลักษณะ Chime รวมถึงลำโพง ระบบจะทริกเกอร์การทำงานอัตโนมัติเมื่อเปิดประตูหน้า
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() } }
ดูข้อมูลเพิ่มเติมเกี่ยวกับการทำงานอัตโนมัติโดยใช้อุปกรณ์แบบหลายส่วนได้ที่การทำงานอัตโนมัติของอุปกรณ์แบบหลายส่วน
ตรวจสอบการเชื่อมต่อสำหรับอุปกรณ์
ระบบจะตรวจสอบการเชื่อมต่อของอุปกรณ์ที่ระดับประเภทอุปกรณ์ เนื่องจากอุปกรณ์บางเครื่องรองรับอุปกรณ์หลายประเภท สถานะที่ส่งคืนคือ การรวมสถานะการเชื่อมต่อของลักษณะทั้งหมดในอุปกรณ์นั้น
let lightConnectivity = dimmableLightDeviceType.metadata.sourceConnectivity .connectivityState
สถานะ partiallyOnline อาจปรากฏในกรณีที่มีอุปกรณ์หลายประเภท
เมื่อไม่มีการเชื่อมต่ออินเทอร์เน็ต Matter มาตรฐาน
อาจยังออนไลน์อยู่เนื่องจากการกำหนดเส้นทางในพื้นที่ แต่ลักษณะที่อิงตามระบบคลาวด์จะ
ออฟไลน์
รับที่อยู่ IP ของอุปกรณ์
หากต้องการค้นหาที่อยู่ IP ของอุปกรณ์ ให้ใช้แอตทริบิวต์ networkInterfaces ของ
GeneralDiagnosticsTrait
ระบบจะแสดงที่อยู่เป็นออบเจ็กต์ Data ซึ่งคุณจัดรูปแบบเป็นสตริง IPv4 หรือ IPv6 มาตรฐานได้โดยใช้เฟรมเวิร์ก 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
}