อุปกรณ์ใน Matter มีโมเดลข้อมูลที่กำหนดไว้อย่างดี (DM) ซึ่งเป็นโมเดลลำดับชั้นของฟีเจอร์ของอุปกรณ์ ที่ระดับบนสุดของลำดับชั้นนี้จะมีอุปกรณ์อยู่
อุปกรณ์และปลายทาง
อุปกรณ์ทั้งหมด ซึ่งรวมถึงสมาร์ทโฟนและผู้ช่วยในบ้าน จะประกอบขึ้นจาก โหนด1 โหนดคือทรัพยากรที่ระบุตัวตนได้อย่างแน่ชัดและระบุที่อยู่ในเครือข่ายได้ โดยที่ผู้ใช้มองว่ามีการทำงานโดยสมบูรณ์ในตัวเอง การสื่อสารของเครือข่ายใน Matter จะเริ่มต้นและสิ้นสุดที่โหนด
โหนดคือคอลเล็กชันของปลายทาง ปลายทางแต่ละปลายทางจะมีชุดฟีเจอร์อยู่ ตัวอย่างเช่น ปลายทางอาจเกี่ยวข้องกับฟังก์ชันการให้แสง ส่วนอีกอย่างหนึ่งเกี่ยวข้องกับการตรวจจับการเคลื่อนไหว และอีกดีลหนึ่งที่มียูทิลิตี เช่น OTA ของอุปกรณ์
![ลำดับชั้นของอุปกรณ์ โหนด และปลายทาง](https://developers.home.google.com/static/matter/primer/images/primer-device-node.png?authuser=0&hl=th)
บทบาทของโหนด
บทบาทของโหนดคือชุดของลักษณะการทำงานที่เกี่ยวข้อง แต่ละโหนดอาจมีบทบาทอย่างน้อย 1 บทบาท บทบาทของโหนดมีดังนี้
- Commissioner: โหนดที่ทำงานการจัดเตรียม
- ตัวควบคุม: โหนดที่ควบคุมโหนดได้อย่างน้อย 1 โหนด ตัวอย่างเช่น Google Home app (GHA), Google Assistant และ Google Nest Hub (2nd gen) อุปกรณ์บางประเภท เช่น สวิตช์เปิด/ปิดไฟ มีบทบาทตัวควบคุม
- ตัวควบคุม: โหนดที่ควบคุมโดยโหนดอย่างน้อย 1 โหนดได้ อุปกรณ์ส่วนใหญ่เป็น Controlee ได้ ยกเว้นอุปกรณ์บางประเภทที่มีบทบาทผู้ควบคุมข้อมูล เช่น สวิตช์เปิด/ปิดไฟ สวิตช์เปิด/ปิด สวิตช์สามารถใช้เป็นตัวควบคุมเท่านั้น ไม่สามารถเป็นผู้ควบคุมได้
- ผู้ให้บริการ OTA: โหนดที่สามารถให้การอัปเดตซอฟต์แวร์ OTA
- ผู้ขอ OTA: โหนดที่ขออัปเดตซอฟต์แวร์ OTA ได้
คลัสเตอร์
ภายในปลายทาง โหนดจะมีคลัสเตอร์อย่างน้อย 1 รายการ ซึ่งเป็นอีกขั้นตอนหนึ่งในลำดับชั้นของอุปกรณ์เนื่องจากจัดกลุ่มฟังก์ชันการทำงานเฉพาะ เช่น คลัสเตอร์ที่เปิด/ปิดบนปลั๊กอัจฉริยะ หรือคลัสเตอร์การควบคุมระดับบนปลายทางหลอดไฟหรี่แสงได้
โหนดอาจมีปลายทางได้หลายรายการ โดยแต่ละโหนดจะสร้างอินสแตนซ์ของฟังก์ชันการทำงานเดียวกัน เช่น หลอดไฟอาจเผยให้เห็นการควบคุมไฟแต่ละดวงหรือปลั๊กไฟอาจหลุดการควบคุมเต้ารับ
Attributes
ที่ระดับสุดท้าย เราจะพบแอตทริบิวต์ ซึ่งเป็นสถานะที่โหนดยึดไว้ เช่น แอตทริบิวต์ระดับปัจจุบันของคลัสเตอร์การควบคุมระดับ คุณอาจกำหนดแอตทริบิวต์เป็นข้อมูลประเภทต่างๆ เช่น uint8, สตริง หรืออาร์เรย์
![ลำดับชั้นของโหนด ปลายทาง แอตทริบิวต์ และคำสั่ง](https://developers.home.google.com/static/matter/primer/images/primer-node-endpoint-attribute.png?authuser=0&hl=th)
คำสั่ง
นอกจากแอตทริบิวต์แล้ว คลัสเตอร์ยังมีคำสั่ง ซึ่งเป็นการดำเนินการที่อาจทำได้ ซึ่งจะเทียบเท่าใน DM ของ Matter ของการเรียกใช้โพรซีเยอร์ระยะไกล คำสั่งมีลักษณะเหมือนกริยา เช่น ล็อกประตูบนคลัสเตอร์ล็อกประตู คำสั่งอาจสร้างคำตอบและผลลัพธ์ โดยใน Matter การตอบสนองดังกล่าวยังหมายถึงคำสั่งด้วย ซึ่งจะไปในทิศทางกลับกัน
กิจกรรม
สุดท้าย คลัสเตอร์อาจมีเหตุการณ์ด้วย ซึ่งถือได้ว่าเป็นบันทึกการเปลี่ยนแปลงสถานะในอดีต แม้ว่าแอตทริบิวต์จะแสดงถึงสถานะปัจจุบัน แต่เหตุการณ์คือบันทึกเหตุการณ์ที่ผ่านมา รวมถึงตัวนับที่เพิ่มขึ้น การประทับเวลา และลำดับความสำคัญ ซึ่งช่วยให้บันทึกการเปลี่ยนสถานะได้ รวมถึงการประมาณข้อมูล ที่ยังไม่บรรลุผลด้วยแอตทริบิวต์
![อุปกรณ์ตัวอย่างแบบเต็ม](https://developers.home.google.com/static/matter/primer/images/primer-device-type.png?authuser=0&hl=th)
ปลายทาง 0 สงวนไว้สำหรับคลัสเตอร์ยูทิลิตี คลัสเตอร์ยูทิลิตีคือคลัสเตอร์ที่เฉพาะเจาะจงที่รวมฟังก์ชันการทำงานของบริการในปลายทาง เช่น การค้นหา การกำหนดที่อยู่ การวินิจฉัย และการอัปเดตซอฟต์แวร์ ในทางตรงกันข้าม คลัสเตอร์แอปพลิเคชันรองรับการดำเนินการหลัก เช่น เปิด/ปิด หรือการวัดอุณหภูมิ
ประเภทอุปกรณ์
เมื่อผู้ผลิตอุปกรณ์วางแผนอุปกรณ์ใหม่แล้ว ควรรวมคลัสเตอร์ใดไว้บ้าง
ข้อกำหนดของ Matter กำหนดให้อุปกรณ์ใช้หรือขยายประเภทอุปกรณ์อย่างน้อย 1 ประเภท ประเภทอุปกรณ์คือคอลเล็กชันของคลัสเตอร์ที่จำเป็นและที่ไม่บังคับซึ่งระบุแอตทริบิวต์ระดับบนสุดของอุปกรณ์จริง เช่น ไฟหรี่ได้ ล็อกประตู หรือวิดีโอเพลเยอร์
เอกสารหลักของข้อมูลจำเพาะของ Matter ไม่ได้มีการระบุประเภทอุปกรณ์ แต่ระบุโดยเอกสารประกอบอย่างไลบรารีอุปกรณ์ ในทำนองเดียวกัน คลัสเตอร์แอปพลิเคชันทั้งหมดจะระบุไว้ในไลบรารีคลัสเตอร์ของแอปพลิเคชัน ดูเอกสารทั้ง 3 ประเภทได้ที่เว็บไซต์ของสมาชิก Connectivity Standards Alliance (Alliance)
ปลายทางแต่ละปลายทางที่ใช้งานประเภทอุปกรณ์ต้องใช้คลัสเตอร์ที่จำเป็นซึ่งจะกำหนดประเภทอุปกรณ์ดังกล่าว นอกเหนือจากคลัสเตอร์ที่จำเป็นแล้ว ปลายทางอาจใช้คลัสเตอร์เพิ่มเติม ซึ่งรวมถึงคลัสเตอร์ที่ไม่บังคับของประเภทอุปกรณ์อย่างน้อย 1 รายการ หรือแม้แต่คลัสเตอร์ที่ไม่ได้เป็นส่วนหนึ่งของประเภทอุปกรณ์ดังกล่าว
ไคลเอ็นต์และเซิร์ฟเวอร์
คลัสเตอร์อาจเป็นคลัสเตอร์ของไคลเอ็นต์หรือคลัสเตอร์เซิร์ฟเวอร์ก็ได้ แม้ว่าเซิร์ฟเวอร์จะเก็บสถานะและมีแอตทริบิวต์ เหตุการณ์ และคำสั่ง แต่ไคลเอ็นต์จะไม่เก็บสถานะ และมีหน้าที่เริ่มต้นการโต้ตอบกับคลัสเตอร์เซิร์ฟเวอร์ระยะไกล ซึ่งจะดำเนินการดังต่อไปนี้
- อ่านและเขียนไปยังแอตทริบิวต์ระยะไกล
- อ่านเหตุการณ์ระยะไกลของตัวเอง
- การเรียกใช้คำสั่งระยะไกล
แม้ว่า DM จะมีลําดับชั้นภายในโหนด แต่ความสัมพันธ์ระหว่างโหนดจะไม่เป็นแบบนั้น โหนดใน Matter ไม่มีความสัมพันธ์ระหว่างตัวควบคุม/อุปกรณ์ต่อพ่วงหรือผู้นำ/ผู้ติดตามในแนวตั้ง ในทางตรงกันข้าม ความสัมพันธ์จะเป็นแนวนอน โดยคลัสเตอร์อาจเป็นเซิร์ฟเวอร์หรือไคลเอ็นต์ก็ได้ ดังนั้น โหนดอาจเป็นทั้งเซิร์ฟเวอร์และไคลเอ็นต์ที่เกี่ยวข้องกับคลัสเตอร์และฟังก์ชันการทำงานที่ต่างกัน
เช่น เราอาจมีโคมไฟตั้งโต๊ะ 2 ดวง ได้แก่ โหนด A และโหนด B โหนดทั้ง 2 โหนดใช้ประเภทอุปกรณ์เปิด/ปิดไฟ อุปกรณ์ประเภทนี้มีคลัสเตอร์เปิด/ปิด เซิร์ฟเวอร์ที่ควบคุมเอาต์พุตแสงทางกายภาพที่เกี่ยวข้อง
แต่อุปกรณ์จริงของเราจะมีสวิตช์ ประเภทเปิด/ปิดสวิตช์สำหรับสวิตช์เปิด/ปิดในตัว ซึ่งเหมือนที่โคมไฟตั้งโต๊ะทั่วไปมี อุปกรณ์ประเภทนี้ต้องใช้คลัสเตอร์ไคลเอ็นต์เปิด/ปิด เพื่อให้สามารถควบคุมคลัสเตอร์ของเซิร์ฟเวอร์ได้
![หลอดไฟที่ใช้ทั้งไฟเปิด/ปิดและสวิตช์ไฟ](https://developers.home.google.com/static/matter/primer/images/primer-client-server.png?authuser=0&hl=th)
ในตัวอย่างนี้ คลัสเตอร์ของไคลเอ็นต์ที่เปิด/ปิดในโหนด A จะเปลี่ยนแอตทริบิวต์ของคลัสเตอร์เซิร์ฟเวอร์ที่เปิด/ปิดในโหนด A และโหนด B ในขณะที่คลัสเตอร์ไคลเอ็นต์ของโหนด B จะเปลี่ยนเฉพาะคลัสเตอร์ของเซิร์ฟเวอร์ในโหนด B เท่านั้น
ในส่วนถัดไป เราจะอธิบายวิธีการทำงานของคลัสเตอร์ของไคลเอ็นต์และเซิร์ฟเวอร์ นั่นคือโมเดลการโต้ตอบ
คลัสเตอร์ข้อบ่งชี้
ซึ่งเหมือนกับชื่อที่บอกไว้ เซิร์ฟเวอร์คลัสเตอร์ Descriptor จะให้ข้อมูลสรุป โดยจะอธิบายปลายทางที่แจกแจงข้อมูลต่อไปนี้
- คลัสเตอร์เซิร์ฟเวอร์
- คลัสเตอร์ไคลเอ็นต์
- ประเภทอุปกรณ์
- ปลายทางเพิ่มเติม หรือที่เรียกว่าชิ้นส่วน
อุปกรณ์ทุกประเภทต้องมีการใช้งานคลัสเตอร์ข้อบ่งชี้ รูทประเภทอุปกรณ์ จะกำหนดที่ปลายทาง 0 การอ่านคลัสเตอร์ Descriptor จะทำให้ไคลเอ็นต์มีระดับการเข้าถึงในการข้ามผ่านต้นไม้แบบเต็มของปลายทางที่มีอยู่และดำเนินการที่เกี่ยวข้อง
คณะกรรมาธิการหรืออุปกรณ์ควบคุม เช่น โทรศัพท์หรือฮับ สามารถใช้ข้อมูลที่พบในคลัสเตอร์คำอธิบายเพื่อจำลองอุปกรณ์ (ไฟ สวิตช์ ปั๊ม ตัวควบคุมอุณหภูมิ) และฟีเจอร์เฉพาะที่ใช้งานโดยอินสแตนซ์เฉพาะของอุปกรณ์นั้นๆ เพื่อแสดง UI ที่ถูกต้องแก่ผู้ใช้
คลัสเตอร์เซิร์ฟเวอร์
แอตทริบิวต์ ServerList
จะแสดงรายการคลัสเตอร์เซิร์ฟเวอร์ในปลายทาง
คลัสเตอร์ไคลเอ็นต์
แอตทริบิวต์ ClientList
จะแสดงรายการคลัสเตอร์ไคลเอ็นต์ในปลายทาง
รายการประเภทอุปกรณ์
แอตทริบิวต์ DeviceTypeList
คือรายการประเภทอุปกรณ์ที่ปลายทางรองรับ พร้อมการแก้ไขที่เกี่ยวข้อง โดยต้องมีประเภทอุปกรณ์อย่างน้อย 1 ประเภท
รายการส่วน
PartsList
มีรายการปลายทางที่ใช้สำหรับใช้งานอุปกรณ์ประเภทนี้
PartsList
ของปลายทาง 0 (โหนดราก) มีปลายทางทั้งหมดของอุปกรณ์นอกเหนือจากนั้น (ปลายทาง 0)
โดยปกติแล้ว PartsList
ของปลายทางอื่นๆ จะว่างเปล่า เช่น เซ็นเซอร์อุณหภูมิจะกำหนดให้คลัสเตอร์เซิร์ฟเวอร์การวัดอุณหภูมิทำงานแทน
อุปกรณ์ประเภทอื่นๆ อาจเขียนขึ้นในโครงสร้างแบบต้นไม้ของอินสแตนซ์ประเภทอุปกรณ์มากกว่า 1 อินสแตนซ์ เช่น ประเภทอุปกรณ์โปรแกรมเล่นวิดีโออาจประกอบด้วยทีวี วิดีโอเพลเยอร์ ลำโพง และประเภทอุปกรณ์แอปเนื้อหาประเภทต่างๆ โดยแต่ละประเภทอยู่ในปลายทางที่ต่างกัน
-
ข้อมูลจำเพาะของ Matter ระบุว่าอุปกรณ์อาจมีหลายโหนด ตัวอย่างเช่น สมาร์ทโฟนอาจมีแอปหลายแอป โดยแต่ละแอปจะเป็นโหนดที่ต่างกัน ตามวัตถุประสงค์ของการใช้งานเบื้องต้นนี้ อุปกรณ์ทุกเครื่องจะมี โหนดเดียว คาดว่าอุปกรณ์จริงส่วนใหญ่จะทำตามรูปแบบนี้↩