Matter वर्चुअल डिवाइस बनाएं

1. परिचय

Matter, एक कनेक्टिविटी प्रोटोकॉल है. इससे स्मार्ट डिवाइसों को डेवलप करने के लिए कई बेहतरीन मौके मिलते हैं. इस कोडलैब में, Matter SDK के संसाधनों का इस्तेमाल करके अपना पहला Matter डिवाइस बनाया जाएगा.

Matter के बारे में जानने के लिए, Google Home Developer Center या Connectivity Standards Alliance की वेबसाइट पर जाएं.

आपको क्या सीखने को मिलेगा

  • Matter बिल्ड एनवायरमेंट सेट अप करने का तरीका
  • अपने कंप्यूटर पर चलने वाला वर्चुअल Matter डिवाइस कैसे बनाएं
  • Google Home की मदद से, वर्चुअल Matter डिवाइस को कमीशन और कंट्रोल करने का तरीका

आपको किन चीज़ों की ज़रूरत होगी

2. अपना एनवायरमेंट सेट अप करने का तरीका

अपने हार्डवेयर की जांच करना

Docker के इस इंस्टॉलेशन के साथ, Windows और macOS कंप्यूटर इस्तेमाल नहीं किए जा सकते. macOS पर Matter को मैन्युअल तरीके से इंस्टॉल और बिल्ड किया जा सकता है.

साथ ही, इन निर्देशों में यह माना गया है कि आपकी Linux मशीन पर X11 विंडो सिस्टम चल रहा है. अगर आपका Linux मशीन Wayland पर काम करता है, तो पक्का करें कि X.Org भी इंस्टॉल हो.

डेवलपमेंट एनवायरमेंट सेट अप करना

  1. Docker Engine इंस्टॉल करें. Docker Desktop का इस्तेमाल न करें.
  2. Matter SDK को क्लोन करें. साथ ही, उस कमिट को नोट करें जिसका इस्तेमाल हम यहां कर रहे हैं.
    git clone https://github.com/project-chip/connectedhomeip.git
    cd connectedhomeip
    git show
    commit f2f3d0eb03ba5bea32b22f19982c402a8c1c9063
    
  3. एसडीके की सार्वजनिक सीआई इमेज का इस्तेमाल करके, बिल्ड कंटेनर चलाएं. साथ ही, इस कंटेनर के अंदर से नए वर्चुअल डिवाइस को एक्ज़ीक्यूट करें. एसडीके के हमारे वर्शन से मेल खाने वाली इमेज ढूंढें. जैसे:
    buildimage=$(grep chip-build .github/workflows/chef.yaml | head -n 1 | awk '{print $2}')
    echo $buildimage
    
    अगर एक ही कमिट का इस्तेमाल किया जा रहा है, तो आपको यह मैसेज दिखेगा ghcr.io/project-chip/chip-build:66सबसे पहले, xhost पोर्ट फ़ॉरवर्ड करें, ताकि हम बाद में यूज़र इंटरफ़ेस (यूआई) ऐप्लिकेशन का इस्तेमाल कर सकें:
    xhost local:1000
    
    इसके बाद, होस्ट से फ़ॉरवर्ड किए गए ज़रूरी संसाधनों (हमारे एसडीके चेकआउट, नेटवर्किंग, और डिसप्ले/कम्यूनिकेशन संसाधन) के साथ कंटेनर शुरू करें.
    docker run -it --ipc=host --net=host -e DISPLAY --name matter-container --mount source=$(pwd),target=/workspace,type=bind   --workdir="/workspace" $buildimage /bin/bash
    

आइए, डॉकर कमांड और उसमें पास किए गए विकल्पों के बारे में जानते हैं:

  • xhost local:1000, X Window System को पोर्ट 1000 पर लोकल होस्ट से कनेक्शन पाने की अनुमति देता है. इससे ग्राफ़िक यूज़र इंटरफ़ेस का इस्तेमाल किया जा सकता है.
  • docker run … image दी गई इमेज को चलाता है. अगर ज़रूरी हो, तो इसे Docker रजिस्ट्री से खींचता है.
  • --ipc=host से Docker को, इंटरप्रोसेस कम्यूनिकेशन नेमस्पेस को आपकी होस्ट मशीन के साथ शेयर करने की अनुमति मिलती है.
  • --net=host से Docker को कंटेनर के अंदर होस्ट के नेटवर्क स्टैक का इस्तेमाल करने की अनुमति मिलती है. ऐसा इसलिए ज़रूरी है, ताकि वह होस्ट से कंटेनर तक mDNS ट्रैफ़िक को पास कर सके और होस्ट के X11 डिसप्ले को शेयर कर सके.
  • -e DISPLAY, $DISPLAY को होस्ट पर एक्सपोर्ट करता है. इससे होस्ट को आपके सिस्टम के ग्राफ़िक इंटरफ़ेस का ऐक्सेस मिल जाता है. Matter क्लस्टर में बदलाव करते समय, ZAP टूल को चलाने के लिए इसकी ज़रूरत होती है.
  • -it, बैकग्राउंड प्रोसेस के तौर पर चलने के बजाय, इंटरैक्टिव टर्मिनल (tty) के साथ Docker चलाता है.
  • --mount, उस एसडीके को कंटेनर में माउंट करता है जिसे हमने पहले चेक आउट किया था.
  • --workdir लॉन्च के समय, वर्किंग डायरेक्ट्री को हमारी माउंट की गई एसडीके डायरेक्ट्री पर सेट करता है.

आपके पास दूसरा टर्मिनल सेशन इंस्टेंस चलाने का विकल्प होता है:

user@host> docker exec -it matter-container /bin/bash
$

Matter Docker कंटेनर को बंद और चालू करना

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

इस वजह से, कंटेनर बनाने के बाद, अपने काम को खोने से बचाने के लिए कंटेनर को बंद किया जा सकता है.

user@host> docker stop matter-container

जब आपको कंटेनर को फिर से चलाना हो, तब कंटेनर शुरू करें और टर्मिनल विंडो खोलें:

user@host> docker start matter-container
user@host> docker exec -it matter-container /bin/bash

इनकी मदद से, अपने कंटेनर में टर्मिनल के अतिरिक्त सेशन खोले जा सकते हैं:

user@host> docker exec -it matter-container /bin/bash

इसके अलावा, रूट सेशन शुरू करने के लिए, इनमें से किसी एक का इस्तेमाल करें:

user@host> docker exec -u 0 -it matter-container /bin/bash

Matter डिवाइस का शुरुआती सेटअप

एसडीके टूल को शुरू करना

Matter SDK को शुरू करें. इस प्रोसेस को पूरा होने में कुछ समय लगेगा.

source scripts/bootstrap.sh
python3 scripts/checkout_submodules.py --shallow --platform linux

आपका Matter SDK अब शुरू हो गया है. आने वाले समय में एनवायरमेंट को तुरंत फिर से शुरू करने के लिए, यह कमांड चलाएं:

sudo docker exec -it  matter-container /bin/bash
source ./scripts/activate.sh

होस्ट और कंटेनर के बीच फ़ाइलें शेयर करना

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

आम तौर पर, बाइंड माउंट का इस्तेमाल करने के लिए, अपने कंटेनर को --mount source=$(pwd),target=/workspace,type=bind आर्ग्युमेंट के साथ चलाएं. इससे आपकी मौजूदा वर्किंग डायरेक्ट्री, कंटेनर में /workspace पर माउंट हो जाएगी.

user@host> docker run -it --ipc=host --net=host -e DISPLAY --name matter-container --mount source=$(pwd),target=/workspace,type=bind us-docker.pkg.dev/nest-matter/docker-repo/virtual-device-image:latest

माउंट की गई डायरेक्ट्री पर कंटेनर उपयोगकर्ता की अनुमतियां, होस्ट में मैनेज की जानी चाहिए.

कंटेनर के उपयोगकर्ता का ग्रुप आईडी, कंटेनर से ही पाएं.

$ id
uid=1000(matter) gid=1000(matter) groups=1000(matter)

कंटेनर होस्ट पर कोई दूसरा टर्मिनल सेशन खोलें और वर्किंग डायरेक्ट्री को कंटेनर से माउंट की गई डायरेक्ट्री पर सेट करें.

माउंट की गई डायरेक्ट्री में मौजूद फ़ाइलों के लिए, कंटेनर उपयोगकर्ता के ग्रुप को ग्रुप के तौर पर सेट करता है.

user@host> sudo chgrp -R 1000 .

ग्रुप को डायरेक्ट्री में अपनी पसंद की अनुमतियां दें. इस उदाहरण में, कंटेनर के उपयोगकर्ता के ग्रुप को माउंट की गई डायरेक्ट्री की सभी फ़ाइलों को पढ़ने, लिखने, और एक्ज़ीक्यूट करने की अनुमतियां दी गई हैं.

user@host> sudo chmod -R g+rwx .

ध्यान दें कि इन कमांड से, होस्ट उपयोगकर्ता की बनाई गई नई फ़ाइलों की अनुमति पर कोई असर नहीं पड़ता. होस्ट में बनाई गई नई फ़ाइलों की अनुमतियां, ज़रूरत के मुताबिक अपडेट करना न भूलें.

कंटेनर उपयोगकर्ता के बनाए गए फ़ाइलों की अनुमतियां पाने के लिए, अपने होस्ट उपयोगकर्ता को कंटेनर उपयोगकर्ता के ग्रुप में जोड़ा जा सकता है.

user@host> currentuser=$(whoami)
user@host> sudo usermod -a -G 1000 $currentuser

3. Google Home Developer Console

Google Home Developer Console एक वेब ऐप्लिकेशन है. इसकी मदद से, Google Home के साथ Matter इंटिग्रेशन को मैनेज किया जाता है.

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

डेवलपर प्रोजेक्ट बनाना

शुरू करने के लिए, Google Home Developer Console पर जाएं:

  1. प्रोजेक्ट बनाएं पर क्लिक करें.
  2. प्रोजेक्ट का कोई यूनीक नाम डालें. इसके बाद, प्रोजेक्ट बनाएं पर क्लिक करें. 'नया प्रोजेक्ट बनाएं' डायलॉग
  3. + इंटिग्रेशन जोड़ें पर क्लिक करें. इससे आपको Matter के संसाधन स्क्रीन पर ले जाया जाएगा. यहां Matter डेवलपमेंट से जुड़े दस्तावेज़ देखे जा सकते हैं. साथ ही, कुछ टूल के बारे में पढ़ा जा सकता है.
  4. जब आप आगे बढ़ने के लिए तैयार हों, तो अगला: डेवलप करें पर क्लिक करें. इससे Matter चेकलिस्ट पेज दिखता है.
  5. आगे बढ़ें: सेटअप करें पर क्लिक करें
  6. सेटअप पेज पर, अपने प्रॉडक्ट का नाम डालें.
  7. डिवाइस टाइप चुनें पर क्लिक करें. इसके बाद, ड्रॉप-डाउन मेन्यू से डिवाइस टाइप चुनें. इस मामले में, Light को चुना गया है.
  8. वेंडर आईडी (वीआईडी) में, Test VID को चुनें. इसके बाद, Test VID ड्रॉप-डाउन मेन्यू से 0xFFF1 को चुनें. प्रॉडक्ट आईडी (पीआईडी) में 0x8000 डालें. इसके बाद, सेव करें और जारी रखें पर क्लिक करें. इसके बाद, अगले पेज पर सेव करें पर क्लिक करें. वीआईडी/पीआईडी की इन वैल्यू का इस्तेमाल करें. बाद में, कोडलैब के चरण इन पर निर्भर करते हैं.
    प्रोजेक्ट सेट अप करना
  9. अब आपको Matter इंटिग्रेशन में अपना इंटिग्रेशन दिखेगा.
  10. अपने हब को रीबूट करें, ताकि यह पक्का किया जा सके कि उसे Matter इंटिग्रेशन प्रोजेक्ट का सबसे नया कॉन्फ़िगरेशन मिल रहा है. अगर आपको बाद में वीआईडी या पीआईडी बदलना है, तो बदलाव लागू करने के लिए, प्रोजेक्ट को सेव करने के बाद आपको रीबूट भी करना होगा. रीबूट करने के सिलसिलेवार निर्देशों के लिए, Google Nest या Google Wifi डिवाइसों को रीस्टार्ट करना लेख पढ़ें.

4. डिवाइस बनाना

Matter के सभी उदाहरण, Github रिपॉज़िटरी में मौजूद examples फ़ोल्डर में मिल जाएंगे. कई सैंपल उपलब्ध हैं, लेकिन इस कोडलैब में हमारा फ़ोकस Chef पर है.

Chef, ये दोनों हैं:

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

Chef के उदाहरण वाले फ़ोल्डर पर जाएं और अपना पहला Matter डिवाइस बनाएं:

$ cd examples/chef
$ ./chef.py -zbr -d rootnode_dimmablelight_bCwGYSDpoe -t linux

शेफ़ के पास कुछ विकल्प होते हैं. इन्हें chef.py -h चलाकर देखा जा सकता है. यहां हम इन विकल्पों का इस्तेमाल कर रहे हैं:

  • -d: इससे इस्तेमाल किए जाने वाले डिवाइस टाइप के बारे में पता चलता है. इस मामले में, हम चालू/बंद करने और लेवल कंट्रोल करने की सुविधा वाला एक लाइटिंग ऐप्लिकेशन बना रहे हैं.
  • -z: यह डिवाइस टाइप को लागू करने वाली सोर्स फ़ाइलें जनरेट करने के लिए, ZAP टूल को चालू करता है. इसका मतलब है कि आपने जिस लाइटिंग को चुना है उसके आधार पर, ZAP अपने-आप ऐसा कोड बनाएगा जिसे बिल्ड में शामिल किया जा सकता है. यह कोड, लाइट (डेटा मॉडल) और उसके अन्य डिवाइसों (इंटरैक्शन मॉडल) के साथ इंटरैक्ट करने के तरीके को तय करता है.
  • -b: बनाता है.
  • -r: [ज़रूरी नहीं] यह वर्चुअल Matter डिवाइस पर RPC सर्वर को चालू करता है, ताकि अन्य कॉम्पोनेंट (जैसे कि GUI), डिवाइस के साथ कम्यूनिकेट कर सकें. इससे डेटा मॉडल एट्रिब्यूट सेट किए जा सकते हैं और उन्हें वापस पाया जा सकता है.
  • -t linux: टारगेट प्लैटफ़ॉर्म. linux, nrfconnect, और esp32 प्लैटफ़ॉर्म पर यह सुविधा काम करती है. उपलब्ध सभी निर्देश और टारगेट किए जा सकने वाले प्लैटफ़ॉर्म देखने के लिए, ./chef.py -h चलाएं. linux का इस्तेमाल वर्चुअल Matter डिवाइसों के लिए किया जाता है.

डिवाइस को चालू करें

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

कंटेनर में वर्चुअल डिवाइस को इन सुविधाओं के साथ चलाएं:

$ ./linux/out/rootnode_dimmablelight_bCwGYSDpoe
   [1648589956496] [14264:16538181] CHIP: [DL] _Init]
...
[1648562026.946882][433632:433632] CHIP:SVR: SetupQRCode: [MT:Y3.13Y2N00KA0648G00]
[1648562026.946893][433632:433632] CHIP:SVR: Copy/paste the below URL in a browser to see the QR Code:
[1648562026.946901][433632:433632] CHIP:SVR: https://project-chip.github.io/connectedhomeip/qrcode.html?data=MT%3AY3.13Y2N00KA0648G00
[1648562026.946915][433632:433632] CHIP:SVR: Manual pairing code: [34970112332]

अपने डिवाइस को चालू रखें. अब हम Google Home ऐप्लिकेशन पर ध्यान देंगे, ताकि हम आपके डिवाइस को Google Home में शामिल कर सकें.

डिवाइस को बंद करना

अगर आपको डिवाइस को रोकना है, तो CTRL+C दबाकर प्रोग्राम से बाहर निकलें. अगर ऐप्लिकेशन बंद नहीं होता है, तो आपको CTRL+\ का भी इस्तेमाल करना पड़ सकता है.

आपके वर्चुअल डिवाइस के क्रेडेंशियल, /tmp/ डायरेक्ट्री में सेव होते हैं. ये क्रेडेंशियल, chip प्रीफ़िक्स से शुरू होने वाली फ़ाइलों में सेव होते हैं.

अगर आपको कमीशनिंग की पूरी प्रोसेस फिर से शुरू करनी है, तो आपको इन फ़ाइलों को मिटाना होगा. इसके लिए, यह कमांड चलाएं:

$ rm /tmp/chip*

5. डिवाइस को सेट अप करना

ध्यान दें: यह चरण सिर्फ़ तब पूरा होगा, जब आपने Google Home Developer Console में पहले से ही अपना प्रोजेक्ट सेट अप किया हो.

Nest Hub

Matter फ़ैब्रिक पर अपने डिवाइस को चालू करने के लिए, हब की ज़रूरत होती है. यह Google Nest डिवाइस है, जैसे कि Nest Hub (दूसरा जनरेशन). यह Matter के साथ काम करता है. यह Thread की सुविधा वाले डिवाइसों के लिए बॉर्डर राऊटर के तौर पर काम करेगा. साथ ही, स्मार्ट होम इंटेंट को राउट करने के लिए, लोकल फ़ुलफ़िलमेंट पाथ के तौर पर भी काम करेगा.

Matter के साथ काम करने वाले हब की जानकारी के लिए, यह सूची देखें.

डिवाइस को चालू करने की प्रोसेस शुरू करने से पहले, पक्का करें कि:

  • आपका हब उसी Google खाते से जुड़ा हो जिसका इस्तेमाल आपने Google Home Console में साइन इन करने के लिए किया था.
  • आपका हब उसी वाई-फ़ाई नेटवर्क से कनेक्ट हो जिससे वर्चुअल Matter डिवाइस को चलाने के लिए इस्तेमाल किया जा रहा कंप्यूटर कनेक्ट है.
  • आपका हब उसी स्ट्रक्चर में हो जिसका इस्तेमाल Google Home ऐप्लिकेशन पर किया जा रहा है. Google Home Graph में "घर" आपके स्ट्रक्चर को दिखाता है.

क्यूआर कोड पाना

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

कमीशन से जुड़ी कार्रवाई करना

  1. Google Home ऐप्लिकेशन खोलें.
  2. सबसे ऊपर बाएं कोने में मौजूद, + पर टैप करें.
  3. डिवाइस सेट अप करें पर टैप करें।
  4. नया डिवाइस पर टैप करें.
  5. अपना होम चुनें और आगे बढ़ें पर टैप करें.
  6. Google Home ऐप्लिकेशन, आपके डिवाइस को स्कैन करता है. अगर आपको "Matter डिवाइस मिला..." मैसेज दिखता है, तो ‘हां' पर टैप करें. अगर ऐसा नहीं है, तो कोई दूसरा डिवाइस सेट अप करें पर टैप करें. इसके बाद, डिवाइसों की सूची में से Matter डिवाइस को चुनें.
  7. अपने कैमरे को डिवाइस के क्यूआर कोड या वेबसाइट से जनरेट हुए क्यूआर कोड के सामने ले जाएं.
  8. Google Home ऐप्लिकेशन में दिए गए निर्देशों के मुताबिक, डिवाइसों को जोड़ने की प्रोसेस जारी रखें.

इन चरणों को पूरा करने के बाद, Matter वर्चुअल डिवाइस को कमीशन कर दिया जाएगा. साथ ही, यह Google Home ऐप्लिकेशन में एक नए आइकॉन के तौर पर दिखेगा.

Google Home ऐप्लिकेशन पर जोड़ा गया बल्ब

समस्या का हल

"कनेक्टिविटी की समस्या" या "Google से संपर्क नहीं किया जा सका" गड़बड़ी के मैसेज मिलने पर, डिवाइस को चालू नहीं किया जा सकता

  • पक्का करें कि आपने Google Home Console में, सही वीआईडी/पीआईडी कॉम्बिनेशन वाला प्रोजेक्ट बनाया हो. साथ ही, आपके पास ऐसे दूसरे प्रोजेक्ट न हों जो इसी वीआईडी/पीआईडी कॉम्बिनेशन का इस्तेमाल कर रहे हों.

"आपके डिवाइस को स्कैन किया जा रहा है" मैसेज लंबे समय तक दिखने के बाद, कमीशनिंग नहीं हो पाती

6. डिवाइस को कंट्रोल करना

Matter की सुविधा वाला डिवाइस चालू होने के बाद, Google Home ऐप्लिकेशन में लाइट बल्ब के तौर पर दिखता है. इसके बाद, डिवाइस को अलग-अलग तरीकों से कंट्रोल किया जा सकता है:

  • Google Assistant का इस्तेमाल करके.
  • Google Home ऐप्लिकेशन का इस्तेमाल करके.

Google Assistant

अपने फ़ोन या हब पर Google Assistant का इस्तेमाल करके, बोलकर दिए गए निर्देशों से डिवाइस की स्थिति को टॉगल करें. जैसे, "Ok Google, मेरी लाइटें टॉगल करो" कहें.

कमांड के ज़्यादा उदाहरण देखने के लिए, Google Home ऐप्लिकेशन में जोड़े गए स्मार्ट होम डिवाइसों को कंट्रोल करना लेख में, बोलकर दिए जाने वाले निर्देशों से स्मार्ट होम डिवाइसों को कंट्रोल करना सेक्शन देखें.

Google Home ऐप्लिकेशन

Google Home ऐप्लिकेशन पर, बल्ब के आइकॉन के बगल में मौजूद चालू है और बंद है लेबल पर टैप करें.

ज़्यादा जानकारी के लिए, Google Home ऐप्लिकेशन में जोड़े गए स्मार्ट होम डिवाइसों को कंट्रोल करना लेख में, Google Home ऐप्लिकेशन की मदद से डिवाइसों को कंट्रोल करना सेक्शन देखें.

7. बधाई हो!

आपने अपना पहला Matter डिवाइस बना लिया है. बहुत बढ़िया!

इस कोडलैब में, आपने ये सीखा:

  • Matter डेवलपमेंट एनवायरमेंट इंस्टॉल करें.
  • Matter की सुविधा वाला वर्चुअल डिवाइस बनाएं और उसे चलाएं.
  • Google Home से अपने वर्चुअल डिवाइस को कमीशन और कंट्रोल करें.

Matter के बारे में ज़्यादा जानने के लिए, यहां जाएं: