เรามีลักษณะบางอย่างในเวอร์ชันที่เรียบง่ายเพื่อให้ใช้งานได้ง่ายกับ Automation API ใน Android
ลักษณะที่ลดความซับซ้อนจะแทนที่ลักษณะ Home API มาตรฐาน ซึ่งคล้ายกับวิธีที่ รูปแบบ Facade ทำงาน ลักษณะที่เรียบง่ายจะให้คำสั่งที่ช่วยให้งานทั่วไปง่ายขึ้นสำหรับ อุปกรณ์บางประเภท ลักษณะที่ลดความซับซ้อนคือลักษณะของ Home API และจะทำงานได้ทั้งกับอุปกรณ์ Matter และ Cloud-to-cloud เช่นเดียวกับลักษณะอื่นๆ ของ Home API
ลักษณะที่ลดความซับซ้อนจะเสนอชุดย่อยของแอตทริบิวต์และคำสั่งที่เป็นทางเลือก ซึ่งมีความเฉพาะเจาะจงกับอุปกรณ์มากกว่าแอตทริบิวต์และคำสั่งของลักษณะมาตรฐานที่เกี่ยวข้อง
ตัวอย่างเช่น ลักษณะ
LevelControl
มาตรฐานเป็นลักษณะทั่วไปที่ใช้ได้กับอุปกรณ์ทุกเครื่องที่มี
การตั้งค่าที่เปลี่ยนแปลงอย่างต่อเนื่องในช่วงค่าตัวเลข
Brightness เป็นลักษณะที่เรียบง่ายซึ่งใช้แทน LevelControl และมีเฉพาะคำสั่งและแอตทริบิวต์ที่อุปกรณ์ DimmableLight
ต้องการ Brightness มีคำสั่ง moveToBrightness ที่รับอาร์กิวเมนต์ brightnessPercent รายการเดียว ในขณะที่ LevelControl มีคำสั่ง move หลายรายการ ซึ่งส่วนใหญ่มีพารามิเตอร์อย่างน้อย 4 รายการเพื่อรองรับ Use Case ที่หลากหลายมากขึ้น
ตารางต่อไปนี้แสดงลักษณะที่ลดความซับซ้อนแต่ละรายการและลักษณะมาตรฐานพื้นฐาน ชื่อลักษณะแต่ละรายการจะลิงก์ไปยังเอกสารประกอบ API ที่เกี่ยวข้อง
| ลักษณะที่ลดความซับซ้อน | ลักษณะมาตรฐาน |
|---|---|
SimplifiedThermostat
|
Thermostat
|
Brightness
|
LevelControl
|
SimplifiedOnOff
|
OnOff
|
Volume
|
LevelControlOnOff
|
แอตทริบิวต์ที่เรียบง่ายและ 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) }