डिवाइस डेटा मॉडल

Matter में मौजूद डिवाइसों का डेटा मॉडल (डीएम) अच्छी तरह से तय होता है. यह डिवाइस की सुविधाओं का हैरारकी वाला मॉडलिंग होता है. इस हैरारकी के सबसे ऊपरी लेवल पर डिवाइस होता है.

डिवाइस और एंडपॉइंट

स्मार्टफ़ोन और होम असिस्टेंट के साथ-साथ सभी डिवाइसों में, नोड1 होते हैं. नोड, नेटवर्क में मौजूद एक ऐसा यूनीक संसाधन होता है जिसकी पहचान की जा सकती है और जिसे ऐक्सेस किया जा सकता है. उपयोगकर्ता, इसे पूरी तरह से फ़ंक्शनल मान सकता है. Matter में नेटवर्क कम्यूनिकेशन, किसी नोड से शुरू और खत्म होता है.

नोड, एंडपॉइंट का एक कलेक्शन होता है. हर एंडपॉइंट में एक सुविधा सेट होता है. उदाहरण के लिए, कोई एंडपॉइंट रोशनी की सुविधा से जुड़ा हो सकता है, जबकि कोई दूसरा गतिविधि का पता लगाने से जुड़ा हो सकता है. इसके अलावा, कोई दूसरा एंडपॉइंट उपयोगिता से जुड़ा हो सकता है, जैसे कि डिवाइस के लिए ओटीए (Over-The-Air) अपडेट.

डिवाइसों, नोड, और एंडपॉइंट की हैरारकी
पहला डायग्राम: डिवाइस, नोड, और एंडपॉइंट

नोड की भूमिकाएं

नोड की भूमिका, मिलते-जुलते व्यवहारों का एक सेट होता है. हर नोड में एक या उससे ज़्यादा भूमिकाएं हो सकती हैं. नोड की भूमिकाओं में ये शामिल हैं:

  • कमिश्नर: ऐसा नोड जो कमीशनिंग करता है.
  • कंट्रोलर: एक ऐसा नोड जो एक या उससे ज़्यादा नोड को कंट्रोल कर सकता है. उदाहरण के लिए, Google Home app (GHA), Google Assistant, और Google Nest Hub (2nd gen). चालू/बंद लाइट स्विच जैसे कुछ डिवाइसों की भूमिका कंट्रोलर होती है.
  • कंट्रोली: ऐसा नोड जिसे एक या उससे ज़्यादा नोड से कंट्रोल किया जा सकता है. ज़्यादातर डिवाइस, कंट्रोल किए जाने वाले डिवाइस के तौर पर काम कर सकते हैं. हालांकि, कुछ डिवाइसों को कंट्रोल करने वाले डिवाइस के तौर पर सेट किया जाता है. जैसे, रोशनी के चालू/बंद करने वाले स्विच. चालू/बंद करने वाला लाइट स्विच, सिर्फ़ एक कंट्रोलर हो सकता है. यह खाता, कंट्रोल किया जा सकने वाला खाता नहीं हो सकता.
  • ओटीए प्रोवाइडर: ऐसा नोड जो ओटीए सॉफ़्टवेयर अपडेट दे सकता है.
  • ओटीए अनुरोध करने वाला: ऐसा नोड जो ओटीए सॉफ़्टवेयर के अपडेट का अनुरोध कर सकता है.

क्लस्टर

किसी एंडपॉइंट में, किसी नोड में एक या उससे ज़्यादा क्लस्टर होते हैं. ये डिवाइस के लेआउट में एक और चरण हैं. ये किसी खास फ़ंक्शन को ग्रुप में बांटते हैं. जैसे, स्मार्ट प्लग पर चालू/बंद क्लस्टर या रोशनी को कम या ज़्यादा करने वाले एंडपॉइंट पर लेवल कंट्रोल क्लस्टर.

किसी नोड में कई एंडपॉइंट भी हो सकते हैं. हर एंडपॉइंट, एक ही फ़ंक्शन का इंस्टेंस बनाता है. उदाहरण के लिए, लाइट फ़िक्सचर में अलग-अलग लाइटों को कंट्रोल करने की सुविधा हो सकती है. इसके अलावा, पावर स्ट्रिप में अलग-अलग सॉकेट को कंट्रोल करने की सुविधा हो सकती है.

विशेषताएं

आखिरी लेवल पर, हमें एट्रिब्यूट दिखेंगे. ये ऐसे एट्रिब्यूट होते हैं जो नोड में सेव होते हैं. जैसे, लेवल कंट्रोल क्लस्टर का मौजूदा लेवल एट्रिब्यूट. एट्रिब्यूट को अलग-अलग डेटा टाइप के तौर पर तय किया जा सकता है. जैसे, uint8, स्ट्रिंग या ऐरे.

नोड, एंडपॉइंट, एट्रिब्यूट, और कमांड की हैरारकी
दूसरी इमेज: नोड, एंडपॉइंट, एट्रिब्यूट, और निर्देश

निर्देश

एट्रिब्यूट के अलावा, क्लस्टर में कमांड भी होते हैं. ये ऐसी कार्रवाइयां होती हैं जिन्हें किया जा सकता है. ये Matter के डीएम में, रिमोट प्रोसेस कॉल के बराबर होते हैं. निर्देश, क्रिया जैसे होते हैं. जैसे, दरवाज़े का लॉक दरवाज़े के लॉक क्लस्टर पर. निर्देशों से जवाब और नतीजे जनरेट हो सकते हैं. Matter में, ऐसे जवाबों को निर्देशों के तौर पर भी परिभाषित किया गया है.

इवेंट

आखिर में, क्लस्टर में इवेंट भी हो सकते हैं. इन्हें, राज्य के पिछले ट्रांज़िशन का रिकॉर्ड माना जा सकता है. एट्रिब्यूट, मौजूदा स्थिति दिखाते हैं, जबकि इवेंट पिछले समय की जानकारी देते हैं. साथ ही, इनमें लगातार बढ़ने वाला काउंटर, टाइमस्टैंप, और प्राथमिकता शामिल होती है. इनकी मदद से, स्टेटस ट्रांज़िशन को कैप्चर करने के साथ-साथ, ऐसा डेटा मॉडलिंग भी किया जा सकता है जो एट्रिब्यूट की मदद से आसानी से हासिल नहीं किया जा सकता.

डिवाइस का पूरा सैंपल
तीसरी इमेज: Matter डिवाइस इंटरैक्शन मॉडल
की हैरारकी का सैंपल

एंडपॉइंट 0, यूटिलिटी क्लस्टर के लिए रिज़र्व है. यूटिलिटी क्लस्टर, ऐसे खास क्लस्टर होते हैं जिनमें एंडपॉइंट पर सेवा देने की सुविधाएं शामिल होती हैं. जैसे, डिस्कवरी, पते की जानकारी, गड़बड़ी की जानकारी, और सॉफ़्टवेयर अपडेट. दूसरी ओर, ऐप्लिकेशन क्लस्टर, चालू/बंद या तापमान मेज़रमेंट जैसी मुख्य कार्रवाइयों के साथ काम करते हैं.

डिवाइस टाइप

डिवाइस मैन्युफ़ैक्चरर के नए डिवाइस के प्लान के तौर पर, कुल मिलाकर किन क्लस्टर कॉम्बिनेशन को शामिल किया जाना चाहिए?

Matter स्पेसिफ़िकेशन के मुताबिक, डिवाइस में एक या उससे ज़्यादा डिवाइस टाइप लागू करने या उन्हें एक्सटेंड करने की ज़रूरत होती है. डिवाइस टाइप, ज़रूरी और वैकल्पिक क्लस्टर का एक कलेक्शन होता है. इससे किसी फ़िज़िकल डिवाइस के टॉप-लेवल एट्रिब्यूट के बारे में पता चलता है. जैसे, कम रोशनी करने वाली लाइट, दरवाज़े का लॉक या वीडियो प्लेयर.

डिवाइस टाइप, Matter स्पेसिफ़िकेशन के मुख्य दस्तावेज़ में नहीं बताए जाते, बल्कि साथ में दिए गए दस्तावेज़ में बताए जाते हैं: डिवाइस लाइब्रेरी. इसी तरह, सभी ऐप्लिकेशन क्लस्टर ऐप्लिकेशन क्लस्टर लाइब्रेरी में तय किए जाते हैं. ये तीन दस्तावेज़, Connectivity Standards Alliance (Alliance) पैसे चुकाकर बने सदस्यों की वेबसाइट पर देखे जा सकते हैं.

किसी डिवाइस टाइप को लागू करने वाले हर एंडपॉइंट को, उस डिवाइस टाइप को तय करने वाले ज़रूरी क्लस्टर लागू करने होंगे. ज़रूरी क्लस्टर के अलावा, एंडपॉइंट में अन्य क्लस्टर भी लागू किए जा सकते हैं. इनमें डिवाइस टाइप के एक या एक से ज़्यादा वैकल्पिक क्लस्टर या ऐसे क्लस्टर भी शामिल हो सकते हैं जो डिवाइस टाइप का हिस्सा नहीं हैं.

क्लाइंट और सर्वर

क्लस्टर, क्लाइंट क्लस्टर या सर्वर क्लस्टर हो सकते हैं. सर्वर स्टेटफ़ुल होता है और इसमें एट्रिब्यूट, इवेंट, और निर्देश होते हैं. वहीं, क्लाइंट स्टेटलेस होता है और इसकी ज़िम्मेदारी किसी रिमोट सर्वर क्लस्टर के साथ इंटरैक्शन शुरू करना होता है. इसके लिए, क्लाइंट ये काम करता है:

  • अपने रिमोट एट्रिब्यूट से रीड करता है और उनमें लिखता है.
  • अपने रिमोट इवेंट रीड करता है.
  • रिमोट कमांड का इस्तेमाल किया जा सकता है.

किसी नोड में डीएम का क्रम तय होता है, लेकिन नोड के बीच ऐसा नहीं होता. Matter में मौजूद नोड, वर्टिकल कंट्रोलर/पैरफ़िरियल या लीडर/फ़ॉलोअर रिलेशनशिप नहीं रखते. इसके उलट, क्लस्टर के बीच का संबंध हॉरिज़ॉन्टल होता है: कोई भी क्लस्टर सर्वर या क्लाइंट हो सकता है. इसलिए, अलग-अलग क्लस्टर और फ़ंक्शन के हिसाब से, कोई नोड सर्वर और क्लाइंट, दोनों हो सकता है.

उदाहरण के लिए, हमारे पास दो टेबल लैंप हो सकते हैं: नोड A और नोड B. दोनों नोड, लाइट चालू/बंद डिवाइस टाइप को लागू करते हैं. इस डिवाइस टाइप में एक चालू/बंद करने वाला सर्वर क्लस्टर शामिल होता है, जो अपने लाइट आउटपुट को कंट्रोल करता है.

हालांकि, हमारे फ़िज़िकल डिवाइसों में, स्थानीय चालू/बंद स्विच के लिए, चालू/बंद लाइट स्विच डिवाइस टाइप भी शामिल होगा. यह वैसा ही होगा जैसा आम टेबल लैंप में होता है. इस डिवाइस टाइप के लिए, चालू/बंद क्लाइंट क्लस्टर लागू करना ज़रूरी है, ताकि वह सर्वर क्लस्टर को कंट्रोल कर सके.

ऐसे लैंप जिनमें लाइट चालू/बंद करने की सुविधा और लाइट स्विच, दोनों मौजूद हैं
चौथी इमेज: क्लाइंट और सर्वर क्लस्टर

इस सैंपल में, नोड A पर मौजूद चालू/बंद क्लाइंट क्लस्टर, नोड A और नोड B पर मौजूद चालू/बंद सर्वर क्लस्टर के एट्रिब्यूट बदल रहा है. वहीं, नोड B का क्लाइंट क्लस्टर सिर्फ़ नोड B पर मौजूद सर्वर क्लस्टर को बदल रहा है.

अगले सेक्शन में, हम क्लाइंट और सर्वर क्लस्टर के इंटरैक्ट करने के तरीके के बारे में बताएंगे: इंटरैक्शन मॉडल.

डिस्क्रिप्टर क्लस्टर

जैसा कि नाम से पता चलता है, डिस्क्रिप्टर क्लस्टर सर्वर, अंदरूनी जानकारी देता है. यह एंडपॉइंट के बारे में बताता है. इसमें ये जानकारी शामिल होती है:

  • सर्वर क्लस्टर.
  • क्लाइंट क्लस्टर.
  • डिवाइस के टाइप.
  • अन्य एंडपॉइंट, जिन्हें पार्ट कहा जाता है.

हर डिवाइस टाइप के लिए, डिस्क्रिप्टर क्लस्टर लागू करना ज़रूरी है. रूट डिवाइस टाइप, एंडपॉइंट 0 पर तय किया जाता है. इसके डिस्क्रिप्टर क्लस्टर को पढ़ने से, क्लाइंट को उपलब्ध एंडपॉइंट के पूरे ट्री को ट्रैवर्स करने और लागू होने वाली कार्रवाइयां करने की सुविधा मिलेगी.

डिवाइस (लाइट, स्विच, पंपा, थर्मोस्टैट) और डिवाइस के उस खास इंस्टेंस की लागू की गई खास सुविधाओं को मॉडल करने के लिए, कमिश्नर या फ़ोन या हब जैसे कंट्रोल करने वाले डिवाइस, डिस्क्रिप्टर क्लस्टर पर मौजूद जानकारी का इस्तेमाल कर सकते हैं. इससे उपयोगकर्ता को सही यूज़र इंटरफ़ेस (यूआई) दिखता है.

सर्वर क्लस्टर

ServerList एट्रिब्यूट, एंडपॉइंट में क्लस्टर सर्वर की सूची दिखाता है.

क्लाइंट क्लस्टर

ClientList एट्रिब्यूट, एंडपॉइंट में क्लस्टर क्लाइंट की सूची दिखाता है.

डिवाइस टाइप की सूची

DeviceTypeList एट्रिब्यूट, एंडपॉइंट के साथ काम करने वाले डिवाइस टाइप की सूची है. साथ ही, इसमें उनमें किए गए बदलावों की जानकारी भी होती है. इसमें कम से कम एक डिवाइस टाइप होना चाहिए.

पार्ट की सूची

PartsList में, इस डिवाइस टाइप को लागू करने के लिए इस्तेमाल किए गए एंडपॉइंट की सूची होती है.

एंडपॉइंट 0 (रूट नोड) के PartsList में, डिवाइस के सभी एंडपॉइंट शामिल होते हैं. हालांकि, इसमें एंडपॉइंट 0 शामिल नहीं होता.

आम तौर पर, दूसरे एंडपॉइंट का PartsList खाली होगा. उदाहरण के लिए, तापमान सेंसर के लिए, तापमान मापने वाले सर्वर क्लस्टर की ज़रूरत होती है, इसके अलावा कुछ और नहीं.

अन्य डिवाइस टाइप, एक से ज़्यादा डिवाइस टाइप इंस्टेंस के ट्री स्ट्रक्चर में बनाए जा सकते हैं. उदाहरण के लिए, वीडियो प्लेयर डिवाइस टाइप में टीवी, वीडियो प्लेयर, स्पीकर, और कॉन्टेंट ऐप्लिकेशन के अलग-अलग डिवाइस टाइप शामिल हो सकते हैं. ये सभी अलग-अलग एंडपॉइंट पर मौजूद होते हैं.


  1. Matter स्पेसिफ़िकेशन से पता चलता है कि किसी डिवाइस में एक से ज़्यादा नोड हो सकते हैं. उदाहरण के लिए, स्मार्टफ़ोन में कई ऐप्लिकेशन हो सकते हैं. हर ऐप्लिकेशन एक अलग नोड होता है. इस प्राइमर के लिए, सभी डिवाइसों में एक नोड होगा. उम्मीद है कि ज़्यादातर फ़िज़िकल डिवाइसों में यह पैटर्न दिखेगा.