เพื่อให้ใช้งานได้ง่าย เราจึงมีลักษณะบางอย่างในเวอร์ชันที่เรียบง่ายให้ใช้กับ Automation API ใน Android
ลักษณะที่ลดความซับซ้อนจะแทนที่ลักษณะ Home API มาตรฐาน ซึ่งคล้ายกับวิธีการทำงานของ รูปแบบ Facade ลักษณะที่ง่ายขึ้นจะให้คำสั่งที่ช่วยให้งานทั่วไปง่ายขึ้นสำหรับ อุปกรณ์บางประเภท ลักษณะที่ลดความซับซ้อนคือลักษณะของ Home API และลักษณะของ Home API อื่นๆ ซึ่งใช้ได้กับทั้งอุปกรณ์ Matter และ Cloud-to-cloud
ลักษณะที่ลดความซับซ้อนจะเสนอชุดย่อยของแอตทริบิวต์และคำสั่งที่เป็นทางเลือก ซึ่งมีความเฉพาะเจาะจงกับอุปกรณ์มากกว่าแอตทริบิวต์และคำสั่งของลักษณะมาตรฐานที่เกี่ยวข้อง
ตัวอย่างเช่น ลักษณะ
LevelControl
มาตรฐานเป็นลักษณะทั่วไปที่ใช้ได้กับอุปกรณ์ทุกเครื่องที่มีการตั้งค่าที่เปลี่ยนแปลงอย่างต่อเนื่องในช่วงค่าตัวเลข
Brightness
เป็นลักษณะที่เรียบง่ายซึ่งใช้แทน LevelControl
และมีเฉพาะคำสั่งและแอตทริบิวต์ที่อุปกรณ์ DimmableLight
ต้องการ Brightness
มีคำสั่ง moveToBrightness
ที่รับอาร์กิวเมนต์ brightnessPercent
รายการเดียว ในขณะที่ LevelControl
มีคำสั่ง move
หลายรายการ ซึ่งส่วนใหญ่มีพารามิเตอร์อย่างน้อย 4 รายการเพื่อรองรับ Use Case ที่หลากหลายมากขึ้น
ตารางต่อไปนี้แสดงลักษณะที่ลดความซับซ้อนแต่ละรายการและลักษณะมาตรฐานพื้นฐาน ชื่อลักษณะแต่ละรายการจะลิงก์ไปยังเอกสารประกอบ API ที่เกี่ยวข้อง
ลักษณะที่เรียบง่าย | ลักษณะมาตรฐาน |
---|---|
SimplifiedThermostat
|
Thermostat
|
Brightness
|
LevelControl
|
SimplifiedOnOff
|
OnOff
|
Volume
|
LevelControl OnOff
|
แอตทริบิวต์ที่เรียบง่ายและ Discovery API
Discovery API จะรายงานลักษณะที่เรียบง่าย รวมถึงลักษณะมาตรฐานพื้นฐาน
ของลักษณะเหล่านั้น ตราบใดที่ลักษณะทั้ง 2 รายการลงทะเบียนไว้ใน
FactoryRegistry
ตัวอย่างเช่น หากมีDimmableLight
ในโครงสร้าง และนักพัฒนาแอปได้ลงทะเบียนทั้งลักษณะLevelControl
และBrightness
ในFactoryRegistry
Discovery API จะระบุว่ามีลักษณะทั้ง 2 อย่าง นักพัฒนาแอปอาจเลือกใช้ลักษณะใดลักษณะหนึ่งในการทำงานอัตโนมัติ
ดูข้อมูลเพิ่มเติมได้ที่ Discovery API ใน Android
ดึงข้อมูลอุปกรณ์ที่รองรับลักษณะที่ลดความซับซ้อน
เมื่อใช้ Device API เพื่อรับอุปกรณ์ในโครงสร้างที่รองรับลักษณะที่ลดความซับซ้อน เช่น SimplifiedThermostat
คุณจะใช้เมธอด has(trait)
ไม่ได้ แต่ให้ใช้วิธี has(deviceType)
แทน
val thermostat = home.devices().list().first { device -> device.has(ThermostatDevice) }