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

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

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

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

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

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

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

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

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

क्लस्टर

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

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

विशेषताएं

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

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

निर्देश

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

इवेंट

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

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

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

डिवाइस टाइप

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

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

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

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

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

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

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

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

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

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

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

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

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

ब्यौरे का क्लस्टर

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

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

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

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

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

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

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

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

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

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

पार्ट की सूची

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

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

आम तौर पर, अन्य एंडपॉइंट के PartsList खाली होते हैं. उदाहरण के लिए, किसी Temperature Sensor के लिए, Temperature Measurement Server Cluster का होना ज़रूरी है. इसके अलावा, किसी और चीज़ की ज़रूरत नहीं होती.

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


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