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