1. सुविधा के बारे में जानकारी
Google की ओर से रिलीज़ किया गया OpenThread, थ्रेड नेटवर्किंग प्रोटोकॉल का ओपन-सोर्स लागू है. Google Nest ने सभी डेवलपर के लिए इस्तेमाल की जा रही टेक्नोलॉजी को बड़े पैमाने पर डेवलपर के लिए उपलब्ध कराने के लिए, OpenThread लॉन्च किया है. ऐसा इसलिए किया गया है, ताकि कनेक्टेड होम के लिए प्रॉडक्ट पहले से बेहतर बनाए जा सकें.
थ्रेड की खास बातें, घरेलू ऐप्लिकेशन के लिए IPv6 आधारित भरोसेमंद, सुरक्षित और कम पावर वाले वायरलेस डिवाइस-टू-डिवाइस कम्यूनिकेशन प्रोटोकॉल के बारे में बताती हैं. OpenThread, IPv6, 6LoWPAN, IEEE 802.15.4, MAC सुरक्षा, मेश लिंक इंस्टॉलेशन, और मेश रूटिंग के साथ सभी थ्रेड नेटवर्किंग लेयर को लागू करता है.
इस कोडलैब से आपको सिम्युलेट किए गए डिवाइसों पर थ्रेड नेटवर्क को सिम्युलेट करने का तरीका पता चलता है.
आप इन चीज़ों के बारे में जानेंगे
- OpenThread बिल्ड टूलचेन सेट अप करने का तरीका
- थ्रेड नेटवर्क की नकल करने का तरीका
- थ्रेड नोड की पुष्टि करने का तरीका
- OpenThread डीमन पर Thread नेटवर्क को मैनेज करने का तरीका
आपको इनकी ज़रूरत होगी
- Git
- Linux, नेटवर्क रूटिंग के बारे में बुनियादी जानकारी
2. बिल्ड सिस्टम सेट अप करना
Git
इस कोडलैब को पूरा करने के लिए, Git का इस्तेमाल करना ज़रूरी है. आगे बढ़ने से पहले इसे डाउनलोड और इंस्टॉल करें.
इंस्टॉल करने के बाद, OpenThread को डाउनलोड और बनाने के लिए अपने खास ओएस के निर्देशों का पालन करें.
Mac OS X के लिए XCode
Mac OS X पर OpenThread इंस्टॉल करने और बनाने के लिए XCode की ज़रूरत होती है.
XCode को इंस्टॉल करने के बाद, XCode कमांड लाइन टूल इंस्टॉल करें:
$ xcode-select --install
Linux / Mac OS X पर बनाना
इंस्टॉलेशन के इन निर्देशों की जांच Ubuntu Server 14.04 LTS और Mac OS X Sierra 10.12.6 पर की गई है.
OpenThread को इंस्टॉल करें. bootstrap
कमांड से यह पक्का होता है कि टूलचेन इंस्टॉल किया गया है और एनवायरमेंट सही तरीके से कॉन्फ़िगर किया गया है:
$ mkdir -p ~/src $ cd ~/src $ git clone --recursive https://github.com/openthread/openthread.git $ cd openthread $ ./script/bootstrap $ ./bootstrap
Windows का इस्तेमाल करना
अगर आप Windows इस्तेमाल करना चाहते हैं, तो हमारा सुझाव है कि आप इस कोडलैब का डॉकर वर्शन आज़माएं.
3. OpenThread ऐप्लिकेशन बनाएं
इंस्टॉल करने की प्रक्रिया पूरी होने के बाद, OpenThread ऐप्लिकेशन का उदाहरण बनाएं. इस कोडलैब के लिए हम सिम्युलेशन के उदाहरण का इस्तेमाल कर रहे हैं.
$ cd ~/src/openthread $ ./script/cmake-build simulation
अब OpenThread डीमन बनाएं:
$ ./script/cmake-build posix -DOT_DAEMON=ON
4. किसी थ्रेड नेटवर्क को सिम्युलेट करें
उदाहरण के तौर पर, इस कोडलैब के लिए इस्तेमाल किए जाने वाले ऐप्लिकेशन का इस्तेमाल करने के लिए, कम से कम OpenThread ऐप्लिकेशन दिखाया जाता है. इसमें, किसी मूल कमांड-लाइन इंटरफ़ेस (सीएलआई) से OpenThread कॉन्फ़िगरेशन और मैनेजमेंट इंटरफ़ेस दिखाए जाते हैं.
इस तरीके का इस्तेमाल करके, आप सिम्युलेट किए गए एक थ्रेड डिवाइस को दूसरे सिम्युलेट किए गए थ्रेड डिवाइस से पिंग करने के लिए ज़रूरी कम से कम चरणों को पूरा कर सकते हैं.
नीचे दिया गया चित्र एक मूलभूत थ्रेड नेटवर्क टोपोलॉजी का वर्णन करता है. इस व्यायाम के लिए, हम हरे गोले के अंदर दो नोड को सिम्युलेट करेंगे: थ्रेड लीडर और थ्रेड राऊटर, जिसमें उनके बीच एक कनेक्शन है.
नोड को पिंग करना
1. नोड 1 शुरू करें
openthread
डायरेक्ट्री पर जाएं और ot-cli-ftd
बाइनरी का इस्तेमाल करके, सिम्युलेट की गई थ्रेड डिवाइस के लिए, सीएलआई प्रोसेस को जनरेट करें.
$ cd ~/src/openthread $ ./build/simulation/examples/apps/cli/ot-cli-ftd 1
ध्यान दें: अगर आपको यह निर्देश चलाने के बाद >
प्रॉम्प्ट नहीं दिखता है, तो enter
दबाएं.
यह बाइनरी एक OpenThread डिवाइस लागू करती है जो POSIX के ऊपर दिखाई देता है. यूआईडीईई 802.15.4 रेडियो ड्राइवर यूडीपी के सबसे ऊपर लागू किया जाता है (आईईईई 802.15.4 फ़्रेम यूडीपी पेलोड के अंदर पास होते हैं).
1
का आर्ग्युमेंट एक फ़ाइल डिस्क्रिप्टर है, जो सिम्युलेट किए गए डिवाइस के कम से कम अहम बिट को दिखाता है. "Factory-assigned" IEEE EUI-64. यह वैल्यू तब भी इस्तेमाल की जाती है, जब IEEE 802.15.4 रेडियो एम्युलेशन के लिए यूडीपी पोर्ट से बाध्य किया जाता है (पोर्ट = 9000 + फ़ाइल डिस्क्रिप्टर). इस कोडलैब में सिम्युलेट किए गए थ्रेड डिवाइस के हर इंस्टेंस में, अलग-अलग फ़ाइल डिस्क्रिप्टर का इस्तेमाल होगा.
ध्यान दें: सिम्युलेट किए गए किसी डिवाइस के लिए, प्रोसेस करते समय सिर्फ़ 1
या इससे बड़ी फ़ाइल डिस्क्रिप्टर का इस्तेमाल करें. 0
की फ़ाइल डिस्क्रिप्टर, दूसरे इस्तेमाल के लिए रिज़र्व है.
एक नया ऑपरेशनल डेटासेट बनाएं और उसे चालू डेटासेट के तौर पर इस्तेमाल करें. ऑपरेशनल डेटासेट उस थ्रेड नेटवर्क का कॉन्फ़िगरेशन है जिसे आप बना रहे हैं.
> dataset init new Done > dataset Active Timestamp: 1 Channel: 20 Channel Mask: 07fff800 Ext PAN ID: d6263b6d857647da Mesh Local Prefix: fd61:2344:9a52:ede0/64 Network Key: e4344ca17d1dca2a33f064992f31f786 Network Name: OpenThread-c169 PAN ID: 0xc169 PSKc: ebb4f2f8a68026fc55bcf3d7be3e6fe4 Security Policy: 0, onrcb Done
इस डेटासेट को चालू डेटासेट के तौर पर इस्तेमाल करें:
> dataset commit active Done
IPv6 इंटरफ़ेस बनाएं:
> ifconfig up Done
थ्रेड प्रोटोकॉल की कार्रवाई शुरू करें:
> thread start Done
कुछ सेकंड इंतज़ार करें और पुष्टि करें कि डिवाइस, थ्रेड लीडर बन गया है. लीडर, डिवाइस को राऊटर आईडी असाइन करने के लिए ज़िम्मेदार होगा.
> state leader Done
नोड 1's थ्रेड इंटरफ़ेस को असाइन किए गए IPv6 पते देखें (आपका आउटपुट अलग होगा):
> ipaddr fd61:2344:9a52:ede0:0:ff:fe00:fc00 fd61:2344:9a52:ede0:0:ff:fe00:5000 fd61:2344:9a52:ede0:d041:c5ba:a7bc:5ce6 fe80:0:0:0:94da:92ea:1353:4f3b Done
किसी खास IPv6 पते पर ध्यान दें:
fd
से शुरू होता है = मेश-लोकलfe80
से शुरू होने वाला है = link-local
मेश-लोकल पते के टाइप को और ज़्यादा कैटगरी में रखा जाता है:
- इसमें शामिल है
ff:fe00
= राऊटर लोकेटर (RLOC) - इसमें
ff:fe00
= एंडपॉइंट आइडेंटिफ़ायर (EID) शामिल नहीं है
अपने कंसोल आउटपुट में ईआईडी की पहचान करें, ताकि बाद में इस्तेमाल करने के लिए उसे नोट करके रखा जा सके. ऊपर दिए गए सैंपल आउटपुट में, ईआईडी यह है:
fd61:2344:9a52:ede0:d041:c5ba:a7bc:5ce6
2. नोड 2 शुरू करें
एक नया टर्मिनल खोलें और openthread
डायरेक्ट्री पर जाएं और सीएलआई प्रोसेस शुरू करें. यह आपका दूसरा सिम्युलेट किया गया थ्रेड डिवाइस है:
$ cd ~/src/openthread $ ./build/simulation/examples/apps/cli/ot-cli-ftd 2
ध्यान दें: अगर आपको यह निर्देश चलाने के बाद >
प्रॉम्प्ट नहीं दिखता है, तो enter
दबाएं.
नोड 1's ऑपरेशनल डेटासेट के मानों का इस्तेमाल करके, थ्रेड नेटवर्क कुंजी और पैन आईडी कॉन्फ़िगर करें:
> dataset networkkey e4344ca17d1dca2a33f064992f31f786 Done > dataset panid 0xc169 Done
इस डेटासेट को चालू डेटासेट के तौर पर इस्तेमाल करें:
> dataset commit active Done
IPv6 इंटरफ़ेस बनाएं:
> ifconfig up Done
थ्रेड प्रोटोकॉल की कार्रवाई शुरू करें:
> thread start Done
डिवाइस अपने-आप चाइल्ड के तौर पर शुरू हो जाएगा. 'थ्रेड' चाइल्ड एक एंड डिवाइस के बराबर है. यह एक ऐसा थ्रेड डिवाइस है जो सिर्फ़ पैरंट डिवाइस से यूनीकास्ट ट्रैफ़िक को ट्रांसमिट करता है और मिलता है.
> state child Done
आपको दो मिनट के अंदर, child
से router
पर स्टेटस स्विच दिखेगा. थ्रेड राऊटर, थ्रेड डिवाइसों के बीच ट्रैफ़िक को रूट कर सकता है. इसे अभिभावक भी कहा जाता है.
> state router Done
नेटवर्क की पुष्टि करें
मेश नेटवर्क की पुष्टि करने का एक आसान तरीका है, राऊटर टेबल देखना.
1. कनेक्टिविटी की जांच करें
नोड 2 पर, RLOC16 पाएं. RLOC16, डिवाइस के आखिरी 16 बिट और RLOC IPv6 पता है.
> rloc16 5800 Done
नोड 1 पर, नोड 2's RLOC16 के लिए राऊटर टेबल देखें. पक्का करें कि नोड 2 पहले राऊटर की स्थिति पर स्विच कर चुका है.
> router table | ID | RLOC16 | Next Hop | Path Cost | LQI In | LQI Out | Age | Extended MAC | +----+--------+----------+----------+-------+---------+-----+------------------+ | 20 | 0x5000 | 63 | 0 | 0 | 0 | 0 | 96da92ea13534f3b | | 22 | 0x5800 | 63 | 0 | 3 | 3 | 23 | 5a4eb647eb6bc66c |
0xa800
का नोड 1's RLOC टेबल में मिलता है, जिससे इस बात की पुष्टि होती है कि यह मेश से कनेक्ट है.
2. नोड 2 से नोड 1 को पिंग करें
दो सिम्युलेट किए गए थ्रेड डिवाइसों के बीच कनेक्टिविटी की पुष्टि करें. नोड 2 में, ping
को नोड 1 को असाइन किया गया:
> ping fd61:2344:9a52:ede0:d041:c5ba:a7bc:5ce6 > 16 bytes from fd61:2344:9a52:ede0:d041:c5ba:a7bc:5ce6: icmp_seq=1 hlim=64 time=12ms
>
सीएलआई प्रॉम्प्ट पर वापस जाने के लिए, enter
दबाएं.
नेटवर्क की जांच करें
अब आप दो सिम्युलेटेड थ्रेड डिवाइसों के बीच पिंग कर सकते हैं. साथ ही, एक नोड को ऑफ़लाइन ले जाकर मेश नेटवर्क की जांच करें.
नोड 1 पर वापस जाएं और थ्रेड को रोकें:
> thread stop Done
नोड 2 पर स्विच करें और स्टेटस देखें. दो मिनट के अंदर, नोड 2 को पता चलता है कि लीडर (नोड 1) ऑफ़लाइन है और आपको नोड 2 का ट्रांज़िशन नेटवर्क के leader
के तौर पर दिखेगा:
> state router Done ... > state leader Done
पुष्टि हो जाने पर, थ्रेड को बंद करें और बाहर निकलने से पहले नोड 2 को फ़ैक्ट्री रीसेट करें. फ़ैक्ट्री रीसेट किया जाता है, ताकि यह पक्का किया जा सके कि इस प्रैक्टिस में इस्तेमाल की गई थ्रेड नेटवर्क क्रेडेंशियल को अगली ऐक्टिविटी पर नहीं ले जाया गया है.
> thread stop Done > factoryreset > > exit
साथ ही, फ़ैक्ट्री रीसेट करके नोड 1 से बाहर निकलें:
> factoryreset > > exit
सभी उपलब्ध CLI निर्देशों को एक्सप्लोर करने के लिए, OpenThread CLI रेफ़रंस देखें.
5. कमीशन की मदद से नोड की पुष्टि करें
पिछली कसरत में, आपने दो नेटवर्क और पुष्टि किए गए कनेक्टिविटी के साथ थ्रेड नेटवर्क सेट अप किया था. हालांकि, इससे सिर्फ़ पुष्टि नहीं किए गए IPv6 लिंक-लोकल ट्रैफ़िक को डिवाइसों के बीच पास होने की अनुमति मिलती है. दुनिया भर में मौजूद IPv6 ट्रैफ़िक को (और इंटरनेट को थ्रेड बॉर्डर राऊटर के ज़रिए) रूट करने के लिए, नोड की पुष्टि करना ज़रूरी है.
पुष्टि करने के लिए, एक डिवाइस को कमिश्नर के तौर पर काम करना होगा. कमिश्नर फ़िलहाल नए थ्रेड डिवाइस के लिए पुष्टि करने वाला सर्वर है. साथ ही, यह डिवाइस के नेटवर्क से जुड़ने के लिए ज़रूरी नेटवर्क क्रेडेंशियल देने की अनुमति भी देता है.
इस व्यवहार में, हम पहले की तरह दो नोड वाले टोपोलॉजी का इस्तेमाल करेंगे. पुष्टि करने के लिए, थ्रेड लीडर, कमिश्नर के तौर पर काम करेगा. साथ ही, थ्रेड राऊटर को जॉइनर के तौर पर काम करेगा.
1. एक नेटवर्क बनाएं
अगर आप पिछली ऐक्टिविटी जारी रख रहे हैं, तो आपकी दो टर्मिनल विंडो पहले से खुली होनी चाहिए. अगर ऐसा नहीं है, तो पक्का करें कि दो खुले हुए हों और इस्तेमाल के लिए तैयार हों. एक नोड 1 के तौर पर और दूसरा नोड 2 के तौर पर काम करेगा.
नोड 1 में सीएलआई प्रोसेस शुरू करें:
$ cd ~/src/openthread $ ./build/simulation/examples/apps/cli/ot-cli-ftd 1
ध्यान दें: अगर आपको यह निर्देश चलाने के बाद >
प्रॉम्प्ट नहीं दिखता है, तो enter
दबाएं.
नया ऑपरेशनल डेटासेट बनाएं और इसे चालू के तौर पर इस्तेमाल करें. साथ ही, थ्रेड शुरू करें:
> dataset init new Done > dataset Active Timestamp: 1 Channel: 12 Channel Mask: 07fff800 Ext PAN ID: e68d05794bf13052 Mesh Local Prefix: fd7d:ddf7:877b:8756/64 Network Key: a77fe1d03b0e8028a4e13213de38080e Network Name: OpenThread-8f37 PAN ID: 0x8f37 PSKc: f9debbc1532487984b17f92cd55b21fc Security Policy: 0, onrcb Done
इस डेटासेट को चालू डेटासेट के तौर पर इस्तेमाल करें:
> dataset commit active Done
IPv6 इंटरफ़ेस बनाएं:
> ifconfig up Done
थ्रेड प्रोटोकॉल की कार्रवाई शुरू करें:
> thread start Done
कुछ सेकंड इंतज़ार करें और पुष्टि करें कि डिवाइस, थ्रेड लीडर बना रहा है:
> state leader Done
2. कमिश्नर की भूमिका शुरू करें
नोड 1 से अब भी, कमिश्नर की भूमिका शुरू करें:
> commissioner start Done
किसी भी जॉइनर को नेटवर्क पर कमीशन देने के लिए, *
वाइल्डकार्ड का इस्तेमाल करके J01NME
जॉइनर क्रेडेंशियल से अनुमति दें. जॉइनर एक ऐसा डिवाइस है जिसे किसी मानव एडमिन ने चालू थ्रेड नेटवर्क में जोड़ा है.
> commissioner joiner add * J01NME Done
3. जॉइनर रोल शुरू करना
दूसरी टर्मिनल विंडो में, एक नई सीएलआई प्रोसेस शुरू करें. यह नोड 2 है.
$ cd ~/src/openthread $ ./build/simulation/examples/apps/cli/ot-cli-ftd 2
नोड 2 पर, J01NME
जॉइनर क्रेडेंशियल का इस्तेमाल करके जॉइनर को चालू करें.
> ifconfig up Done > joiner start J01NME Done
... पुष्टि करने के लिए कुछ सेकंड इंतज़ार करें ...
Join success
जॉइनर के रूप में, डिवाइस (नोड 2) ने कमिश्नर (नोड 1) के ज़रिए खुद की पुष्टि की है और उसे थ्रेड नेटवर्क क्रेडेंशियल मिले हैं.
अब नोड 2 की पुष्टि हो गई है, तो थ्रेड शुरू करें:
> thread start Done
4. नेटवर्क की पुष्टि करना
नोड 2 पर state
देखें और पुष्टि करें कि अब यह नेटवर्क से कनेक्ट हो गया है. दो मिनट के अंदर, नोड 2 का child
से router
में ट्रांज़िशन हो जाता है:
> state child Done ... > state router Done
5. कॉन्फ़िगरेशन रीसेट करें
अगले व्यायाम की तैयारी के लिए, कॉन्फ़िगरेशन रीसेट करें. हर नोड पर, थ्रेड बंद करें, फ़ैक्ट्री रीसेट करें, और सिम्युलेट किए गए थ्रेड डिवाइस से बाहर निकलें:
> thread stop Done > factoryreset > > exit
>
निर्देश को factoryreset
निर्देश के बाद वापस लाने के लिए, आपको enter
को कुछ बार दबाना पड़ सकता है.
6. OpenThread डेमोन के साथ नेटवर्क मैनेज करें
इस प्रैक्टिस के लिए, हम एक सीएलआई इंस्टेंस (एक एम्बेड किए गए SoC थ्रेड डिवाइस) और एक रेडियो को-प्रोसेसर (आरसीपी) इंस्टेंस को सिम्युलेट करेंगे.
ot-daemon
, OpenThread Posix ऐप्लिकेशन का एक मोड है. यह इनपुट और आउटपुट के तौर पर UNIX सॉकेट का इस्तेमाल करता है. इससे OpenThread कोर को सेवा के तौर पर चलाया जा सकता है. OpenThread CLI को प्रोटोकॉल के तौर पर इस्तेमाल करके, क्लाइंट इस सेवा से सॉकेट से कनेक्ट हो सकता है.
ot-ctl
, एक सीएलआई है. इसे ot-daemon
ने उपलब्ध कराया है, ताकि आरसीपी को मैनेज और कॉन्फ़िगर किया जा सके. इसका इस्तेमाल करके, हम आरसीपी को थ्रेड डिवाइस से बनाए गए नेटवर्क से कनेक्ट करेंगे.
ओट-डेमन का इस्तेमाल करें
इस कसरत में तीन टर्मिनल विंडो का इस्तेमाल होगा, जो नीचे दी गई बातों से जुड़ी होंगी:
- सिम्युलेट की गई थ्रेड डिवाइस का सीएलआई इंस्टेंस (नोड 1)
ot-daemon
प्रोसेसot-ctl
सीएलआई इंस्टेंस
अगर आप पिछली कार्रवाई जारी रखते हैं, तो दो टर्मिनल विंडो पहले से खुली हुई होनी चाहिए. तीसरी विंडो खोलें और पक्का करें कि इस कसरत के लिए आपके पास तीन टर्मिनल विंडो उपलब्ध हैं.
1. नोड 1 शुरू करें
पहली टर्मिनल विंडो में, अपने सिम्युलेटेड थ्रेड डिवाइस के लिए सीएलआई प्रोसेस जनरेट करें:
$ cd ~/src/openthread $ ./build/simulation/examples/apps/cli/ot-cli-ftd 1
ध्यान दें: अगर आपको यह निर्देश चलाने के बाद >
प्रॉम्प्ट नहीं दिखता है, तो enter
दबाएं.
नया ऑपरेशनल डेटासेट बनाएं और इसे चालू के तौर पर इस्तेमाल करें. साथ ही, थ्रेड शुरू करें:
> dataset init new Done > dataset Active Timestamp: 1 Channel: 13 Channel Mask: 07fff800 Ext PAN ID: 97d584bcd493b824 Mesh Local Prefix: fd55:cf34:dea5:7994/64 Network Key: ba6e886c7af50598df1115fa07658a83 Network Name: OpenThread-34e4 PAN ID: 0x34e4 PSKc: 38d6fd32c866927a4dfcc06d79ae1192 Security Policy: 0, onrcb Done
इस डेटासेट को चालू डेटासेट के तौर पर इस्तेमाल करें:
> dataset commit active Done
IPv6 इंटरफ़ेस बनाएं:
> ifconfig up Done
थ्रेड प्रोटोकॉल की कार्रवाई शुरू करें:
> thread start Done
नोड 1's के थ्रेड इंटरफ़ेस को असाइन किए गए IPv6 पते देखें:
> ipaddr fd55:cf34:dea5:7994:0:ff:fe00:fc00 fd55:cf34:dea5:7994:0:ff:fe00:d000 fd55:cf34:dea5:7994:460:872c:e807:c4ab fe80:0:0:0:9cd8:aab6:482f:4cdc Done >
जैसा कि थ्रेड नेटवर्क को सिम्युलेट करें चरण में बताया गया है, एक पता लिंक का लोकल (fe80
) है और तीन मेश-लोकल (fd
) है. ईआईडी, मेश-लोकल पता है, जिसके पते में ff:fe00
नहीं है. इस सैंपल आउटपुट में ईआईडी fd55:cf34:dea5:7994:460:872c:e807:c4ab
है.
अपने ipaddr
आउटपुट से खास ईआईडी की पहचान करें, जिसका इस्तेमाल नोड से संपर्क करने के लिए किया जाएगा.
2. ओट-डेमन शुरू करें
दूसरी टर्मिनल विंडो में, openthread
डायरेक्ट्री पर जाएं और आरसीपी नोड के लिए ot-daemon
शुरू करें, जिसे हम नोड 2 को कॉल करेंगे. -v
वर्बोस फ़्लैग का इस्तेमाल करें, ताकि आप लॉग आउटपुट देख सकें और यह पुष्टि कर सकें कि यह चल रहा है या नहीं. साथ ही, sudo
का इस्तेमाल करना न भूलें:
$ cd ~/src/openthread $ sudo ./build/posix/src/posix/ot-daemon -v \ 'spinel+hdlc+forkpty:///build/simulation/examples/apps/ncp/ot-rcp?forkpty-arg=2'
अगर कार्रवाई पूरी हो, तो ot-daemon
को वर्बोस मोड में इनके जैसा आउटपुट दिया जाता है:
ot-daemon[12463]: Running OPENTHREAD/thread-reference-20200818-1938-g0f10480ed; POSIX; Aug 30 2022 10:55:05 ot-daemon[12463]: Thread version: 4 ot-daemon[12463]: Thread interface: wpan0 ot-daemon[12463]: RCP version: OPENTHREAD/thread-reference-20200818-1938-g0f10480ed; SIMULATION; Aug 30 2022 10:54:10
इस टर्मिनल को खुला रहने दें और बैकग्राउंड में चलने दें. आप इसमें आगे कोई निर्देश नहीं देंगे.
3. नेटवर्क से जुड़ने के लिए, ot-ctl का इस्तेमाल करें
हमने अब तक किसी भी Thread नेटवर्क पर नोड 2 (ot-daemon
आरसीपी) को चालू नहीं किया है. ot-ctl
कहां से आता है. ot-ctl
एक ही CLI का इस्तेमाल OpenThread CLI ऐप्लिकेशन के तौर पर करता है. इसलिए, आप ot-daemon
नोड को उसी तरह से कंट्रोल कर सकते हैं जैसे अन्य सिम्युलेटेड थ्रेड डिवाइस करते हैं.
तीसरी टर्मिनल विंडो में, ot-ctl
शुरू करें:
$ sudo ./build/posix/src/posix/ot-ctl >
ध्यान दें: अगर आपको यह निर्देश चलाने के बाद >
प्रॉम्प्ट नहीं दिखता है, तो enter
दबाएं.
आप तीसरे टर्मिनल विंडो में ot-ctl
का इस्तेमाल करके नोड 2 (आरसीपी नोड) को प्रबंधित कर सकते हैं. आप नोड को दूसरे टर्मिनल विंडो में ot-daemon
के साथ शुरू करने वाले हैं. नोड 2 के state
की जांच करें:
> state disabled Done
किसी खास जॉइनर से जुड़ने के लिए, नोड 2's eui64
पाएं:
> eui64 18b4300000000001 Done
नोड 1 (पहली टर्मिनल विंडो) पर, कमिश्नर को शुरू करें और सिर्फ़ उस eui64 में ही शामिल करें:
> commissioner start Done > commissioner joiner add 18b4300000000001 J01NME Done
नोड 2 (तीसरी टर्मिनल विंडो) पर, नेटवर्क इंटरफ़ेस लाएं और नेटवर्क में शामिल हों:
> ifconfig up Done > joiner start J01NME Done
... पुष्टि करने के लिए कुछ सेकंड इंतज़ार करें ...
Join success
जॉइनर के रूप में, आरसीपी (नोड 2) ने खुद को कमिश्नर (नोड 1) से प्रमाणित किया है और थ्रेड नेटवर्क क्रेडेंशियल मिले हैं.
अब थ्रेड 2 के लिए नोड 2 से जुड़ें:
> thread start Done
4. नेटवर्क की पुष्टि करना
नोड 2 पर state
देखें और पुष्टि करें कि अब यह नेटवर्क से कनेक्ट हो गया है. दो मिनट के अंदर, नोड 2 का child
से router
में ट्रांज़िशन हो जाता है:
> state child Done ... > state router Done
5. कनेक्टिविटी की पुष्टि करें
Ctrl+D या exit
निर्देश का इस्तेमाल करके, ot-ctl
को बंद करें. इसके बाद, अपनी होस्ट मशीन के कमांड लाइन पर Node 1 को पिंग करें और ping6
निर्देश के साथ ईआईडी इस्तेमाल करें. अगर ot-daemon
आरसीपी इंस्टेंस, थ्रेड नेटवर्क में शामिल हो गया है और उससे बातचीत हो रही है, तो पिंग हो जाता है:
$ ping6 -c 4 fd55:cf34:dea5:7994:460:872c:e807:c4ab PING fd55:cf34:dea5:7994:460:872c:e807:c4ab (fd55:cf34:dea5:7994:460:872c:e807:c4ab): 56 data bytes 64 bytes from fd55:cf34:dea5:7994:460:872c:e807:c4ab: icmp_seq=0 ttl=64 time=4.568 ms 64 bytes from fd55:cf34:dea5:7994:460:872c:e807:c4ab: icmp_seq=1 ttl=64 time=6.396 ms 64 bytes from fd55:cf34:dea5:7994:460:872c:e807:c4ab: icmp_seq=2 ttl=64 time=7.594 ms 64 bytes from fd55:cf34:dea5:7994:460:872c:e807:c4ab: icmp_seq=3 ttl=64 time=5.461 ms --- fd55:cf34:dea5:7994:460:872c:e807:c4ab ping statistics --- 4 packets transmitted, 4 packets received, 0% packet loss round-trip min/avg/max/stddev = 4.568/6.005/7.594/1.122 ms
7. बधाई!
आपने' OpenThread का इस्तेमाल करके, अपने पहले थ्रेड नेटवर्क को सिम्युलेट किया है. बहुत बढ़िया!
इस कोडलैब में आपने ये सीखा:
- OpenThread बिल्ड टूलचेन सेट अप करना
- किसी थ्रेड नेटवर्क को सिम्युलेट करें
- थ्रेड नोड की पुष्टि करें
- OpenThread डीमन के साथ Thread नेटवर्क को मैनेज करें
ज़्यादा जानकारी के लिए, ये रेफ़रंस देखें: