यहां दिए गए निर्देशों में, Matter SDK टूल के लाइटिंग ऐप्लिकेशन के उदाहरण का इस्तेमाल किया गया है. साथ ही, इसमें M5Stack ESP32 डेवलपमेंट बोर्ड का इस्तेमाल किया गया है.
बिल्ड एनवायरमेंट सेटअप
सबसे पहले, Matter SDK टूल को क्लोन करें.
इस उदाहरण में, हम Google Home के Matter रिलीज़ 5 के लिए, कम से कम ज़रूरी कमिट की जांच करते हैं:
mkdir otaprepcd otaprepgit clone https://github.com/project-chip/connectedhomeip.git
cd connectedhomeip
git fetch origin v1.0-branch
git checkout FETCH_HEAD
git submodule update --init --recursive
source ./scripts/activate.sh
इसके बाद, हम ESP32 GitHub वर्कफ़्लो में इस्तेमाल किए गए वर्शन की जांच करते हैं, ताकि यह तय किया जा सके कि हमारे बिल्ड के लिए कौनसी Docker इमेज सबसे सही है:
cat .github/workflows/examples-esp32.yaml | grep chip-build | head -n 1image: connectedhomeip/chip-build-esp32:0.5.99हम Docker इमेज से एक कंटेनर चलाते हैं. इसमें कंटेनर में Matter SDK टूल को माउंट करने और ESP32 डिवाइस का ऐक्सेस देने के लिए, फ़्लैग पास किए जाते हैं.
docker run --name container_name -it --user $(id -u):$(id -g)--mount source=$(pwd),target=/workspace,type=bind --device=/dev/ttyUSB0 connectedhomeip/chip-build-esp32:0.5.99 /bin/bashMatter Docker कंटेनर को बंद और चालू करना
जब भी docker run कमांड चलाया जाता है, तब चुनी गई इमेज के साथ एक नया कंटेनर बन जाता है. ऐसा करने पर, आपका पुराना डेटा मिट जाता है. यह डेटा, कंटेनर के पिछले इंस्टेंस में सेव किया गया था. कभी-कभी ऐसा करना ज़रूरी होता है, क्योंकि इससे आपको नए सिरे से इंस्टॉलेशन शुरू करने में मदद मिलती है. लेकिन इस उदाहरण में, आपको सेशन के बीच में अपने काम और एनवायरमेंट कॉन्फ़िगरेशन को सेव करना होगा.
user@host> docker stop container_name
जब आप फिर से चलाने के लिए तैयार हों, तो कंटेनर को चालू करें और टर्मिनल विंडो खोलें:
user@host> docker start container_name
user@host> docker exec -it container_name /bin/bash
अपने कंटेनर के लिए, अतिरिक्त टर्मिनल सेशन खोले जा सकते हैं. इसके लिए, यह तरीका अपनाएं:
user@host> docker exec -it container_name /bin/bash
इसके अलावा, इनमें से किसी का इस्तेमाल करके रूट सेशन शुरू करें:
user@host> docker exec -u 0 -it container_name /bin/bash
एसडीके टूल को शुरू करना
कंटेनर में, हम Matter SDK और ESP IDF को शुरू करते हैं:
cd /workspacegit submodule update --init --recursivesource ./scripts/activate.shsource /opt/espressif/esp-idf/export.shबिल्ड और फ़्लैश करना
अगला टास्क, इमेज बनाना और डेवलपमेंट किट को फ़्लैश करना है, ताकि Matter ओटीए फ़र्मवेयर का अपडेट मिल सके.
इसके लिए, आपको एक इमेज बनानी होगी.
सबसे पहले, ESP IDF से menuconfig यूटिलिटी का इस्तेमाल करके बिल्ड को कॉन्फ़िगर करें.
cd examples/lighting-app/esp32
idf.py menuconfigइंटरैक्टिव मेन्यू में, ये सेटिंग कॉन्फ़िगर करें:
Component config --->CHIP Device Layer --->Device Identification Options --->Vendor IDको Connectivity Standards Alliance (Alliance) से असाइन किए गए वीआईडी पर सेट करें.Product IDको उस पीआईडी पर सेट करें जिसे आपने Google Home Developer Console में Matter इंटिग्रेशन पर सेट किया है.
ओटीए रिक्वेस्ट करने वाले फ़्लैग को चालू करें:
Component config -->CHIP Core -->System options --->ओटीए रिक्वेस्ट करने वाले फ़्लैग
[*] Enable OTA Requestorको चालू करेंसबसे पहले वाले मेन्यू पर वापस जाने के लिए, ESC को दो बार दबाएं.
Matter ओटीए इमेज बनाने की सुविधा चालू करें:
Component config -->CHIP Device Layer --->Matter OTA Image --->[*] Generate OTA IMAGE
वर्शन नंबर सेट करें:
Application manager --->[*] Get the project version from KconfigचुनेंProject version (NEW)को1.0पर सेट करेंकॉन्फ़िगरेशन सेव करने के लिए, s दबाएं. इसके बाद, Enter को दो बार दबाएं. फिर,
menuconfigसे बाहर निकलने के लिए, q दबाएं.
टेस्ट सर्टिफ़िकेट सेट अप करना
सीडी, डीएसी, और पीएआई सर्टिफ़िकेट बनाने के लिए, Matter डिवाइस के लिए टेस्ट सर्टिफ़िकेट बनाना में दिया गया तरीका अपनाएं.
अपना डिवाइस बनाएं
अब बिल्ड को चलाएं और डिवाइस को फ़्लैश करें:
idf.py build
idf.py -p /dev/ttyUSB0 erase_flash
idf.py -p /dev/ttyUSB0 flashओटीए इमेज बनाना और अपलोड करना
अब ओटीए इमेज बनाने के लिए, बिल्ड सेटिंग को फिर से बदलें. एक ही इमेज का इस्तेमाल करें, लेकिन वर्शन नंबर को बढ़ाकर.
menuconfig चलाएं.
idf.py menuconfigइंटरैक्टिव मेन्यू में, इन्हें अपडेट करें:
Application manager --->[*] Get the project version from KconfigचुनेंProject version (NEW)को2.0पर सेट करें- कॉन्फ़िगरेशन सेव करने के लिए, s दबाएं. इसके बाद, Enter को दो बार दबाएं. फिर,
menuconfigसे बाहर निकलने के लिए q दबाएं.
इमेज को जनरेट करना और उसे वापस पाना. इस उदाहरण में, ओटीए के लिए इमेज की जगह और ota_image_tool.py के साथ पार्स करने पर मिलने वाला आउटपुट, दोनों दिखाए गए हैं.
cd build && /workspace/src/app/ota_image_tool.py show ./chip-lighting-app-ota.binआउटपुट इस तरह का होगा:
Magic: 1beef11e
Total Size: 1243360
Header Size: 64
Header TLV:
[0] Vendor Id: XXXXX (0x000)
[1] Product Id: XXXXX (0x000)
[2] Version: 2 (0x2)
[3] Version String: v2.0
[4] Payload Size: 1243280 (0x12f890)
[8] Digest Type: 1 (0x1)
[9] Digest: e367f4d71e2ccd554b9a399c864abbf2c039382ef1def1b986fb2f59a99923a8
Matter SDK टूल को आपके कंटेनर होस्ट से माउंट किया जाता है. इसलिए, ओटीए इमेज आपके कंटेनर होस्ट पर उपलब्ध होती है.
ओटीए अपलोड करने के निर्देशों का पालन करके, ओटीए इमेज को Developer Console पर अपलोड करें.
Google Home में डिवाइस को कमीशन करना और ओटीए अपडेट देखना
पक्का करें कि आपका डिवाइस, यूएसबी की मदद से होस्ट Linux मशीन से कनेक्ट हो. यहां दिए गए उदाहरण में, डिवाइस लॉग को पढ़ने के लिए GNU screen का इस्तेमाल दिखाया गया है:
screen -L /dev/ttyUSB0 115200इससे डिवाइस का आउटपुट आपके टर्मिनल पर दिखता है. साथ ही, यह आउटपुट screenlog.0 नाम की डिफ़ॉल्ट स्क्रीन लॉग फ़ाइल में सेव हो जाता है.
screenlog.0 फ़ाइल को किसी दूसरे टेक्स्ट एडिटर में खोला जा सकता है या cat, tail, more या grep की मदद से किसी दूसरे शेल में दिखाया जा सकता है.
डिवाइस के साइड में मौजूद लाल रंग का रीसेट बटन दबाएं. इससे आपको बूट के लॉग दिखेंगे.
डिवाइस के आउटपुट में, आपको पहले सेट किया गया वीआईडी और पीआईडी दिखना चाहिए. साथ ही, क्यूआर कोड की इमेज का यूआरएल भी दिखना चाहिए. इसका इस्तेमाल, डिवाइस को चालू करने के लिए किया जाएगा.
[0;32mI (2388) chip[DIS]: Advertise commission parameter vendorID=XXXXX productID=XXXX discriminator=3840/15 cm=1[0m
[0;32mI (1928) chip[SVR]: SetupQRCode: [MT:E59-000000000000000][0m
https://project-chip.github.io/connectedhomeip/qrcode.html?data=MT%3AE59-000000000000000
पक्का करें कि आपका Hub आपके होम नेटवर्क से कनेक्ट हो.
लॉग फ़ाइल में दिखने वाले लिंक से क्यूआर कोड का इस्तेमाल करके, डिवाइस को Google Home app (GHA) के साथ चालू करें.
कमीशन करने के बाद, डिवाइस को कुछ मिनटों तक बिना किसी रुकावट के चलने दें.
आपको ओटीए के लिए अनुरोध करने वाले, ओटीए इमेज डाउनलोड करने, और OTAImageProcessor से जुड़े लॉग आउटपुट देखने चाहिए.
इमेज इंस्टॉल होने के बाद, देखें कि इमेज के कंपाइल का समय, कंसोल पर अपलोड की गई इमेज के कंपाइल के समय से मेल खाता हो. साथ ही, यह पहली बार बूट होने पर रिपोर्ट किए गए कंपाइल के समय के बाद का हो. screenlog.0 पर रेगुलर एक्सप्रेशन मोड में, नीचे दिए गए पैटर्न के साथ grep को लागू करके, ओटीए की प्रोसेस को समझा जा सकता है:
grep -E "(Compile time|OTA)" screenlog.0आउटपुट इस तरह का होगा:
I (76) boot: 1 otadata OTA data 01 00 0000f000 00002000
I (91) boot: 3 ota_0 OTA app 00 10 00020000 00177000
I (99) boot: 4 ota_1 OTA app 00 11 001a0000 00177000
I (645) cpu_start: Compile time: Oct 15 2022 06:21:59
I (135558) chip[SWU]: OTA Requestor received AnnounceOTAProvider
I (540658) chip[SWU]: OTA image downloaded to offset 0x1a0000
I (541348) OTAImageProcessor: Applying, Boot partition set offset:0x1a0000
I (76) boot: 1 otadata OTA data 01 00 0000f000 00002000
I (91) boot: 3 ota_0 OTA app 00 10 00020000 00177000
I (99) boot: 4 ota_1 OTA app 00 11 001a0000 00177000
I (645) cpu_start: Compile time: Oct 15 2022 07:35:31
I (76) boot: 1 otadata OTA data 01 00 0000f000 00002000
I (91) boot: 3 ota_0 OTA app 00 10 00020000 00177000
I (99) boot: 4 ota_1 OTA app 00 11 001a0000 00177000
I (645) cpu_start: Compile time: Oct 15 2022 07:35:31
पहली बार लागू करने के बाद, नई इमेज अपलोड किए बिना, ओटीए इमेज बनाएं और अपलोड करें सेक्शन में दिए गए चरणों को दोहराया जा सकता है.
इस बार, वर्शन को वापस 1 पर सेट करें.
menuconfig चलाएं और इंटरैक्टिव मेन्यू के विकल्पों में:
Component config -->CHIP Device Layer --->Device Identification OptionsVersion Stringकोv1.0पर सेट करें.Device Software Version Numberको1पर सेट करें.कॉन्फ़िगरेशन सेव करने के लिए, s दबाएं. इसके बाद,
menuconfigसे बाहर निकलने के लिए, q दबाएं.
GHA में जाकर, डिवाइस को अपने होम से हटा दें.
अगर इमेज पहले से नहीं बनी है, तो उसे बनाएं:
idf.py buildफ़्लैश करें:
idf.py -p /dev/ttyUSB0 erase_flashidf.py -p /dev/ttyUSB0 flashज़रूरत के हिसाब से, Google Home में कमीशन करना और ओटीए को मॉनिटर करना सेक्शन में दिया गया तरीका दोहराएं.
ओटीए सॉफ़्टवेयर अपडेट की पुष्टि करना
डिवाइस के सॉफ़्टवेयर का वर्शन, Google Home ऐप्लिकेशन (GHA) का इस्तेमाल करके देखा जा सकता है. डिवाइस को चालू करने के बाद, यह तरीका अपनाएं:
- GHA की मुख्य स्क्रीन पर, डिवाइस की टाइल को दबाकर रखें
- सबसे ऊपर दाईं ओर मौजूद, आइकॉन पर टैप करें
- तकनीकी जानकारी पर टैप करें
- सॉफ़्टवेयर का वर्शन फ़ील्ड देखें