Google is committed to advancing racial equity for Black communities. See how.
इस पेज का अनुवाद Cloud Translation API से किया गया है.
Switch to English

NRF52840 बोर्डों और OpenThread के साथ थ्रेड नेटवर्क बनाएँ

26b7f4f6b3ea0700.png

OpenThread गूगल द्वारा जारी की एक खुला स्रोत कार्यान्वयन है Thread® नेटवर्किंग प्रोटोकॉल। Google Nest ने कनेक्टेड होम के लिए उत्पादों के विकास में तेजी लाने के लिए डेवलपर्स के लिए व्यापक रूप से नेस्ट उत्पादों में उपयोग की जाने वाली तकनीक बनाने के लिए OpenThread जारी किया है।

थ्रेड विनिर्देशन IPv6- आधारित विश्वसनीय, सुरक्षित और कम-शक्ति वाले वायरलेस डिवाइस-टू-डिवाइस संचार प्रोटोकॉल को घरेलू अनुप्रयोगों के लिए परिभाषित करता है। OpenThread IPv6, 6LoWPAN, IEEE 802.15.4 सहित सभी थ्रेड नेटवर्किंग परतों को मैक सिक्योरिटी, मेश लिंक इंस्टालेशन और मेश राउटिंग के साथ लागू करता है।

इस कोडेलैब में, आप OpenThread को वास्तविक हार्डवेयर पर प्रोग्राम करेंगे, थ्रेड नेटवर्क बनाएँ और प्रबंधित करें, और नोड्स के बीच संदेश पास करें।

4806d16a8c137c6d.jpeg

आप क्या सीखेंगे

  • देव बोर्डों को ओपनथ्रेड सीएलआई बायनेरिज़ का निर्माण और चमकती
  • लिनक्स मशीन और एक देव बोर्ड से मिलकर एक RCP का निर्माण
  • OpenThread डेमॉन और ot-ctl का उपयोग करके एक आरसीपी के साथ संचार करना
  • स्क्रीन और OpenThread CLI के साथ मैन्युअल रूप से थ्रेड नोड्स का प्रबंधन करना
  • थ्रेड नेटवर्क पर उपकरणों का सुरक्षित कमीशन
  • IPv6 मल्टीकास्ट कैसे काम करता है
  • UDP के साथ थ्रेड नोड्स के बीच संदेश भेजना

आपको किस चीज़ की ज़रूरत पड़ेगी

हार्डवेयर:

  • 3 नॉर्डिक सेमीकंडक्टर nRF52840 देव बोर्ड
  • बोर्डों को जोड़ने के लिए 3 यूएसबी टू माइक्रो-यूएसबी केबल
  • कम से कम 3 यूएसबी पोर्ट के साथ एक लिनक्स मशीन

सॉफ्टवेयर:

  • जीएनयू टूलचिन
  • नॉर्डिक nRF5x कमांड लाइन उपकरण
  • सीगर जे-लिंक सॉफ्टवेयर
  • OpenThread
  • गित

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

OpenThread सिमुलेशन

शुरुआत से पहले, आप OpenThread सिमुलेशन कोडेललैब के माध्यम से चलाना चाह सकते हैं, ताकि मूल थ्रेड अवधारणाओं और OpenThread CLI से परिचित हो सकें।

सीरियल पोर्ट टर्मिनल

आपको एक टर्मिनल के माध्यम से सीरियल पोर्ट से कनेक्ट करने के तरीके से परिचित होना चाहिए। यह कोडलैब स्क्रीन का उपयोग करता है और एक उपयोग अवलोकन प्रदान करता है, लेकिन किसी भी अन्य टर्मिनल सॉफ़्टवेयर का उपयोग किया जा सकता है।

लिनक्स मशीन

यह कोडेलैब एक i386- या x86- आधारित लिनक्स मशीन का उपयोग करने के लिए डिज़ाइन किया गया था, जो एक रेडियो सह-प्रोसेसर (आरसीपी) थ्रेड डिवाइस के मेजबान के रूप में सेवा करने के लिए, और सभी थ्रेड विकास बोर्डों को फ्लैश करने के लिए। सभी चरणों को Ubuntu 14.04.5 LTS (भरोसेमंद तहर) पर परीक्षण किया गया था।

नॉर्डिक सेमीकंडक्टर nRF52840 बोर्ड

यह कोडेलैब तीन nRF52840 PDK बोर्डों का उपयोग करता है।

a6693da3ce213856.png

हम nGF52840 बोर्डों पर प्रोग्राम करने के लिए SEGGER J-Link का उपयोग करते हैं, जिसमें JTAG मॉड्यूल ऑनबोर्ड हैं। इसे अपने लिनक्स मशीन पर स्थापित करें।

डाउनलोड जे-लिंक सॉफ्टवेयर और प्रलेखन पैक

अपनी मशीन के लिए उपयुक्त पैकेज डाउनलोड करें, और इसे उचित स्थान पर स्थापित करें। लिनक्स पर यह /opt/SEGGER/JLink

NRF5x कमांड लाइन उपकरण स्थापित करें

NRF5x कमांड लाइन टूल आपको OpenThread बायनेरिज़ को nRF52840 बोर्डों पर फ्लैश करने की अनुमति देता है। अपने लिनक्स मशीन पर उपयुक्त nRF5x-Command-Line-Tools- <OS> बिल्ड स्थापित करें।

NRF5x कमांड लाइन टूल डाउनलोड करें

निकाले गए पैकेज को रूट फ़ोल्डर में रखें ~/

एआरएम जीएनयू टूलचिन स्थापित करें

एआरएम जीएनयू टूलचिन का उपयोग भवन निर्माण के लिए किया जाता है।

एआरएम जीएनयू टूलचिन पोर्टेबल संग्रह डाउनलोड करें

हम आपके लिनक्स मशीन पर /opt/gnu-mcu-eclipse/arm-none-eabi-gcc/ आर्काइव को /opt/gnu-mcu-eclipse/arm-none-eabi-gcc/ रखने की सलाह देते /opt/gnu-mcu-eclipse/arm-none-eabi-gcc/ । स्थापना निर्देशों के लिए संग्रह के readme.txt फ़ाइल में दिए गए निर्देशों का पालन करें।

स्क्रीन स्थापित करें (वैकल्पिक)

स्क्रीन एक सीरियल पोर्ट द्वारा जुड़े उपकरणों तक पहुँचने के लिए एक सरल उपकरण है। यह कोडलैब स्क्रीन का उपयोग करता है, लेकिन आप अपनी इच्छा से किसी भी सीरियल पोर्ट टर्मिनल एप्लिकेशन का उपयोग कर सकते हैं।

$ sudo apt-get install screen

OpenThread

OpenThread क्लोन और इंस्टॉल करें। script/bootstrap कमांड सुनिश्चित करते हैं कि टूलचेन स्थापित है और पर्यावरण ठीक से कॉन्फ़िगर किया गया है:

0a5c5be60

OpenThread डेमॉन बनाएँ:

$ script/cmake-build posix -DOT_DAEMON=ON
है

अब आप NRF52840 बोर्डों पर OpenThread बनाने और फ्लैश करने के लिए तैयार हैं।

निर्माण और फ्लैश

Joiner और देशी USB कार्यक्षमता के साथ OpenThread nRF52840 उदाहरण बनाएँ। डिवाइस एक थ्रेड नेटवर्क पर सुरक्षित रूप से प्रमाणित और चालू होने के लिए योजक भूमिका का उपयोग करता है। Native USB nRF52840 और होस्ट के बीच सीरियल ट्रांसपोर्ट के रूप में USB CDC ACM के उपयोग को सक्षम करता है।

पिछले चलाकर पहले बनाता है की हमेशा रेपो साफ make clean

$ cd ~/src
$ git clone --recursive https://github.com/openthread/ot-nrf528xx.git
$ cd ot-nrf528xx
$ script/build nrf52840 UART_trans

OpenThread RCP बाइनरी के साथ निर्देशिका पर नेविगेट करें, और इसे हेक्स प्रारूप में बदलें:

$ cd ~/src/ot-nrf528xx/build/bin
$ arm-none-eabi-objcopy -O ihex ot-rcp ot-rcp.hex

NRF52840 बोर्ड पर बाहरी पावर पिन के बगल में माइक्रो-यूएसबी डिबग पोर्ट में यूएसबी केबल संलग्न करें, और फिर इसे लिनक्स मशीन में प्लग करें। VDD से nRF52840 बोर्ड पर NRF शक्ति के स्रोत स्विच सेट करें। जब सही ढंग से जुड़ा हुआ है, तो LED5 चालू है।

20a3b4b480356447.png

यदि यह लिनक्स मशीन से जुड़ा पहला बोर्ड है, तो यह सीरियल पोर्ट /dev/ttyACM0 रूप में प्रकट होता है (सभी nRF52840 बोर्ड सीरियल पोर्ट पहचानकर्ता के लिए ttyACM उपयोग करते हैं)।

$ ls /dev/ttyACM*
/dev/ttyACM0

आरसीपी के लिए उपयोग किए जा रहे nRF52840 बोर्ड के सीरियल नंबर पर ध्यान दें:

c00d519ebec7e5f0.jpeg

NRFx कमांड लाइन टूल्स के स्थान पर नेविगेट करें, और OpenRhread RCP हेक्स फ़ाइल को nRF52840 बोर्ड पर फ्लैश करें, बोर्ड के सीरियल नंबर का उपयोग करके:

$ cd ~/nrfjprog/
$ ./nrfjprog -f nrf52 -s 683704924 --chiperase --program \
       ~/src/ot-nrf528xx/build/bin/ot-rcp.hex --reset

निम्नलिखित आउटपुट सफलता पर उत्पन्न होता है:

Parsing hex file.
Erasing user available code and UICR flash areas.
Applying system reset.
Checking that the area to write is not protected.
Programing device.
Applying system reset.
Run.

बोर्ड को "RCP" लेबल करें ताकि बाद में आप बोर्ड की भूमिकाओं को भ्रमित न करें।

देशी USB से कनेक्ट करें

क्योंकि OpenThread RCP बिल्ड देशी USB CDC ACM को एक सीरियल ट्रांसपोर्ट के रूप में उपयोग करने में सक्षम बनाता है, इसलिए आपको RCP होस्ट (Linux मशीन) से संवाद करने के लिए nRF52840 बोर्ड पर nRF USB पोर्ट का उपयोग करना चाहिए।

USB केबल के माइक्रो-यूएसबी छोर को फ्लैश किए गए nRF52840 बोर्ड के डिबग पोर्ट से अलग करें, फिर RESET बटन के बगल में माइक्रो-यूएसबी nRF USB पोर्ट पर रीटच करें। USB पर nRF पावर सोर्स स्विच सेट करें।

46e7b670d2464842.png

OpenThread Daemon प्रारंभ करें

RCP डिज़ाइन में, थ्रेड डिवाइस के साथ संचार करने और प्रबंधित करने के लिए OpenThread Daemon का उपयोग करें। ot-daemon को -v वर्बोज़ फ़्लैग के साथ शुरू करें ताकि आप लॉग आउटपुट देख सकें और पुष्टि कर सकें कि यह चल रहा है:

$ cd ~/src/openthread
$ ./build/posix/src/posix/ot-daemon -v \
    'spinel+hdlc+uart:///dev/ttyACM0?uart-baudrate=115200'

सफल होने पर, वर्बोज़ मोड में ot-daemon निम्नलिखित के समान आउटपुट उत्पन्न करता है:

ot-daemon[228024]: Running OPENTHREAD/20191113-00831-gfb399104; POSIX; Jun  7 2020 18:05:15
ot-daemon[228024]: Thread version: 2
ot-daemon[228024]: RCP version: OPENTHREAD/20191113-00831-gfb399104; SIMULATION; Jun  7 2020 18:06:08

इस टर्मिनल विंडो को खुला छोड़ दें ताकि ot-daemon से लॉग देखे जा सकें।

RCP नोड के साथ संचार करने के लिए ot-ctl का उपयोग करें। ओटी- ot-ctl OpenThread CLI ऐप के समान CLI का उपयोग करता है। इसलिए, आप अन्य सिम्युलेटेड थ्रेड डिवाइसों की तरह ही ot-daemon नोड्स को नियंत्रित कर सकते हैं।

दूसरे टर्मिनल विंडो में, ot-ctl शुरू करें:

$ ./output/posix/bin/ot-ctl
>

state की जाँच करें नोड 2 (आरसीपी नोड) जिसे आपने ot-daemon साथ शुरू किया था:

> state
disabled
Done

इस कोडेलैब में प्रयुक्त अन्य दो थ्रेड नोड्स मानक सिस्टम-ऑन-चिप (SoC) डिज़ाइन पर पूर्ण थ्रेड डिवाइसेस (FTDs) हैं। वे wpantund उपयोग नहीं करते हैं, और उपयोगकर्ता मैन्युअल रूप से उन्हें OpenThread CLI के साथ प्रबंधित करता है।

एक उपकरण आयुक्त के रूप में कार्य करता है, उस नेटवर्क पर उपकरणों को सुरक्षित रूप से प्रमाणित करने और कमीशन करने के लिए। अन्य डिवाइस एक योजक के रूप में कार्य करता है जो आयुक्त थ्रेड नेटवर्क को प्रमाणित कर सकता है।

निर्माण और फ्लैश

NRF52840 प्लेटफ़ॉर्म के लिए OpenThread FTD उदाहरण बनाएँ, जिसमें कमिश्नर और जॉइनर सक्षम हैं:

$ cd ~/src/ot-nrf528xx
$ rm -rf build
$ script/build nrf52840 UART_trans -DOT_JOINER=ON -DOT_COMMISSIONER=ON

OpenThread पूर्ण थ्रेड डिवाइस (FTD) CLI बाइनरी के साथ निर्देशिका पर नेविगेट करें, और इसे हेक्स स्वरूप में कनवर्ट करें:

$ cd ~/src/ot-nrf528xx/build/bin
$ arm-none-eabi-objcopy -O ihex ot-cli-ftd ot-cli-ftd.hex

NRF52840 बोर्ड पर बाहरी पावर पिन के बगल में माइक्रो-यूएसबी पोर्ट में यूएसबी केबल संलग्न करें, और फिर इसे लिनक्स मशीन में प्लग करें। यदि RCP अभी भी लिनक्स मशीन से जुड़ा हुआ है, तो यह नया बोर्ड सीरियल पोर्ट /dev/ttyACM1 (सभी nRF52840 बोर्ड सीरियल पोर्ट पहचानकर्ता के लिए ttyACM उपयोग ttyACM ) के रूप में दिखाई देना चाहिए।

$ ls /dev/ttyACM*
/dev/ttyACM0  /dev/ttyACM1

पहले की तरह, FTD के लिए उपयोग किए जा रहे nRF52840 बोर्ड के सीरियल नंबर पर ध्यान दें:

c00d519ebec7e5f0.jpeg

NRFx कमांड लाइन टूल्स के स्थान पर नेविगेट करें, और nRF52840 बोर्ड पर OpenThread CLI FTD हेक्स फ़ाइल को बोर्ड के सीरियल नंबर का उपयोग करके फ्लैश करें:

056311 सी 630

बोर्ड को "आयुक्त।"

निर्माण सत्यापित करें

टर्मिनल विंडो से GNU स्क्रीन का उपयोग करके OpenThread CLI तक पहुँच कर एक सफल बिल्ड को सत्यापित करें। NRF52840 बोर्ड 115200 की बॉड दर का उपयोग करते हैं।

$ screen /dev/ttyACM1 115200

नई विंडो में, OpenThread CLI > प्रॉम्प्ट को लाने के लिए कीबोर्ड पर रिटर्न को कुछ बार दबाएं। IPv6 इंटरफ़ेस लाओ और पते की जाँच करें:

> ifconfig up
Done
> ipaddr
fe80:0:0:0:1cd6:87a9:cb9d:4b1d
Done

Ctrl + a → का उपयोग करें

d FTD कमिश्नर CLI स्क्रीन से अलग करने और लिनक्स टर्मिनल पर लौटने के लिए ताकि अगले बोर्ड को फ्लैश किया जा सके। किसी भी समय CLI को फिर से दर्ज करने के लिए, कमांड लाइन से screen -r उपयोग करें। उपलब्ध स्क्रीन की सूची देखने के लिए, screen -ls उपयोग करें:

$ screen -ls
There is a screen on:
        74182.ttys000.mylinuxmachine        (Detached)
1 Socket in /tmp/uscreens/S-username.

FTD जॉइनर सेट करें

तीसरे nRF52840 बोर्ड को फ्लैश करने के लिए उपरोक्त प्रक्रिया को दोहराएँ, मौजूदा ot-cli-ftd.hex बिल्ड का उपयोग करके।

यदि यह तीसरा बोर्ड संलग्न होने पर अन्य दो नोड्स लिनक्स मशीन से जुड़े होते हैं, तो इसे सीरियल पोर्ट /dev/ttyACM2 रूप में प्रदर्शित होना चाहिए:

$ ls /dev/ttyACM*
/dev/ttyACM0  /dev/ttyACM1  /dev/ttyACM2

लेबल "जॉइनर।"

कमांड लाइन से स्क्रीन का एक नया उदाहरण बनाने के बजाय, स्क्रीन का उपयोग करते हुए सत्यापित करें, मौजूदा एक को रीटच करें और इसके भीतर एक नई विंडो बनाएं (जो कि आपने FTD आयुक्त के लिए उपयोग किया है):

$ screen -r

Ctrl + a → के साथ स्क्रीन के भीतर नई विंडो बनाएँ

c **। ** एक नई कमांड लाइन प्रॉम्प्ट दिखाई देती है। FTT योजक के लिए OpenThread CLI पर पहुँचें:

07 बी 4 ए 56650

इस नई विंडो में, OpenThread CLI > प्रॉम्प्ट को लाने के लिए कीबोर्ड पर रिटर्न को कुछ बार दबाएं। IPv6 इंटरफ़ेस लाओ और पते की जाँच करें:

> ifconfig up
Done
> ipaddr
fe80:0:0:0:6c1e:87a2:df05:c240
Done

अब जबकि FTD Joiner CLI स्क्रीन के उसी उदाहरण में है जैसे FTD कमिश्नर, आप Ctrl + a → n का उपयोग करके उनके बीच स्विच कर सकते हैं।

Ctrl + a → का उपयोग करें

d किसी भी समय स्क्रीन से बाहर निकलने के लिए।

आगे बढ़ते हुए, आप थ्रेड उपकरणों के बीच अक्सर स्विच करते रहेंगे, इसलिए सुनिश्चित करें कि वे सभी लाइव और आसानी से उपलब्ध हैं। अब तक, हम दो FTDs का उपयोग करने के लिए स्क्रीन का उपयोग कर रहे हैं, और यह उपकरण समान टर्मिनल विंडो पर स्क्रीन को विभाजित करने की भी अनुमति देता है। यह देखने के लिए कि एक नोड दूसरे पर जारी आदेशों पर कैसे प्रतिक्रिया करता है।

आदर्श रूप से, आपके पास चार खिड़कियां आसानी से उपलब्ध होनी चाहिए:

  1. ot-daemon सेवा / लॉग
  2. ओटीसी ot-ctl माध्यम से आरसीपी जॉइनर
  3. OpenThread CLI के माध्यम से FTD कमिश्नर
  4. OpenThread CLI के माध्यम से FTD योजक

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

स्क्रीन का उपयोग करना

उपयोग में आसानी के लिए, केवल एक स्क्रीन सत्र शुरू करें। आपके पास पहले से ही एक होना चाहिए जब आप दोनों FTDs सेट करते हैं।

स्क्रीन के भीतर सभी कमांड Ctrl + a के साथ शुरू होती हैं।

बेसिक स्क्रीन कमांड:

स्क्रीन सत्र के लिए रीटच (कमांड लाइन से)

screen -r

स्क्रीन सत्र छोड़ दें

Ctrl + a → d

स्क्रीन सत्र के भीतर नई विंडो बनाएं

Ctrl + a → c

एक ही स्क्रीन सत्र में खिड़कियों के बीच स्विच करें

Ctrl + a → n (आगे) Ctrl + a → p (पीछे)

स्क्रीन सत्र में वर्तमान विंडो को मारें

Ctrl + a → k

विभाजित स्क्रीन

स्क्रीन के साथ, आप टर्मिनल को कई विंडो में विभाजित कर सकते हैं:

f1cbf1258cf0a5a.png

Ctrl + a के उपयोग से screen कमांड को एक्सेस किया जाता है। प्रत्येक कमांड को इस एक्सेस कुंजी कॉम्बो के साथ शुरू करना चाहिए।

यदि आप बिल्कुल कोडेलैब का अनुसरण कर रहे हैं, तो आपके पास एक ही स्क्रीन उदाहरण पर दो विंडो (FTD कमिश्नर, FTD Joiner) होनी चाहिए। स्क्रीन को दोनों के बीच विभाजित करने के लिए, पहले अपना मौजूदा स्क्रीन सत्र दर्ज करें:

$ screen -r

आपको FTD उपकरणों में से एक पर होना चाहिए। स्क्रीन में इन चरणों का पालन करें:

  1. Ctrl + a → S विंडो को क्षैतिज रूप से विभाजित करने के लिए
  2. Ctrl + a → Tab को कर्सर को नई खाली विंडो में ले जाने के लिए
  3. Ctrl + a → n उस नई विंडो को अगले एक पर स्विच करने के लिए
  4. यदि यह शीर्ष विंडो के समान है, तो Ctrl + a → n फिर से अन्य FTD डिवाइस को देखने के लिए

वे अब दोनों दिखाई दे रहे हैं। Ctrl + a → Tab का उपयोग करके उनके बीच स्विच करें। यह आपको भ्रम से बचने के लिए Ctrl + a → A साथ प्रत्येक विंडो को फिर से बनाने की सलाह देता है।

उन्नत उपयोग

आगे स्क्रीन को क्वैडंट में विभाजित करने और ot-daemon लॉग और आरसीपी जॉइनर ot-ctl , उन सेवाओं को इसी स्क्रीन उदाहरण के भीतर शुरू किया जाना चाहिए। ऐसा करने के लिए, ot-daemon रोकें और ot-ctl बाहर निकलें, और उन्हें नए स्क्रीन विंडो (Ctrl + a → c ) के भीतर पुनरारंभ करें।

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

निम्न आदेशों के साथ विंडो के बीच विभाजन और नेविगेट करें:

नई विंडो बनाएं

Ctrl + a → c

खड़खड़ खिड़की खड़ी

Ctrl + a

क्षैतिज रूप से विभाजित विंडो

Ctrl + a → S

अगली प्रदर्शित विंडो पर जाएं

Ctrl + a → Tab

प्रदर्शित विंडो को आगे या पीछे स्विच करें

Ctrl + a → n या p

वर्तमान विंडो का नाम बदलें

Ctrl + a → A

Ctrl + a → d साथ किसी भी समय स्क्रीन छोड़ दें और कमांड लाइन से screen -r साथ reattach करें।

स्क्रीन पर अधिक जानकारी के लिए, GNU स्क्रीन त्वरित संदर्भ देखें

अब जब आपके पास अपने सभी टर्मिनल विंडो और स्क्रीन कॉन्फ़िगर हैं, तो हमारा थ्रेड नेटवर्क बनाएं। FTD कमिश्नर पर , एक नया ऑपरेशनल डेटासेट बनाएं और इसे सक्रिय के रूप में प्रतिबद्ध करें। ऑपरेशनल डेटासेट आपके द्वारा बनाए जा रहे थ्रेड नेटवर्क के लिए कॉन्फ़िगरेशन है।

## FTD Commissioner ##
----------------------

> dataset init new
Done
> dataset
Active Timestamp: 1
Channel: 11
Channel Mask: 07fff800
Ext PAN ID: c0de7ab5c0de7ab5
Mesh Local Prefix: fdc0:de7a:b5c0/64
Master Key: 1234c0de7ab51234c0de7ab51234c0de
Network Name: OpenThread-c0de
PAN ID: 0xc0de
PSKc: ebb4f2f8a68026fc55bcf3d7be3e6fe4
Security Policy: 0, onrcb
Done

मास्टर कुंजी 1234c0de7ab51234c0de7ab51234c0de उपयोग करें जिसे बाद में उपयोग किया जाएगा।

इस डेटासेट को सक्रिय के रूप में प्रतिबद्ध करें:

> dataset commit active
Done

IPv6 इंटरफ़ेस लाओ:

> ifconfig up
Done

थ्रेड प्रोटोकॉल ऑपरेशन शुरू करें:

> thread start
Done

एक पल के बाद, डिवाइस स्थिति की जांच करें। यह लीडर होना चाहिए। भविष्य के संदर्भ के लिए RLOC16 भी प्राप्त करें।

## FTD Commissioner ##
----------------------

> state
leader
Done
> rloc16
0c00
Done

डिवाइस के IPv6 पते की जाँच करें:

## FTD Commissioner ##
----------------------

> ipaddr
fdc0:de7a:b5c0:0:0:ff:fe00:fc00        # Leader Anycast Locator (ALOC)
fdc0:de7a:b5c0:0:0:ff:fe00:c00         # Routing Locator (RLOC)
fdc0:de7a:b5c0:0:6394:5a75:a1ad:e5a    # Mesh-Local EID (ML-EID)
fe80:0:0:0:1cd6:87a9:cb9d:4b1d         # Link-Local Address (LLA)

"थ्रेडब" नेटवर्क अब दिखाई देता है जब अन्य थ्रेड उपकरणों से स्कैन किया जाता है।

RCP जॉइनर पर ot-ctl से:

## RCP Joiner ##
----------------

> scan
| J | Network Name     | Extended PAN     | PAN  | MAC Address      | Ch | dBm | LQI |
+---+------------------+------------------+------+------------------+----+-----+-----+
| 0 | OpenThread-c0de  | c0de7ab5c0de7ab5 | c0de | 1ed687a9cb9d4b1d | 11 | -36 | 232 |

FTD योजक पर OpenThread CLI से:

## FTD Joiner ##
----------------

> scan
| J | Network Name     | Extended PAN     | PAN  | MAC Address      | Ch | dBm | LQI |
+---+------------------+------------------+------+------------------+----+-----+-----+
| 0 | OpenThread-c0de  | c0de7ab5c0de7ab5 | c0de | 1ed687a9cb9d4b1d | 11 | -38 | 229 |

यदि "कोडलैब" नेटवर्क सूची में दिखाई नहीं देता है, तो फिर से स्कैन करने का प्रयास करें।

आप ध्यान दें कि दोनों स्कैन में, नेटवर्क जुड़ने योग्य नहीं लगता है (RCP जॉइनर और FTD जॉइनर पर J कॉलम)। इसका मतलब केवल यह है कि थ्रेड कमीशन नेटवर्क पर सक्रिय नहीं है। यह अभी भी आउट-ऑफ-बैंड में शामिल हो सकता है, मैन्युअल रूप से योजक डिवाइस में नेटवर्क मास्टर कुंजी दर्ज करके।

चलो हमारे द्वारा बनाए गए थ्रेड नेटवर्क में RCP जॉइनर जोड़ते हैं, एक आउट-ऑफ-बैंड प्रक्रिया का उपयोग करते हुए। RCP योजक पर नेटवर्क के लिए स्कैन करें:

## RCP Joiner ##
----------------

> scan
| J | Network Name     | Extended PAN     | PAN  | MAC Address      | Ch | dBm | LQI |
+---+------------------+------------------+------+------------------+----+-----+-----+
| 0 | OpenThread-c0de  | c0de7ab5c0de7ab5 | c0de | 1ed687a9cb9d4b1d | 11 | -38 | 229 |

शामिल होने के लिए, अपने सक्रिय डेटासेट में RCP जॉइनर पर नेटवर्क मास्टर कुंजी (हम सिर्फ FTD कमिश्नर से प्राप्त करें) सेट करें।

## RCP Joiner ##
----------------

> dataset masterkey 1234c0de7ab51234c0de7ab51234c0de
Done
> dataset commit active
Done

यह सुनिश्चित करने के लिए डेटासेट की जाँच करें कि यह सही तरीके से सेट है।

## RCP Joiner ##
----------------

> dataset
Master Key: 1234c0de7ab51234c0de7ab51234c0de

थ्रेड अप करें ताकि आरसीपी जॉइनर "कोडलैब" नेटवर्क में शामिल हो जाए। कुछ सेकंड रुकें, राज्य, RLOC16 और उसके IPv6 पतों की जाँच करें:

## RCP Joiner ##
----------------

> thread start
Done
> state
child
Done
> rloc16
0c01
Done
> ipaddr
fdc0:de7a:b5c0:0:0:ff:fe00:0c01         # Routing Locator (RLOC)
fdc0:de7a:b5c0:0:66bf:99b9:24c0:d55f    # Mesh-Local EID (ML-EID)
fe80:0:0:0:18e5:29b3:a638:943b          # Link-Local Address (LLA)
Done

मेश-लोकल आईपीवी 6 एड्रेस ( fdc0:de7a:b5c0:0:66bf:99b9:24c0:d55f यहाँ) पर ध्यान दें, आप इसे बाद में उपयोग करेंगे।

FTD आयुक्त पर वापस, दोनों उपकरणों की पुष्टि करने के लिए राउटर और चाइल्ड टेबल की जांच करें कि वे एक ही नेटवर्क का हिस्सा हैं। RCP जॉइनर की पहचान करने के लिए RLOC16 का उपयोग करें।

## FTD Commissioner ##
----------------------

> router table
| ID | RLOC16 | Next Hop | Path Cost | LQ In | LQ Out | Age | Extended MAC     |
+----+--------+----------+-----------+-------+--------+-----+------------------+
|  3 | 0x0c00 |        3 |         0 |     0 |      0 |  35 | 1ed687a9cb9d4b1d |

Done
> child table
| ID  | RLOC16 | Timeout    | Age        | LQ In | C_VN |R|S|D|VER| Extended MAC     |
+-----+--------+------------+------------+-------+------+-+-+-+---+------------------+
|   1 | 0x0c01 |        240 |         25 |     3 |   89 |1|1|1|  2| 1ae529b3a638943b |
Done

कनेक्टिविटी को सत्यापित करने के लिए RCP योजक (RCP योजक के ipaddr आउटपुट से प्राप्त मेश-स्थानीय पता) के जाली-स्थानीय पते को पिंग करें:

## FTD Commissioner ##
----------------------

> ping fdc0:de7a:b5c0:0:66bf:99b9:24c0:d55f
> 8 bytes from fdc0:de7a:b5c0:0:66bf:99b9:24c0:d55f: icmp_seq=1 hlim=64 time=40ms

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

otcodelab_top01C_2nodes.png

टोपोलॉजी आरेख

जब आप बाकी कोडेलैब के माध्यम से काम करते हैं, तो जब भी नेटवर्क में परिवर्तन होता है, हम एक नया थ्रेड टोपोलॉजी आरेख प्रदर्शित करेंगे। नोड भूमिकाओं को निम्नानुसार दर्शाया जाता है:

b75a527be4563215.png

राउटर हमेशा पेंटागन होते हैं, और एंड डिवाइसेस हमेशा सर्कल होते हैं। प्रत्येक नोड पर संख्या उस समय प्रत्येक नोड की वर्तमान भूमिका और स्थिति के आधार पर, सीएलआई आउटपुट में दिखाए गए राउटर आईडी या चाइल्ड आईडी का प्रतिनिधित्व करती है।

अब तीसरे थ्रेड डिवाइस को "कोडलैब" नेटवर्क में जोड़ें। इस बार हम अधिक सुरक्षित इन-बैंड कमीशन प्रक्रिया का उपयोग करने जा रहे हैं। FTD योजक पर , नेटवर्क के लिए स्कैन करें:

## FTD Joiner ##
----------------

> scan
| J | Network Name     | Extended PAN     | PAN  | MAC Address      | Ch | dBm | LQI |
+---+------------------+------------------+------+------------------+----+-----+-----+
| 0 | OpenThread-c0de  | c0de7ab5c0de7ab5 | c0de | f65ae2853ff0c4e4 | 11 | -36 |  57 |

J कॉलम में A 0 इंगित करता है कि थ्रेड कमीशनिंग डिवाइस पर सक्रिय नहीं है।

आइए इस विशिष्ट उपकरण पर कमीशन करते समय विशिष्ट हों, और केवल FTD जॉइनर को शामिल होने दें। फिर भी FTD जॉइनर पर, eui64 प्राप्त करें, इसलिए FTD कमिश्नर इसकी पहचान कर सकते हैं:

## FTD Joiner ##
----------------

> eui64
2f57d222545271f1
Done

eui64 कमिश्नर पर , कमिश्नर को शुरू करें और डिवाइस के eui64 को निर्दिष्ट करें जो जॉइनर क्रेडेंशियल के साथ जुड़ सकते हैं। योजक क्रेडेंशियल एक डिवाइस-विशिष्ट पासफ़्रेज़ है।

## FTD Commissioner ##
----------------------

> commissioner start
Done
> commissioner joiner add 2f57d222545271f1 J01NME
Done

FTD जॉइनर , और rescan पर स्विच करें:

0bd2b290

जैसा कि J कॉलम में 1 द्वारा दर्शाया गया है, थ्रेड कमीशनिंग अब नेटवर्क पर सक्रिय है। जॉइनर क्रेडेंशियल के साथ जॉइनर की भूमिका शुरू करें जिसे आपने एफटीडी कमिश्नर के सामने रखा था:

## FTD Joiner ##
----------------

> ifconfig up
Done
> joiner start J01NME
Done

एक या दो मिनट के भीतर, आपको एक सफल प्रमाणीकरण की पुष्टि मिल जाती है:

## FTD Joiner ##
----------------

>
Join success
है

थ्रेड को ऊपर लाएं ताकि एफटीडी जॉइनर "कोडलैब" नेटवर्क में शामिल हो जाए, और तुरंत राज्य और आरएलओसी 16 की जांच करें:

## FTD Joiner ##
----------------

> thread start
Done
> state
child
Done
> rloc16
0c02
Done

डिवाइस के आईपीवी 6 पते की जांच करें। ध्यान दें कि कोई ALOC नहीं है। ऐसा इसलिए है क्योंकि यह डिवाइस लीडर नहीं है, न ही यह एक एनास्टैस्ट-विशिष्ट भूमिका रखता है जिसे ALOC की आवश्यकता होती है।

## FTD Joiner ##
----------------

> ipaddr
fdc0:de7a:b5c0:0:0:ff:fe00:c02         # Routing Locator (RLOC)
fdc0:de7a:b5c0:0:3e2e:66e:9d41:ebcd    # Mesh-Local EID (ML-EID)
fe80:0:0:0:e4cd:d2d9:3249:a243         # Link-Local Address (LLA)

तुरंत FTD कमिश्नर के पास जाएं और "कोडलैब" नेटवर्क में तीन डिवाइस मौजूद हैं, इसकी पुष्टि करने के लिए राउटर और चाइल्ड टेबल की जांच करें:

## FTD Commissioner ##
----------------------

> router table
| ID | RLOC16 | Next Hop | Path Cost | LQ In | LQ Out | Age | Extended MAC     |
+----+--------+----------+-----------+-------+--------+-----+------------------+
|  3 | 0x0c00 |        3 |         0 |     0 |      0 |  50 | 1ed687a9cb9d4b1d |

> child table
| ID  | RLOC16 | Timeout    | Age        | LQ In | C_VN |R|S|D|N| Extended MAC     |
+-----+--------+------------+------------+-------+------+-+-+-+-+------------------+
|   1 | 0x0c01 |        240 |         25 |     3 |   89 |1|1|1|1| 1ae529b3a638943b |
|   2 | 0x0c02 |        240 |         15 |     3 |   44 |1|1|1|1| e6cdd2d93249a243 |
Done

आरएलओसी 16 के आधार पर, एफटीडी जॉइनर ने एंड डिवाइस (बच्चे) के रूप में नेटवर्क से जुड़ा है। यहाँ हमारे अद्यतन टोपोलॉजी है:

otcodelab_top01C_ed01.png

इस कोडेलैब में थ्रेड डिवाइस एक विशिष्ट प्रकार का फुल थ्रेड डिवाइस (FTD) है, जिसे राउटर एलिगेंट एंड डिवाइस (REED) कहा जाता है। इसका मतलब है कि वे राउटर या एंड डिवाइस के रूप में कार्य कर सकते हैं, और एक एंड डिवाइस से एक राउटर तक खुद को बढ़ावा दे सकते हैं।

थ्रेड 32 राउटर तक का समर्थन कर सकता है, लेकिन 16 और 23 के बीच राउटर की संख्या को रखने की कोशिश करता है। अगर एक आरईडी एक एंड डिवाइस (बच्चे) के रूप में संलग्न करता है और राउटर की संख्या 16 से नीचे है, तो दो मिनट के भीतर यादृच्छिक समय के बाद। स्वचालित रूप से एक रूटर के लिए खुद को बढ़ावा देता है।

यदि आपके पास FTD योजक में जोड़ने के बाद आपके थ्रेड नेटवर्क में दो बच्चे हैं, तो कम से कम दो मिनट प्रतीक्षा करें, और फिर FTD आयुक्त पर राउटर और बच्चे की तालिकाओं को पुन: जाँचें :

## FTD Commissioner ##
----------------------

> router table
| ID | RLOC16 | Next Hop | Path Cost | LQ In | LQ Out | Age | Extended MAC     |
+----+--------+----------+-----------+-------+--------+-----+------------------+
|  3 | 0x0c00 |        3 |         0 |     0 |      0 |  50 | 1ed687a9cb9d4b1d |
| 46 | 0xb800 |       63 |         0 |     3 |      3 |   1 | e6cdd2d93249a243 |

> child table
| ID  | RLOC16 | Timeout    | Age        | LQ In | C_VN |R|S|D|N| Extended MAC     |
+-----+--------+------------+------------+-------+------+-+-+-+-+------------------+
|   1 | 0x0c01 |        240 |         61 |     3 |   89 |1|1|1|1| 1ae529b3a638943b |
Done

FTD जॉइनर (एक्सटेंडेड मैक = e6cdd2d93249a243 ) ने खुद को एक राउटर में प्रमोट किया है। ध्यान दें कि RLOC16 अलग है ( b800 बजाय 0c02 )। ऐसा इसलिए है क्योंकि RLOC16 डिवाइस के राउटर आईडी और चाइल्ड आईडी पर आधारित है। जब यह एंड डिवाइस से राउटर में स्थानांतरित होता है, तो इसकी राउटर आईडी और चाइल्ड आईडी मान बदल जाते हैं, और इसी तरह RLOC16 होता है।

otcodelab_top01C.png

नए राज्य और RLOC16 की पुष्टि FTD जॉइनर पर करें :

## FTD Joiner ##
----------------

> state
router
Done
> rloc16
b800
Done
है

FTD जॉइनर को डाउनग्रेड करें

आप इस व्यवहार को मैन्युअल रूप से FTD योजक को एक राउटर से एंड डिवाइस पर अपग्रेड करके परीक्षण कर सकते हैं। बच्चे को राज्य बदलें और RLOC16 की जाँच करें:

## FTD Joiner ##
----------------

> state child
Done
> rloc16
0c03
Done

otcodelab_top01C_ed02.png

FTD कमिश्नर पर , FTD जॉइनर को अब चाइल्ड टेबल (ID = 3) में दिखना चाहिए। संक्रमण होते समय भी यह दोनों में हो सकता है:

## FTD Commissioner ##
----------------------

> router table
| ID | RLOC16 | Next Hop | Path Cost | LQ In | LQ Out | Age | Extended MAC     |
+----+--------+----------+-----------+-------+--------+-----+------------------+
|  3 | 0x0c00 |        3 |         0 |     0 |      0 |  50 | 1ed687a9cb9d4b1d |
| 46 | 0xb800 |       63 |         0 |     3 |      3 |   1 | e6cdd2d93249a243 |

> child table
| ID  | RLOC16 | Timeout    | Age        | LQ In | C_VN |R|S|D|N| Extended MAC     |
+-----+--------+------------+------------+-------+------+-+-+-+-+------------------+
|   1 | 0x0c01 |        240 |         61 |     3 |   89 |1|1|1|1| 1ae529b3a638943b |
|   3 | 0x0c03 |        240 |         16 |     3 |   94 |1|1|1|1| e6cdd2d93249a243 |
Done

कुछ समय बाद, यह b800 के b800 साथ एक राउटर में वापस आ जाएगा।

otcodelab_top01C.png

नेता को हटाओ

लीडर सभी थ्रेड राउटर्स में सेल्फ-निर्वाचित होता है। इसका अर्थ है कि यदि थ्रेड नेटवर्क से वर्तमान लीडर को हटा दिया जाता है, तो अन्य राउटर्स में से एक नया लीडर बन जाएगा।

FTD कमिश्नर पर , थ्रेड नेटवर्क से इसे हटाने के लिए थ्रेड को बंद करें:

## FTD Commissioner ##
----------------------

> thread stop
Done
> ifconfig down
Done

दो मिनट के भीतर, FTD Joiner नया थ्रेड लीडर बन जाता है। सत्यापित करने के लिए FTD योजक के राज्य और IPv6 पतों की जाँच करें:

## FTD Joiner ##
----------------

> state
leader
Done
> ipaddr
fdc0:de7a:b5c0:0:0:ff:fe00:fc00       # Now it has the Leader ALOC!
fdc0:de7a:b5c0:0:0:ff:fe00:b800
fdc0:de7a:b5c0:0:3e2e:66e:9d41:ebcd
fe80:0:0:0:e4cd:d2d9:3249:a243
Done

otcodelab_top02C_01.png

बच्चे की मेज की जाँच करें। ध्यान दें कि एक नया RLOC16 है। यह आरसीपी जॉइनर है, जैसा कि इसकी आईडी और विस्तारित मैक द्वारा इंगित किया गया है। थ्रेड नेटवर्क को एक साथ रखने के लिए, इसने पैरंट राउटर्स को बदल दिया है, FTD कमिश्नर से FTD जॉइनर तक। यह RCP जॉइनर के लिए एक नए RLOC16 में परिणाम देता है (क्योंकि इसकी राउटर आईडी बदल गई, 3 से 46 तक)।

## FTD Joiner ##
----------------

> child table
| ID  | RLOC16 | Timeout    | Age        | LQ In | C_VN |R|S|D|N| Extended MAC     |
+-----+--------+------------+------------+-------+------+-+-+-+-+------------------+
|   1 | 0xb801 |        240 |         27 |     3 |  145 |1|1|1|1| 1ae529b3a638943b |
Done

एक बच्चे के रूप में एफटीडी जॉइनर को संलग्न करने के लिए आपको आरसीपी जॉइनर के लिए कुछ मिनट इंतजार करना पड़ सकता है। पुष्टि करने के लिए राज्य और RLOC16 की जाँच करें:

## RCP Joiner ##
--------------

> state
child
> rloc16
b801

FTD कमिश्नर को रिटेट करें

दो नोड्स के साथ एक थ्रेड नेटवर्क बहुत मजेदार नहीं है। आइए, एफटीडी आयुक्त को ऑनलाइन वापस लाएं।

FTD कमिश्नर पर , थ्रेड को पुनः आरंभ करें:

## FTD Commissioner ##
----------------------

> ifconfig up
Done
> thread start
Done

दो मिनट के भीतर, यह स्वचालित रूप से एंड कोड डिवाइस के रूप में "कोडलैब" नेटवर्क पर पहुंच जाता है, और फिर एक राउटर के लिए खुद को बढ़ावा देता है।

## FTD Commissioner ##
----------------------

> state
router
Done

सत्यापित करने के लिए FTD योजक पर राउटर और चाइल्ड टेबल की जाँच करें:

## FTD Joiner ##
----------------

> router table
| ID | RLOC16 | Next Hop | Path Cost | LQ In | LQ Out | Age | Extended MAC     |
+----+--------+----------+-----------+-------+--------+-----+------------------+
|  3 | 0x0c00 |       63 |         0 |     3 |      3 |   0 | 1ed687a9cb9d4b1d |
| 46 | 0xb800 |       46 |         0 |     0 |      0 |  15 | e6cdd2d93249a243 |

> child table
| ID  | RLOC16 | Timeout    | Age        | LQ In | C_VN |R|S|D|N| Extended MAC     |
+-----+--------+------------+------------+-------+------+-+-+-+-+------------------+
|   1 | 0xb801 |        240 |        184 |     3 |  145 |1|1|1|1| 1ae529b3a638943b |
Done

otcodelab_top02C_02.png

हमारे थ्रेड नेटवर्क में तीन नोड्स होते हैं।

विभिन्न टर्मिनल या स्क्रीन विंडो पर कई उपकरणों के साथ थ्रेड नेटवर्क का प्रबंधन जटिल हो सकता है। यदि आप समस्याओं का सामना करते हैं तो नेटवर्क या अपने कार्यक्षेत्र की स्थिति को "रीसेट" करने के लिए इन युक्तियों का उपयोग करें।

स्क्रीन

यदि आप कभी भी अपने कॉन्फ़िगरेशन (बहुत अधिक स्क्रीन विंडो, या स्क्रीन के भीतर स्क्रीन) में खो जाते हैं, तो Ctrl + a → k के साथ स्क्रीन विंडो को तब तक screen -ls जब तक कोई मौजूद न हो और कमांड लाइन आउटपुट पर screen -ls No Sockets found । फिर प्रत्येक डिवाइस के लिए स्क्रीन विंडोज को फिर से बनाएँ। स्क्रीन मारे जाने पर भी डिवाइस की स्थिति बरकरार रहती है।

थ्रेड नोड्स

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

FTDs रीसेट करने के लिए:

## FTD Commissioner or FTD Joiner ##
------------------------------------

> thread stop
Done
> ifconfig down
Done
> factoryreset
Done

RCP को उसी तरह से ot-ctl माध्यम से रीसेट किया जा सकता है:

## RCP Joiner ##
----------------

> thread stop
Done
> ifconfig down
Done
> factoryreset
Done

मल्टीकास्ट का उपयोग एक ही बार में उपकरणों के समूह को जानकारी संवाद करने के लिए किया जाता है। थ्रेड नेटवर्क में, विशिष्ट पते स्कोप के आधार पर विभिन्न समूहों के उपकरणों के साथ मल्टीकास्ट उपयोग के लिए आरक्षित होते हैं।

IPv6 पता

क्षेत्र

को पहुंचा दिया गया

ff02::1

लिंक स्थानीय

सभी एफटीडी और मेड

ff02::2

लिंक स्थानीय

सभी FTDs और बॉर्डर राउटर

ff03::1

मेष- स्थानीय

सभी एफटीडी और मेड्स

ff03::2

मेष- स्थानीय

सभी FTDs और बॉर्डर राउटर

चूंकि हम इस कोडेलैब में बॉर्डर राउटर का उपयोग नहीं कर रहे हैं, आइए दो एफटीडी और मेड मल्टीकास्ट पते पर ध्यान केंद्रित करें।

लिंक-लोकल स्कोप में एकल रेडियो प्रसारण, या एकल "हॉप" द्वारा उपलब्ध सभी थ्रेड इंटरफेस शामिल हैं। नेटवर्क टोपोलॉजी तय करता है कि कौन से उपकरण ff02::1 मल्टीकास्ट एड्रेस के लिए पिंग का जवाब देते हैं।

ff02::1 आयुक्त से पिंग ff02::1 :

## FTD Commissioner ##
----------------------

> ping ff02::1
> 8 bytes from fe80:0:0:0:e4cd:d2d9:3249:a243: icmp_seq=2 hlim=64 time=9ms

नेटवर्क में दो अन्य डिवाइस हैं (FTD Joiner और RCP Joiner), लेकिन FTD कमिश्नर को केवल एक ही प्रतिक्रिया मिली, FTD जॉइनर के लिंक-लोकल एड्रेस (LLA) से। इसका मतलब यह है कि एफटीडी जॉइनर एकमात्र उपकरण है जो एफटीडी कमिश्नर एकल हॉप के साथ पहुंच सकता है।

otcodelab_top02C_02_LL.png

अब ff02::1 को FTD जॉइनर से :

## FTD Joiner ##
----------------

> ping ff02::1
> 8 bytes from fe80:0:0:0:1cd6:87a9:cb9d:4b1d: icmp_seq=1 hlim=64 time=11ms
8 bytes from fe80:0:0:0:18e5:29b3:a638:943b: icmp_seq=1 hlim=64 time=24ms

दो प्रतिक्रियाएँ! अन्य उपकरणों के लिए IPv6 पतों की जाँच करना, हम पहले एक ( 4b1d में समाप्त) को देख सकते हैं, FTD कमिश्नर का LLA है, और दूसरा वाला ( 943b में समाप्त) RCP जॉइनर का LLA है।

otcodelab_top02C_02_LL02.png

इसका मतलब है कि FTD जॉइनर सीधे FTD कमिश्नर और RCP जॉइनर दोनों से जुड़ा है, जो हमारे टोपोलॉजी की पुष्टि करता है।

मेष- स्थानीय

मेश-लोकल स्कोप में समान थ्रेड नेटवर्क के भीतर उपलब्ध सभी थ्रेड इंटरफेस शामिल हैं। आइए देखें पिंग की प्रतिक्रियाओं को ff03::1 मल्टीकास्ट एड्रेस।

ff03::1 आयुक्त से पिंग ff03::1 :

## FTD Commissioner ##
----------------------

> ping ff03::1
> 8 bytes from fdc0:de7a:b5c0:0:0:ff:fe00:b800: icmp_seq=3 hlim=64 time=9ms
8 bytes from fdc0:de7a:b5c0:0:66bf:99b9:24c0:d55f: icmp_seq=3 hlim=64 time=68ms

इस बार एफटीडी कमिश्नर को दो प्रतिक्रियाएँ मिलीं, एक b800 लोकेटर ( b800 , b800 में समाप्त) और एक आरसीपी जॉइनर मेष-लोकल ईआईडी (एमएल-ईआईडी, d55f में समाप्त) से। ऐसा इसलिए है क्योंकि मेष-स्थानीय गुंजाइश में संपूर्ण थ्रेड नेटवर्क शामिल है। कोई फर्क नहीं पड़ता कि नेटवर्क में कोई उपकरण कहां है, इसे ff03::1 पते पर सब्सक्राइब किया जाएगा।

otcodelab_top02C_02_ML.png

उसी व्यवहार की पुष्टि करने के लिए FTD योजक से पिंग ff03::1 :

## FTD Joiner ##
----------------

> ping ff03::1
> 8 bytes from fdc0:de7a:b5c0:0:0:ff:fe00:c00: icmp_seq=2 hlim=64 time=11ms
8 bytes from fdc0:de7a:b5c0:0:66bf:99b9:24c0:d55f: icmp_seq=2 hlim=64 time=23ms

otcodelab_top02C_02_LL02.png

दोनों पिंग आउटपुट में आरसीपी जॉइनर के लिए प्रतिक्रिया समय पर ध्यान दें। RCP जॉइनर को FTD कमिश्नर (68ms) तक पहुँचने में ज्यादा समय लगता है, जितना कि FTD जॉइनर (23ms) तक पहुँचने में। ऐसा इसलिए है क्योंकि FTD जॉइनर के लिए एक हॉप की तुलना में, FTD कमिश्नर तक पहुंचने के लिए इसे दो हॉप्स बनाने पड़ते हैं।

आपने यह भी देखा होगा कि मेष-स्थानीय मल्टीकास्ट पिंग ने RLOC के साथ केवल दो FTDs के लिए प्रतिसाद दिया था - RCP जॉइनर नहीं। ऐसा इसलिए है क्योंकि एफटीडी नेटवर्क के भीतर राउटर हैं, जबकि आरसीपी एक एंड डिवाइस है।

पुष्टि करने के लिए RCP जॉइनर की स्थिति की जाँच करें:

## RCP Joiner ##
----------------

> state
child

OpenThread द्वारा प्रदान की जाने वाली एप्लिकेशन सेवाओं में से एक उपयोगकर्ता डेटाग्राम प्रोटोकॉल (UDP), एक ट्रांसपोर्ट लेयर प्रोटोकॉल है। OpenThread पर बनाया गया एक एप्लिकेशन थ्रेड नेटवर्क में नोड्स के बीच या बाहरी नेटवर्क में अन्य डिवाइसों (जैसे कि थ्रेड नेटवर्क में एक बॉर्डर राउटर की सुविधा है) के बीच संदेशों को पास करने के लिए UDP API का उपयोग कर सकता है।

UDP सॉकेट्स को OpenThread CLI के माध्यम से उजागर किया जाता है। आइए इसका उपयोग दो एफटीडी के बीच संदेशों को पारित करने के लिए करें।

FTD योजक के लिए मेष-स्थानीय ईआईडी पता प्राप्त करें। हम इस पते का उपयोग कर रहे हैं क्योंकि यह थ्रेड नेटवर्क में कहीं से भी पहुंच योग्य है।

## FTD Joiner ##
----------------

> ipaddr
fdc0:de7a:b5c0:0:0:ff:fe00:fc00        # Leader Anycast Locator (ALOC)
fdc0:de7a:b5c0:0:0:ff:fe00:b800        # Routing Locator (RLOC)
fe80:0:0:0:e4cd:d2d9:3249:a243         # Link-Local Address (LLA)
fdc0:de7a:b5c0:0:3e2e:66e:9d41:ebcd    # Mesh-Local EID (ML-EID)
Done

UDP प्रारंभ करें और इसे किसी भी IPv6 पते के लिए सॉकेट से बाँधें:

## FTD Joiner ##
----------------

> udp open
Done
> udp bind :: 1212

एफटीडी आयुक्त पर स्विच करें, यूडीपी शुरू करें, और अपने एमएल-ईआईडी का उपयोग करके एफटीडी जॉइनर पर आपके द्वारा स्थापित सॉकेट से कनेक्ट करें:

## FTD Commissioner ##
----------------------

> udp open
Done
> udp connect fdc0:de7a:b5c0:0:3e2e:66e:9d41:ebcd 1212
Done

यूडीपी कनेक्शन को दो नोड्स के बीच रहना चाहिए। FTD आयुक्त से एक संदेश भेजें:

## FTD Commissioner ##
----------------------

> udp send hellothere
Done

एफटीडी जॉइनर पर , यूडीपी संदेश प्राप्त हुआ है!

## FTD Joiner ##
----------------

> 10 bytes from fdc0:de7a:b5c0:0:0:ff:fe00:c00 49153 hellothere

आपने एक भौतिक थ्रेड नेटवर्क बनाया है!

b915c433e7027cc7.png

अब आप जानते हैं:

  • थ्रेड डिवाइस के प्रकार, भूमिका और स्कोप के बीच का अंतर
  • थ्रेड डिवाइस नेटवर्क के भीतर अपने राज्यों का प्रबंधन कैसे करते हैं
  • यूडीपी का उपयोग करके नोड्स के बीच सरल संदेश कैसे पास करें

अगले कदम

इस कोडेलैब का निर्माण, निम्नलिखित अभ्यास आज़माएं:

  • FTD योजक बोर्ड को MTD के रूप में ot-cli-mtd बाइनरी का उपयोग करके ot-cli-mtd , और निरीक्षण करें कि यह कभी भी खुद को राउटर में अपग्रेड नहीं करता है या लीडर बनने की कोशिश नहीं करता है।
  • नेटवर्क में अधिक डिवाइस जोड़ें (एक अलग प्लेटफ़ॉर्म पर प्रयास करें!) राउटर और चाइल्ड टेबल का उपयोग करके टोपोलॉजी को स्केच करें और साथ ही मल्टीकास्ट पते पर पिंग करें
  • NCP को नियंत्रित करने के लिए pyspinel का उपयोग करें
  • OpenThread Border Router का उपयोग करके NCP को बॉर्डर राउटर में बदलें और अपने थ्रेड नेटवर्क को इंटरनेट से कनेक्ट करें

अग्रिम पठन

OpenThread संसाधनों की एक किस्म के लिए opIIIread.io और GitHub देखें :

संदर्भ: