Home API สำหรับ Android จะแสดงอุปกรณ์ทั้งหมดในระบบนิเวศของ Google Home ในรูปแบบข้อมูลแบบรวม โมเดลข้อมูลนี้ครอบคลุมอุปกรณ์ทุกประเภท (จาก Google Nest หรือผู้ผลิตบุคคลที่สาม) ไม่ว่าจะเป็นเทคโนโลยีสมาร์ทโฮมที่สำคัญ (เช่น Matter หรือ Cloud-to-cloud) และมีแพลตฟอร์ม API ทั่วไปเพื่อสร้างประสบการณ์ของผู้ใช้สำหรับทั้งsmart homeและนักพัฒนาแอปบนอุปกรณ์เคลื่อนที่
ประเภทอุปกรณ์
ประเภทอุปกรณ์ที่แสดงใน Home API เป็นการรวมโมเดลข้อมูล Matter และ Cloud-to-cloud เข้าด้วยกัน บางประเภทมาจาก Matter โดยตรง บางประเภทเป็นส่วนขยายของประเภทอุปกรณ์ Matter และบางประเภทมาจาก Cloud-to-cloud
ประเภทอุปกรณ์ประกอบด้วยลักษณะที่ใช้ในการควบคุมและจัดการอุปกรณ์ ลักษณะต่างๆ จะได้มาจากคลัสเตอร์ Matter และลักษณะ Cloud-to-cloud เช่นเดียวกับประเภทอุปกรณ์ และจะแสดงในรูปแบบทั่วไปที่คล้ายกับคลัสเตอร์ Matter ใน Home API ลักษณะที่ได้มาจาก Matter จะเรียกว่าลักษณะ ไม่ใช่คลัสเตอร์
ด้วยเหตุนี้ ประเภทอุปกรณ์และลักษณะใน Home API จึงมีไว้สำหรับ Matter เป็นหลัก ประเภทอุปกรณ์หรือลักษณะของ Matter จะมีความสำคัญเหนือกว่าแอนะล็อกของ Cloud-to-cloud
ดูรายการประเภทอุปกรณ์และลักษณะเฉพาะได้ที่ประเภทอุปกรณ์ที่รองรับใน Android
ลักษณะเฉพาะ
ระบบจะสร้างลักษณะเวอร์ชัน Kotlin เพื่อใช้ใน Home API และมีฟีเจอร์เพิ่มเติมเฉพาะสำหรับ Home API (ไม่พบใน Matter หรือ Cloud-to-cloud) ตัวอย่างเช่น ลักษณะแต่ละรายการมีเมธอดสำหรับตรวจสอบว่าลักษณะรองรับแอตทริบิวต์หรือคำสั่งที่เฉพาะเจาะจงหรือไม่ ซึ่งจะเป็นประโยชน์เมื่อพิจารณาว่าสามารถอ่านสถานะหรือดำเนินการบางอย่างในอุปกรณ์ของผู้ใช้ได้หรือไม่ เนื่องจากอุปกรณ์บางเครื่องในประเภทอุปกรณ์อาจไม่มีฟีเจอร์เดียวกันทั้งหมด
ลักษณะแต่ละรายการจะอยู่ในเนมสเปซของตัวเองและต้องนำเข้าแยกกันเพื่อใช้งาน
ตัวอย่างเช่น หากต้องการใช้ลักษณะ Matter On/Off และประเภทอุปกรณ์ On/Off Plug-in Unit ให้นำเข้าแพ็กเกจต่อไปนี้ลงในแอปพลิเคชัน
import com.google.home.matter.standard.OnOff
import com.google.home.matter.standard.OnOffPluginUnitDevice
สำหรับประเภทอุปกรณ์โรงรถ (จากสมาร์ทโฮมของ Google) ให้รวมลักษณะของ Matter และ Google เข้าด้วยกัน ดังนี้
import com.google.home.google.LockUnlock
import com.google.home.matter.standard.DoorLock
import com.google.home.matter.standard.GoogleGarageDevice
Android Studio มีฟังก์ชันเติมข้อความอัตโนมัติและมักจะจัดการชื่อแพ็กเกจแบบเต็มให้คุณเมื่อเพิ่มบรรทัด import ลงในไฟล์ต้นฉบับในโปรเจ็กต์ อย่างไรก็ตาม ชื่อแพ็กเกจจะไม่สอดคล้องกันในอุปกรณ์ทุกประเภทและลักษณะเฉพาะ ดูข้อมูลอ้างอิงเพื่อยืนยันชื่อแพ็กเกจที่ถูกต้องสำหรับ DeviceType หรือ Trait แต่ละรายการ
ระบบรองรับลักษณะส่วนใหญ่สำหรับการใช้งานกับการทำงานอัตโนมัติ และลักษณะบางอย่างจะพร้อมใช้งานสำหรับการทำงานอัตโนมัติเท่านั้น ดูรายละเอียดเพิ่มเติมได้ที่การรองรับลักษณะของ Automation API ใน Android
องค์ประกอบประเภทอุปกรณ์
Home API รองรับคลัสเตอร์แอปพลิเคชัน Matter ส่วนใหญ่เป็นลักษณะเฉพาะในโมเดลข้อมูล คลัสเตอร์การกำหนดค่าระดับต่ำที่ไม่ได้ให้ประโยชน์โดยตรงแก่ผู้ใช้ปลายทาง เช่น Binding จะไม่แสดงผ่าน Home API
ลักษณะที่ได้มาจากลักษณะสมาร์ทโฮมของ Cloud-to-cloud มักจะมีชื่อเดียวกันระหว่าง Cloud-to-cloud กับ Home API เช่น ในตัวอย่างของ OpenClose ส่วนอื่นๆ จะแสดงเป็นส่วนขยายของลักษณะ Matter ซึ่งสร้างขึ้นโดยใช้ส่วนขยายเฉพาะของผู้ผลิต Matter ลักษณะเหล่านี้จะช่วยลดช่องว่างสำหรับลักษณะ smart home ซึ่งฟังก์ชันการทำงานจะแบ่งระหว่าง SDK ของ Matter และระบบนิเวศของ Google Home ตัวอย่างที่เจาะจงของกรณีนี้คือประเภทอุปกรณ์ Google* ซึ่งมาจาก Cloud-to-cloud แต่ยังไม่มีอุปกรณ์ที่เทียบเท่าใน Matter
ประเภทอุปกรณ์ประกอบด้วยลักษณะจากแหล่งที่มาอย่างใดอย่างหนึ่งหรือทั้ง 2 แหล่ง ได้แก่ Matter หรือ Cloud-to-cloud
ตัวอย่างเช่น ประเภทอุปกรณ์พัดลมประกอบด้วยทั้ง 2 อย่างและมีลักษณะ 3 อย่างดังนี้
- ลักษณะ
IdentifyMatter มีฟังก์ชันการทำงานทั้งหมดจาก MatterIdentify - ลักษณะ
FanControlMatter มีฟังก์ชันการทำงานทั้งหมดจากลักษณะ MatterFanControl - ลักษณะ
ExtendedFanControlของ Google มีฟังก์ชันการทำงานทั้งหมดจากลักษณะ smart homeFanSpeedของ Google ที่ไม่ครอบคลุมโดยลักษณะFanControlMatter
องค์ประกอบลักษณะประเภทนี้มีโมเดลที่ยืดหยุ่นสำหรับฟังก์ชันการทำงานของประเภทอุปกรณ์ที่สมบูรณ์ โดยสรุปโมเดลข้อมูล smart home ที่สำคัญ
กลุ่มอุปกรณ์
กลุ่มอุปกรณ์แสดงถึงคอลเล็กชันอุปกรณ์ที่ผู้ใช้กำหนดภายในโครงสร้างเดียว ระบบจะเก็บข้อมูลการเป็นสมาชิกกลุ่มไว้ในบริการของ Google และสมาชิกคนอื่นๆ ของบ้านและแอปอื่นๆ ที่มีสิทธิ์เข้าถึงบ้านจะเห็นข้อมูลดังกล่าว
กลุ่มอุปกรณ์จะแสดงด้วยเอนทิตี DeviceGroup ซึ่งแตกต่างจาก HomeDevice
HomeDevice แต่ละรายการจะแสดงกลุ่มที่ตนเองเป็นสมาชิกผ่านลักษณะ GroupMembership (แก้ไขแบบเชิงรับด้วย group.devices()) เพื่อให้แอปตรวจสอบการเป็นสมาชิกกลุ่มและทำซ้ำในอุปกรณ์ที่เป็นสมาชิกของกลุ่มได้โดยตรง นอกจากนี้ DeviceGroup ยังใช้อินเทอร์เฟซ PartsProvider เพื่อแสดงประเภทอุปกรณ์ที่อุปกรณ์สมาชิกของกลุ่มรองรับเมื่อกำหนดเป้าหมายทั้งกลุ่ม
ดูข้อมูลเพิ่มเติมเกี่ยวกับกลุ่มอุปกรณ์ได้ที่API โครงสร้างและควบคุมกลุ่มอุปกรณ์