थ्रेड, ओपनथ्रेड, ओटीएनएस और सिल्क क्या है?
थ्रेड एक आईपी-आधारित कम-शक्ति वायरलेस मेष नेटवर्किंग प्रोटोकॉल है जो सुरक्षित डिवाइस-टू-डिवाइस और डिवाइस-टू-क्लाउड संचार को सक्षम करता है। थ्रेड नेटवर्क विफलता के एकल बिंदु से बचने के लिए टोपोलॉजी परिवर्तनों के लिए अनुकूल हो सकते हैं।
Google द्वारा जारी OpenThread थ्रेड का एक ओपन-सोर्स कार्यान्वयन है। अपने छोटे कोड आकार और मेमोरी फ़ुटप्रिंट के बावजूद, OpenThread थ्रेड 1.1.1 विनिर्देश में परिभाषित सभी विशेषताओं का समर्थन करता है।
OpenThread Network Simulator (OTNS) का उपयोग पॉज़िक्स प्लेटफार्मों पर सिम्युलेटेड OpenThread नोड्स चलाकर थ्रेड नेटवर्क का अनुकरण करने के लिए किया जा सकता है। ओटीएनएस सिम्युलेटेड थ्रेड नेटवर्क की कल्पना और संचालन के लिए एक आसान उपयोग वाला वेब इंटरफेस (ओटीएनएस-वेब) प्रदान करता है।
सिल्क वास्तविक उपकरणों के साथ OpenThread फ़ंक्शन, फ़ीचर और सिस्टम प्रदर्शन को मान्य करने के लिए पूरी तरह से स्वचालित परीक्षण प्लेटफ़ॉर्म है।
आप क्या सीखेंगे
- OpenThread की कार्यक्षमता सत्यापन ढांचा: रेशम
- ओटीएनएस सुविधा सक्षम के साथ वास्तविक उपकरणों के लिए ओपनथ्रेड का निर्माण करें
- सिल्क परीक्षण मामलों को चलाने के द्वारा गठित थ्रेड नेटवर्क की स्थिति की निगरानी के लिए ओटीएनएस-वेब इंटरफेस का उपयोग करें
यह कोडलैब सिल्क को ओटीएनएस के साथ उपयोग करने पर केंद्रित है। सिल्क और ओटीएनएस की अन्य विशेषताएं शामिल नहीं हैं।
आपको किस चीज़ की ज़रूरत पड़ेगी
हार्डवेयर:
- 6 नॉर्डिक सेमीकंडक्टर nRF52840 देव बोर्ड
- बोर्डों को जोड़ने के लिए 6 यूएसबी टू माइक्रो-यूएसबी केबल
- यूएसबी हब
सॉफ्टवेयर:
- लिनक्स x86_64।
- गित ।
- 1.11+ जाओ ।
- वेब ब्राउज़र। OTNS- वेब सिमुलेशन प्रदर्शित करने के लिए एक वेब ब्राउज़र का उपयोग करता है।
आवश्यक शर्तें:
पूर्व बुनियादी कोडलेब्स को पूरा करें
- थ्रेड प्राइमर । इस कोडेलैब में क्या पढ़ाया जाता है, यह समझने के लिए आपको थ्रेड की मूल अवधारणाओं को जानना होगा।
- NRF52840 बोर्डों और OpenThread के साथ थ्रेड नेटवर्क बनाएँ । यह कोडेलैब मानता है कि आपने सफलतापूर्वक एक थ्रेड नेटवर्क बनाया है।
- OTNS का उपयोग करके थ्रेड नेटवर्क का अनुकरण करें । यह कोडेलैब मानता है कि आपने ओटीएनएस टूल सफलतापूर्वक चलाया है।
पैकेज आवश्यक शर्तें जाँच रहा है
आइए सुनिश्चित करें कि सभी आवश्यक शर्तें पूरी की जाती हैं।
- भागो
which otns
अगर जाँच करने के लिएotns
निष्पादन में खोजा है$PATH
। - सुनिश्चित करें कि
wpantund
उपलब्ध करने के लिएwhich wpantund
चलाएं। - सुनिश्चित करें कि एआरएम जीएनयू
nrfjprog
, जे-लिंक औरnrfjprog
पैकेज सभी उपलब्ध हैं। - सुनिश्चित करें कि एक OpenThread बाइनरी बनाया जा सकता है, जो
make -f examples/Makefile-nrf52840
कोopenthread
फ़ोल्डर के तहतopenthread
।
नोट: कृपया निर्धारित मार्गदर्शन के लिए लिंक किए गए दस्तावेज़ों को देखें। शर्त # 1 OTNS का उपयोग कर Simulate थ्रेड नेटवर्क से है और अन्य बिल्ड थ्रेड नेटवर्क से हैं nRF52840 बोर्ड और OpenThread ।
रेशम को क्लोन करने और पर्यावरण को स्थापित करने के लिए, अपने स्रोत निर्देशिका के तहत निम्नलिखित कमांड चलाएं:
$ git clone https://github.com/openthread/silk.git $ cd silk $ ./bootstrap.sh $ sudo make install-cluster
हार्डवेयर कॉन्फ़िगरेशन फ़ाइल को परिभाषित करें
रेशम को अपनी मशीन से जुड़े उपलब्ध परीक्षण हार्डवेयर संसाधनों को इकट्ठा करने की अनुमति देने के लिए, निम्न प्रारूप में hwconfig.ini
फ़ाइल को परिभाषित करें:
[DEFAULT] ClusterID: 0 LayoutCenter: 300, 300 LayoutRadius: 100 [Dev-8A7D] HwModel: Nrf52840 HwRev: 1.0 InterfaceSerialNumber: E1A5012E8A7D USBInterfaceNumber: 1 DutSerial: 683536778
usbinfo
नाम का एक टूल सिल्क के हिस्से के रूप में स्थापित किया गया है जिसका उपयोग इंटरफेस सीरियल नंबर और यूएसबी इंटरफेस नंबर का पता लगाने के लिए किया जा सकता है। DutSerial SN नंबर चिप पर छपा या J-Link उत्पादों के लिए usbinfo
द्वारा प्रदर्शित किया गया है।
[DEFAULT]
अनुभाग में LayoutCenter
और LayoutRadius
फ़ील्ड लेआउट की आकृति को परिभाषित करता है जब उपकरणों को वेब यूआई पर कल्पना की जाती है। उन्हें यहां प्रस्तुत मूल्यों पर सेट करना एक अच्छा प्रारंभिक बिंदु हो सकता है।
इसके बाद, यह प्रत्येक परीक्षण उपकरण के लिए एक खंड को परिभाषित करता है और संबंधित हार्डवेयर जानकारी की आपूर्ति करता है।
छवि निर्माण और चमकती
डिफ़ॉल्ट रूप से, OpenThread डिवाइस OTNS संबंधित संदेशों का उत्सर्जन नहीं करते हैं। देव बोर्डों को ओटीएनएस विज़ुअलाइज़ेशन के लिए आवश्यक इंटरफेस लॉग करने के लिए स्टेटस मैसेज को छोड़ने की अनुमति देने के लिए, ओपनड्रेड सोर्स डायरेक्टरी के तहत एफटीडी इमेज बनाने के लिए निम्न कमांड चलाएं और इसे हेक्स फॉर्मेट में बदलें।
$ cd openthread $ make -f examples/Makefile-nrf52840 clean $ make -f examples/Makefile-nrf52840 COMMISSIONER=1 JOINER=1 USB=1 OTNS=1 $ cd output/nrf52840/bin $ arm-none-eabi-objcopy -O ihex ot-ncp-ftd ot-ncp-ftd.hex
बोर्डों फ्लैश करने के लिए, के चरण 4 में निर्देशों का पालन करें बिल्ड एक धागा नेटवर्क Codelab उपयोग करने के लिए nrfjprog
। उसके बाद, सभी बोर्डों को nRF USB पोर्ट के माध्यम से होस्ट मशीन से कनेक्ट करें। USB से माइक्रो-यूएसबी केबल का एक ही सेट J- लिंक पोर्ट से डिस्कनेक्ट किया जा सकता है और nRF52840 देव बोर्डों के nRF यूएसबी पोर्ट से जुड़ा हो सकता है। इस प्रकार इन 6 केबलों के परीक्षण के साथ ही निष्पादन को अंजाम दिया जा सकता है। परेशानी से बचने के लिए, 12 केबल का उपयोग करें और दोनों बंदरगाहों से कनेक्ट करें।
डिफ़ॉल्ट पैरामीटर के साथ OTNS चलाने से उपयोगकर्ता थ्रेड नेटवर्क का अनुकरण कर सकता है। वास्तविक भौतिक नेटवर्क के लिए इसे विज़ुअलाइज़ेशन टूल के रूप में उपयोग करने के लिए, इसे इसके साथ चलाएं:
otns -raw -real -ot-cli otns-silk-proxy
ये तर्क ओटीएनएस को जीआरपीसी और यूडीपी संदेशों की अपेक्षा करते हैं जो बताते हैं कि नेटवर्क का अनुकरण करने के लिए कई ot-cli
प्रक्रियाओं को चलाने के बजाय थ्रेड नेटवर्क की कल्पना कैसे की जानी चाहिए। आपके ब्राउज़र को एक खाली कैनवास के साथ विज़ुअलाइज़ेशन पेज को स्वचालित रूप से खोलना चाहिए।
सिल्क वास्तविक उपकरणों के साथ OpenThread फ़ंक्शन, फ़ीचर और सिस्टम प्रदर्शन को मान्य करने के लिए पूरी तरह से स्वचालित परीक्षण प्लेटफ़ॉर्म है। README के प्रोजेक्ट में दिए गए निर्देशों में बताया गया है कि इसका उपयोग कैसे किया जाता है।
silk_run_test.py
पर स्थित फ़ाइल silk/unit_tests
आप लाभ मिला देता है। टेस्ट केस चलाते समय सिल्क ओटीएनएस सपोर्ट प्रदान करता है। चूंकि ओटीएनएस वास्तविक मोड सेवा पहले से ही स्थानीय रूप से चल रही है, इसलिए हमें केवल उत्पादन लॉग फ़ाइल, इनपुट परीक्षण स्क्रिप्ट और hwconfig.ini
फ़ाइल के लिए वांछित स्थानों के साथ silk_run_test.py
फ़ाइल को संशोधित करना silk_run_test.py
। -s localhost
तर्क सिल्क को localhost
को OTNS संदेश भेजने के लिए कहता है।
उदाहरण के लिए, कोई भी ot_test_form_network.py
नामक परीक्षण को निम्न संशोधनों का उपयोग करके silk_run_test.py
फ़ाइल में silk_run_test.py
सकता है। /opt/openthread_test/
लॉग आउटपुट और कॉन्फ़िग फ़ाइल के लिए सिल्क का उपयोग डिफ़ॉल्ट पथ है, लेकिन आप किसी भी पथ का उपयोग कर सकते हैं।
Silk_run_test.py
import datetime
import os
from silk.tests import silk_run
RESULT_LOG_PATH = '/opt/openthread_test/results/' + 'silk_run_' + \
datetime.datetime.today().strftime('%m-%d') + '/'
CONFIG_PATH = '/opt/openthread_test/'
os.chdir('~/src/silk/silk/tests/')
timestamp = datetime.datetime.today().strftime('%m-%d-%H:%M')
run_log_path = RESULT_LOG_PATH + 'test_run_on_' + timestamp + '/'
argv = [
'tests/silk_run.py',
'-v2',
'-c', CONFIG_PATH + 'hwconfig.ini',
'-d', run_log_path,
'-s', 'localhost',
'ot_test_form_network.py'
]
silk_run.SilkRunner(argv=argv)
गठित नेटवर्क का टोपोलॉजी दृश्य ओटीएनएस वेब यूआई पर दिखाई देगा।
ऊपरी बाएँ कोने में विज़ुअलाइज़ेशन आँकड़े, OT संस्करण और परीक्षण शीर्षक दिखाई देता है। निचले बाएं कोने में लॉग विंडो का नियंत्रण है, जिसे दाईं ओर दिखाया गया है। प्रारंभ में, नोड्स जोड़े जाते हैं लेकिन कोई नेटवर्क नहीं बनता है। जैसे-जैसे परीक्षण आगे बढ़ता है, प्रत्येक नोड के मोड और भूमिकाएं बदल जाती हैं, और लिंक बनते हैं।
बधाई हो, आपने शारीरिक थ्रेड उपकरणों पर सफलतापूर्वक एक रेशम परीक्षण चलाया है और ओटीएनएस का उपयोग करके इसकी कल्पना की है!
आपने विकास बोर्डों का उपयोग करके एक रेशम परीक्षण किया है जो ओटीएनएस समर्थन वाले फर्मवरों के साथ चमकता है। बोर्ड एक सिल्क सर्वर को अपनी स्थिति की रिपोर्ट करते हैं, जो उन सभी की निगरानी और एकत्रीकरण करता है, और उन्हें अन्य परीक्षण जानकारी के साथ ओटीएनएस सेवा में भेजता है। वास्तविक मोड में चल रहे ओटीएनएस वेब इंटरफेस पर थ्रेड नेटवर्क की कल्पना करता है।
आगे क्या होगा?
सिल्क पैकेज में शामिल अन्य ओपनथ्रेड परीक्षण मामलों को चलाने का प्रयास करें।
अग्रिम पठन
OpenThread संसाधनों की एक किस्म के लिए opIIIread.io और सिल्क देखें ।