بناء شبكة خيط مع لوحات nRF52840 و OpenThread

1 المقدمة

26b7f4f6b3ea0700.png

OpenThread التي أطلقتها جوجل هو تنفيذ المصدر المفتوح من Thread® بروتوكول الشبكات. أصدر Google Nest OpenThread لإتاحة التكنولوجيا المستخدمة في منتجات Nest على نطاق واسع للمطورين لتسريع تطوير المنتجات للمنزل المتصل.

و مواصفات الموضوع يحدد بروتوكول يستند الإصدار IPv6، موثوقة وآمنة ومنخفضة الطاقة لاسلكية جهاز إلى جهاز اتصال لتطبيقات المنزل. ينفذ OpenThread جميع طبقات شبكة الخيط بما في ذلك IPv6 و 6LoWPAN و IEEE 802.15.4 مع أمان MAC وإنشاء ارتباط الشبكة وتوجيه الشبكة.

في Codelab هذا ، ستقوم ببرمجة OpenThread على جهاز حقيقي ، وإنشاء شبكة خيط وإدارتها ، وتمرير الرسائل بين العقد.

4806d16a8c137c6d.jpeg

ماذا ستتعلم

  • إنشاء ثنائيات OpenThread CLI وامضها إلى لوحات التطوير
  • بناء RCP يتكون من جهاز Linux ولوحة تطوير
  • التواصل مع الحزب الشيوعي الثوري باستخدام OpenThread الشيطان و ot-ctl
  • إدارة عقد الموضوع يدويًا باستخدام Screen و OpenThread CLI
  • تأمين تشغيل الأجهزة على شبكة خيط
  • كيف يعمل البث المتعدد IPv6
  • تمرير الرسائل بين عقد الموضوع مع UDP

ماذا ستحتاج

المعدات:

  • 3 لوحات ديف نورديك لأشباه الموصلات nRF52840
  • 3 كبلات USB إلى Micro-USB لتوصيل اللوحات
  • جهاز Linux به 3 منافذ USB على الأقل

برمجة:

  • سلسلة أدوات جنو
  • أدوات سطر الأوامر nRF5x الاسكندنافية
  • برنامج Segger J-Link
  • OpenThread
  • شخص سخيف

2. البدء

محاكاة OpenThread

قبل البدء، قد ترغب في تشغيل من خلال المحاكاة Codelab OpenThread ، للتعرف على المفاهيم الأساسية الموضوع وOpenThread CLI.

محطات المنفذ التسلسلي

يجب أن تكون على دراية بكيفية الاتصال بمنفذ تسلسلي من خلال محطة طرفية. يستخدم Codelab هذا Screen ويقدم نظرة عامة على الاستخدام ، ولكن يمكن استخدام أي برنامج طرفي آخر.

آلة لينكس

تم تصميم Codelab هذا لاستخدام جهاز Linux يستند إلى i386 أو x86 ليكون بمثابة مضيف لجهاز Radio Co-Processor (RCP) Thread ، ولإصدار وميض جميع لوحات تطوير Thread. تم اختبار جميع الخطوات على Ubuntu 14.04.5 LTS (Trusty Tahr).

لوحات الشمال أشباه الموصلات nRF52840

يستخدم هذا Codelab ثلاثة مجالس nRF52840 PDK .

a6693da3ce213856.png

نستخدم SEGGER J-Link لبرمجة لوحات nRF52840 ، التي تحتوي على وحدات JTAG المدمجة. قم بتثبيت هذا على جهاز Linux الخاص بك.

قم بتنزيل حزمة البرامج والوثائق من J-Link

قم بتنزيل الحزمة المناسبة لجهازك ، وقم بتثبيتها في المكان المناسب. على لينكس هذا هو /opt/SEGGER/JLink .

قم بتثبيت nRF5x Command Line Tools

تتيح لك أدوات سطر الأوامر nRF5x إمكانية وميض ثنائيات OpenThread إلى لوحات nRF52840. قم بتثبيت nRF5x-Command-Line-Tools- المناسب <OS> المبني على جهاز Linux الخاص بك.

قم بتنزيل nRF5x Command Line Tools

وضع حزمة المستخرجة في المجلد الجذر ~/

قم بتثبيت ARM GNU Toolchain

تُستخدم سلسلة أدوات ARM GNU للبناء.

قم بتنزيل أرشيف ARM GNU Toolchain المحمول

نوصي بوضع المستخرجة الأرشيف في /opt/gnu-mcu-eclipse/arm-none-eabi-gcc/ على الجهاز الخاص بك لينكس. اتبع الإرشادات الموجودة في الارشيف readme.txt ملف للحصول على تعليمات التثبيت.

شاشة التثبيت (اختياري)

الشاشة هي أداة بسيطة للوصول إلى الأجهزة المتصلة بواسطة منفذ تسلسلي. يستخدم Codelab هذا Screen ، ولكن يمكنك استخدام أي تطبيق طرفي منفذ تسلسلي تريده.

$ sudo apt-get install screen

3. مستودعات استنساخ

OpenThread

استنساخ وتثبيت OpenThread. و script/bootstrap الأوامر تأكد من تثبيت وtoolchain ويتم تكوين البيئة بشكل صحيح:

$ mkdir -p ~/src
$ cd ~/src
$ git clone --recursive https://github.com/openthread/openthread.git
$ cd openthread
$ ./script/bootstrap

بناء OpenThread Daemon:

$ script/cmake-build posix -DOT_DAEMON=ON

أنت الآن جاهز لإنشاء OpenThread وفلاشها على لوحات nRF52840.

4. قم بإعداد RCP Joiner

بناء وفلاش

قم ببناء مثال OpenThread nRF52840 باستخدام وظائف Joiner ووظيفة USB الأصلية. يستخدم الجهاز دور "النجار" ليتم مصادقته وتكليفه بشكل آمن في شبكة سلاسل رسائل. يتيح USB الأصلي استخدام USB CDC ACM كوسيلة نقل تسلسلية بين nRF52840 والمضيف.

دائما تنظيف الريبو من سابقة يبني أولا عن طريق تشغيل rm -rf build .

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

انتقل إلى الدليل باستخدام ملف OpenThread RCP الثنائي ، وقم بتحويله إلى تنسيق سداسي عشري:

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

قم بتوصيل كبل USB بمنفذ تصحيح أخطاء Micro-USB بجوار دبوس الطاقة الخارجي على لوحة nRF52840 ، ثم قم بتوصيله بجهاز Linux. تعيين جبهة الخلاص الوطني التبديل مصدر الطاقة في مجلس nRF52840 إلى VDD. عند الاتصال بشكل صحيح، LED5 على.

20a3b4b480356447.png

إذا كان هذا هو أول مجلس المرفقة بالجهاز لينكس، ويبدو كما المسلسل ميناء /dev/ttyACM0 (جميع المجالس nRF52840 استخدام ttyACM لمعرف المنفذ التسلسلي).

$ ls /dev/ttyACM*
/dev/ttyACM0

لاحظ الرقم التسلسلي للوحة nRF52840 المستخدمة في RCP:

c00d519ebec7e5f0.jpeg

انتقل إلى موقع أدوات سطر أوامر nRFx ، وقم بوميض الملف السداسي لـ OpenThread 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 كما نقل المسلسل، يجب استخدام منفذ USB جبهة الخلاص الوطني في مجلس nRF52840 على التواصل مع المضيف حزب الشيوعي الثوري (آلة لينكس).

فصل النهاية الصغرى USB لكابل USB من ميناء التصحيح من تومض nRF52840 متن الطائرة، ثم أعد ذلك إلى مايكرو USB جبهة الخلاص الوطني ميناء USB بجانب زر RESET. تعيين جبهة الخلاص الوطني التبديل مصدر الطاقة لUSB.

46e7b670d2464842.png

ابدأ برنامج OpenThread Daemon

في تصميم RCP ، استخدم OpenThread Daemon للتواصل مع جهاز Thread وإدارته. بدء 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 يمكن أن ينظر إليها.

استخدام ot-ctl على التواصل مع عقدة الحزب الشيوعي الثوري. ot-ctl يستخدم نفس CLI كما التطبيق OpenThread CLI. لذلك، يمكنك التحكم ot-daemon العقد في نفس الطريقة كما في الأجهزة الأخرى الموضوع المحاكاة.

في إطار المحطة الثانية، بدء ot-ctl :

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

تحقق من state من عقدة 2 (عقدة الحزب الشيوعي الثوري) التي بدأت مع ot-daemon :

> state
disabled
Done

5. قم بإعداد FTDs

العقدتان الأخريان المستخدمتان في Codelab هذا هما Full Thread Devices (FTDs) في تصميم System-on-Chip (SoC) القياسي. أنها لا تستخدم wpantund ، والمستخدم يدير عليها يدويا مع OpenThread CLI.

يعمل جهاز واحد كمفوض ، للمصادقة بشكل آمن على الأجهزة وتشغيلها على تلك الشبكة. يعمل الجهاز الآخر كمنضم يمكن للمفوض المصادقة عليه لشبكة الموضوع.

بناء وفلاش

قم ببناء مثال OpenThread FTD لمنصة nRF52840 ، مع تمكين أدوار المفوض والنجار:

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

انتقل إلى الدليل باستخدام برنامج OpenThread Full Thread Device (FTD) الثنائي CLI ، وقم بتحويله إلى تنسيق سداسي عشري:

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

قم بتوصيل كبل USB بمنفذ Micro-USB بجوار دبوس الطاقة الخارجي على لوحة nRF52840 ، ثم قم بتوصيله بجهاز Linux. إذا لا تزال تعلق الحزب الشيوعي الثوري إلى الجهاز لينكس، ويجب أن يظهر هذا المجلس الجديد، المسلسل ميناء /dev/ttyACM1 (جميع المجالس nRF52840 استخدام ttyACM لمعرف المنفذ التسلسلي).

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

كما في السابق ، لاحظ الرقم التسلسلي للوحة nRF52840 المستخدمة في FTD:

c00d519ebec7e5f0.jpeg

انتقل إلى موقع أدوات سطر أوامر nRFx ، وقم بوميض ملف OpenThread CLI FTD السداسي على لوحة nRF52840 ، باستخدام الرقم التسلسلي للوحة:

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

تسمية المجلس "المفوض".

قم بتوصيله بمنفذ USB الأصلي

لأن بناء OpenThread FTD يمكن استخدام الأصلي USB CDC ACM كما نقل المسلسل، يجب استخدام منفذ USB جبهة الخلاص الوطني في مجلس nRF52840 على التواصل مع المضيف حزب الشيوعي الثوري (آلة لينكس).

فصل النهاية الصغرى USB لكابل USB من ميناء التصحيح من تومض nRF52840 متن الطائرة، ثم أعد ذلك إلى مايكرو USB جبهة الخلاص الوطني ميناء USB بجانب زر RESET. تعيين جبهة الخلاص الوطني التبديل مصدر الطاقة لUSB.

46e7b670d2464842.png

تحقق من البناء

تحقق من بناء ناجح من خلال الوصول إلى OpenThread CLI باستخدام شاشة GNU من نافذة طرفية. تستخدم لوحات 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 Joiner

كرر العملية المذكورة أعلاه وميض مجلس nRF52840 الثالث، وذلك باستخدام القائمة ot-cli-ftd.hex بناء.

إذا تعلق اثنين من العقد الأخرى إلى الجهاز لينكس عندما يتم إرفاق هذا المجلس الثالث، وينبغي أن تبدو وكأنها مسلسل ميناء /dev/ttyACM2 :

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

تسمية اللوحة "نجار".

عند التحقق باستخدام Screen ، بدلاً من إنشاء مثيل جديد للشاشة من سطر الأوامر ، أعد التوصيل بالمثيل الحالي وأنشئ نافذة جديدة بداخله (استخدمتها لمفوض FTD):

$ screen -r

قم بإنشاء نافذة جديدة داخل الشاشة باستخدام Ctrl + a →

c

****. يظهر موجه سطر أوامر جديد. قم بالوصول إلى OpenThread CLI الخاص بـ FTD Joiner:

$ screen /dev/ttyACM2 115200

في هذا الإطار الجديد، اضغط العائد على لوحة المفاتيح عدة مرات لإظهار OpenThread CLI > موجه. أظهر واجهة IPv6 وتحقق من العناوين:

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

الآن وبعد أن FTD النجار CLI في نفس مثيل الشاشة كما المفوض FTD، يمكنك التبديل بينها باستخدام مفتاح Ctrl + ل→ n .

استخدم Ctrl + a →

d في أي وقت لشاشة الخروج.

6. إعداد نافذة المحطة الطرفية

من الآن فصاعدًا ، ستقوم بالتبديل بين أجهزة Thread بشكل متكرر ، لذا تأكد من أنها جميعًا مباشرة ويمكن الوصول إليها بسهولة. حتى الآن ، كنا نستخدم Screen للوصول إلى اثنين من FTDs ، وتسمح هذه الأداة أيضًا بتقسيم الشاشة على نفس النافذة الطرفية. استخدم هذا لمعرفة كيف تتفاعل عقدة مع الأوامر الصادرة على عقدة أخرى.

من الناحية المثالية ، يجب أن يكون لديك أربعة نوافذ متاحة بسهولة:

  1. ot-daemon خدمة / السجلات
  2. RCP النجار عبر ot-ctl
  3. المفوض FTD عبر OpenThread CLI
  4. FTD النجار عبر OpenThread CLI

إذا كنت ترغب في استخدام تكوين أو أداة المنفذ الطرفي / التسلسلي الخاص بك ، فلا تتردد في التخطي إلى الخطوة التالية. قم بتكوين النوافذ الطرفية لجميع الأجهزة بالطريقة التي تناسبك بشكل أفضل.

باستخدام الشاشة

لسهولة الاستخدام ، ابدأ جلسة شاشة واحدة فقط. يجب أن يكون لديك بالفعل واحد من عند إعداد كلا FTDs.

تبدأ جميع الأوامر داخل الشاشة بـ Ctrl + a.

أوامر الشاشة الأساسية:

أعد الاتصال بجلسة الشاشة (من سطر الأوامر)

screen -r

اترك جلسة الشاشة

CTRL + A → d

إنشاء نافذة جديدة داخل جلسة الشاشة

CTRL + A → c

التبديل بين النوافذ في نفس جلسة الشاشة

CTRL + A → n (إلى الأمام) CTRL + A → p (العودة)

اقتل النافذة الحالية في جلسة الشاشة

CTRL + A → k

تقسيم الشاشة

باستخدام Screen ، يمكنك تقسيم الجهاز إلى نوافذ متعددة:

f1cbf1258cf0a5a.png

الأوامر في screen يتم الوصول باستخدام مفتاح Ctrl + أ. يجب أن يبدأ كل أمر بمفتاح الوصول هذا.

إذا كنت تتابع Codelab بالضبط ، فيجب أن يكون لديك نافذتان (مفوض FTD ، FTD Joiner) على نفس مثيل الشاشة. لتقسيم الشاشة بين الاثنين ، أدخل أولاً جلسة الشاشة الحالية:

$ screen -r

يجب أن تكون على أحد أجهزة FTD. اتبع هذه الخطوات في الشاشة:

  1. CTRL + A → S لتقسيم النافذة أفقيا
  2. CTRL + A → Tab لتحريك المؤشر إلى إطار فارغ جديد
  3. CTRL + A → n إلى التبديل هذا الإطار الجديد إلى المرحلة التالية
  4. اذا كان نفس الإطار العلوي، والسيطرة على + → n مرة أخرى لعرض جهاز FTD الآخرين

كلاهما مرئي الآن. التبديل بينها باستخدام مفتاح Ctrl + ل→ Tab . انها ننصح retitle كل نافذة مع السيطرة + ل→ A لتفادي الخلط.

الاستخدام المتقدم

لمزيد من انقسام الشاشة إلى الأرباع وعرض ot-daemon السجلات والحزب الشيوعي الثوري النجار ot-ctl ، يجب تشغيل هذه الخدمات في هذا المثال الشاشة نفسها. للقيام بذلك، ووقف ot-daemon والخروج ot-ctl ، وإعادة تشغيلها داخل النوافذ شاشة جديدة (السيطرة + ل→ c ).

هذا الإعداد غير مطلوب ويتم تركه كتدريب للمستخدم.

قم بتقسيم النوافذ والتنقل بينها باستخدام الأوامر التالية:

إنشاء نافذة جديدة

CTRL + A → c

انقسام النافذة عموديا

Ctrl + a →

انقسام النافذة أفقيا

CTRL + A → S

القفز إلى النافذة المعروضة التالية

CTRL + A → Tab

قم بتبديل النافذة المعروضة للأمام أو للخلف

CTRL + A → n أو p

إعادة تسمية النافذة الحالية

CTRL + A → A

ترك الشاشة في أي وقت مع السيطرة + ل→ d وأعد مع screen -r من سطر الأوامر.

لمزيد من المعلومات حول الشاشة، راجع GNU الشاشة إشارة سريعة .

7. إنشاء شبكة الموضوع

الآن بعد أن تم تكوين جميع النوافذ والشاشات الطرفية ، فلنقم بإنشاء شبكة Thread الخاصة بنا. على المفوض 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
Network 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)

أصبحت شبكة "codelab" مرئية الآن عند مسحها ضوئيًا من أجهزة سلسلة الرسائل الأخرى.

من ot-ctl على RCP النجار:

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

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

من CLI OpenThread على FTD النجار:

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

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

إذا لم تظهر شبكة "codelab" في القائمة ، فحاول المسح مرة أخرى.

تستطيع ملاحظة أنه في كلتا المسح الضوئي، ويبدو أن شبكة أن لا joinable (العمود J على RCP النجار والنجار FTD). هذا يعني فقط أن موضوع التكليف غير نشط على الشبكة. لا يزال من الممكن ضمها خارج النطاق ، عن طريق إدخال مفتاح الشبكة في جهاز النجار يدويًا.

8. أضف RCP Joiner

دعنا نضيف RCP Joiner إلى شبكة Thread التي أنشأناها للتو ، باستخدام عملية خارج النطاق. مسح للشبكات على RCP النجار:

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

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

للانضمام ، قم بتعيين مفتاح الشبكة (حصلنا عليه للتو من مفوض FTD) على RCP Joiner في مجموعة البيانات النشطة الخاصة به.

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

> dataset networkkey 1234c0de7ab51234c0de7ab51234c0de
Done
> dataset commit active
Done

تحقق من مجموعة البيانات للتأكد من أنها مضبوطة بشكل صحيح.

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

> dataset
Network Key: 1234c0de7ab51234c0de7ab51234c0de

قم بإحضار Thread حتى ينضم RCP Joiner إلى شبكة "codelab". انتظر بضع ثوانٍ ، تحقق من الحالة ، 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

جعل علما عنوان شبكة-المحلية ب IPv6 ( fdc0:de7a:b5c0:0:66bf:99b9:24c0:d55f هنا)، سوف تستخدم في وقت لاحق.

مرة أخرى على المفوض FTD، والتحقق من الجداول التوجيه والطفل لتأكيد كلا الجهازين هي جزء من نفس الشبكة. استخدم RLOC16 لتعريف RCP Joiner.

## 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

ping على عنوان شبكة المحلية للحزب الشيوعي الثوري النجار (عنوان شبكة محلية تم الحصول عليها من الحزب الشيوعي الثوري نجارة 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

مخططات طوبولوجيا

أثناء عملك في بقية Codelab ، سنعرض مخططًا جديدًا لطوبولوجيا الخيط كلما تغيرت حالة الشبكة. يشار إلى أدوار العقدة على النحو التالي:

b75a527be4563215.png

تكون أجهزة التوجيه دائمًا عبارة عن خماسيات ، وتكون أجهزة النهاية دائمًا عبارة عن دوائر. تمثل الأرقام الموجودة في كل عقدة معرف جهاز التوجيه أو معرف الطفل الموضح في إخراج CLI ، اعتمادًا على الدور والحالة الحاليين لكل عقدة في ذلك الوقت.

9. تكليف FTD Joiner

الآن دعنا نضيف جهاز Thread الثالث إلى شبكة "codelab". هذه المرة سنستخدم عملية التكليف داخل النطاق الأكثر أمانًا. على FTD النجار، ومسح للشبكة:

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

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

A 0 في العمود J يشير إلى أن الموضوع التكليف غير نشطة على الجهاز.

لنكن محددين عند تشغيل هذا الجهاز التالي ، والسماح فقط لـ FTD Joiner بالانضمام. لا تزال على FTD النجار، احصل على eui64 ، وبالتالي فإن المفوض FTD يمكن التعرف عليه:

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

> eui64
2f57d222545271f1
Done

على المفوض FTD، بدء مفوض وتحديد eui64 الجهاز الذي يمكن الانضمام، جنبا إلى جنب مع النجار الاعتماد. إن بيانات الاعتماد Joiner Credential عبارة عن عبارة مرور خاصة بالجهاز.

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

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

التبديل إلى FTD النجار، وإعادة تفحص:

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

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

كما يتضح من 1 في العمود J، الموضوع التكليف هو الآن نشط على شبكة الاتصال. ابدأ دور النجار مع اعتماد النجار الذي قمت بإعداده للتو على مفوض FTD:

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

> ifconfig up
Done
> joiner start J01NME
Done

في غضون دقيقة أو نحو ذلك ، تحصل على تأكيد للمصادقة الناجحة:

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

>
Join success

قم بإحضار Thread حتى ينضم FTD Joiner إلى شبكة "codelab" ، وتحقق فورًا من الحالة و RLOC16:

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

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

تحقق من عناوين IPv6 الخاصة بالجهاز. لاحظ أنه لا يوجد ALOC. هذا لأن هذا الجهاز ليس القائد ، ولا يشغل دورًا خاصًا بـ Anycast يتطلب 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 والتحقق من الجداول التوجيه وطفل في تأكيد أن ثلاثة أجهزة موجودة في شبكة "codelab":

## 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

استنادًا إلى RLOC16 ، تم توصيل FTD Joiner بالشبكة كجهاز نهائي (تابع). هنا طوبولوجيا لدينا المحدثة:

otcodelab_top01C_ed01.png

10. موضوع في العمل

تعد أجهزة الخيط في Codelab هذا نوعًا محددًا من أجهزة الخيط الكامل (FTD) تسمى الجهاز النهائي المؤهل لجهاز التوجيه (REED). هذا يعني أنه يمكنهم العمل إما كموجه أو جهاز نهائي ، ويمكنهم الترويج لأنفسهم من جهاز طرفي إلى جهاز توجيه.

يمكن أن يدعم الخيط ما يصل إلى 32 جهاز توجيه ، ولكنه يحاول الاحتفاظ بعدد أجهزة التوجيه بين 16 و 23. إذا تم إرفاق REED كجهاز نهائي (طفل) وكان عدد أجهزة التوجيه أقل من 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 النجار (موسع MAC = e6cdd2d93249a243 ) عززت نفسها إلى راوتر. علما بأن RLOC16 يختلف ( b800 بدلا من 0c02 ). ذلك لأن RLOC16 يعتمد على معرف الموجه ومعرف الطفل الخاص بالجهاز. عندما ينتقل من الجهاز النهائي إلى جهاز التوجيه ، تتغير قيم معرف جهاز التوجيه ومعرف الطفل ، وكذلك تتغير قيم RLOC16.

otcodelab_top01C.png

تأكيد الدولة الجديدة وRLOC16 على FTD النجار:

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

> state
router
Done
> rloc16
b800
Done

الرجوع إلى إصدار أقدم من FTD Joiner

يمكنك اختبار هذه المشكلة عن طريق الانتقاص من 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

بعد بعض الوقت، وسوف يعود مرة أخرى إلى راوتر مع RLOC من b800 .

otcodelab_top01C.png

أزل القائد

يتم انتخاب القائد ذاتيًا بين جميع أجهزة التوجيه ذات الصلة. هذا يعني أنه إذا تمت إزالة القائد الحالي من شبكة الموضوع ، فسيصبح أحد أجهزة التوجيه الأخرى هو القائد الجديد.

على المفوض FTD، اغلاق الموضوع إلى إزالته من شبكة الموضوع:

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

> thread stop
Done
> ifconfig down
Done

في غضون دقيقتين، يصبح FTD النجار زعيم الموضوع الجديد. تحقق من حالة وعناوين IPv6 الخاصة بـ FTD Joiner للتحقق من:

## 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 جديد. هذا هو RCP Joiner ، كما هو مشار إليه بواسطة المعرف الخاص به و MAC الموسع. من أجل الحفاظ على شبكة Thread معًا ، قامت بتحويل أجهزة التوجيه الأصلية ، من مفوض FTD إلى FTD Joiner. ينتج عن هذا RLOC16 جديد لـ RCP Joiner (بسبب تغيير معرف جهاز التوجيه الخاص به ، من 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

قد تضطر إلى الانتظار بضع دقائق للحزب الشيوعي الثوري النجار إرفاقه FTD النجار عندما كان طفلا. تحقق من الحالة و RLOC16 لتأكيد ما يلي:

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

> state
child
> rloc16
b801

أعد إلحاق مفوض FTD

شبكة الخيط ذات العقدتين ليست ممتعة كثيرًا. دعنا نعيد مفوض FTD إلى الإنترنت.

على المفوض FTD، إعادة الموضوع:

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

> ifconfig up
Done
> thread start
Done

في غضون دقيقتين ، يتم إعادة توصيله تلقائيًا بشبكة "codelab" كجهاز نهاية ، ثم يقوم بترقية نفسه إلى جهاز توجيه.

## 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

تتكون شبكة الخيوط الخاصة بنا من ثلاث عقد مرة أخرى.

11. استكشاف الأخطاء وإصلاحها

يمكن أن تكون إدارة شبكة مؤشر ترابط بأجهزة متعددة على طرفي مختلف أو نوافذ شاشة أمرًا معقدًا. استخدم هذه النصائح "لإعادة تعيين" حالة الشبكة أو مساحة العمل الخاصة بك إذا واجهت مشاكل.

شاشة

إذا كنت من أي وقت مضى تضيع في التكوين الخاص بك (نوافذ كثيرة جدا الشاشة، أو شاشات داخل الشاشة)، والحفاظ على قتل نوافذ الشاشة مع السيطرة + ل→ ك حتى الوجود لا شيء، و screen -ls على سطر الأوامر المخرجات No Sockets found . ثم أعد إنشاء نوافذ الشاشة لكل جهاز. يتم الاحتفاظ بحالة الجهاز حتى عند قتل الشاشة.

عقد الخيط

إذا لم يتم وصفه طوبولوجيا شبكة الموضوع في هذا Codelab، أو العقد قطع لسبب ما (ربما لأن الجهاز لينكس المحرك لهم ذهبت إلى النوم)، فمن الأفضل لخفض الموضوع، مسح بيانات اعتماد الشبكة، والبدء مرة أخرى من إنشاء الخطوة شبكة الموضوع.

لإعادة ضبط FTDs:

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

> thread stop
Done
> ifconfig down
Done
> factoryreset
Done

يمكن أن يكون للحزب الشيوعي الثوري إعادة تعيين بنفس الطريقة عبر ot-ctl :

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

> thread stop
Done
> ifconfig down
Done
> factoryreset
Done

12. استخدام الإرسال المتعدد

يستخدم البث المتعدد لتوصيل المعلومات إلى مجموعة من الأجهزة في وقت واحد. في شبكة الخيط ، عناوين محددة محجوزة للاستخدام المتعدد مع مجموعات مختلفة من الأجهزة ، اعتمادًا على النطاق.

عنوان IPv6

نطاق

سلمت ل

ff02::1

ارتباط محلي

جميع FTDs و MEDs

ff02::2

ارتباط محلي

جميع FTDs والموجهات الحدودية

ff03::1

شبكة محلية

جميع FTDs و MEDs

ff03::2

شبكة محلية

جميع FTDs والموجهات الحدودية

نظرًا لأننا لا نستخدم موجه الحدود في Codelab هذا ، فلنركز على عنواني الإرسال المتعدد FTD و MED.

يشتمل نطاق الارتباط المحلي على جميع واجهات الخيط التي يمكن الوصول إليها عن طريق إرسال راديو واحد ، أو "قفزة" واحدة. يمليه طوبولوجيا الشبكة التي تستجيب الأجهزة بينغ إلى ff02::1 الإرسال المتعدد عنوان.

بينغ ff02::1 من المفوض FTD:

## 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 تلقى استجابة واحدة فقط ، من عنوان الرابط المحلي (LLA) الخاص بـ FTD Joiner. هذا يعني أن FTD Joiner هو الجهاز الوحيد الذي يمكن لمفوض FTD الوصول إليه بقفزة واحدة.

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 ) هو LLA المفوض FTD، ووالثانية (تنتهي في 943b ) هو LLA للحزب الشيوعي الثوري نجارة.

otcodelab_top02C_02_LL02.png

هذا يعني أن FTD Joiner متصل مباشرة بكل من مفوض FTD و RCP Joiner ، مما يؤكد طوبولوجيتنا.

شبكة محلية

يشتمل نطاق Mesh-Local على جميع واجهات Thread التي يمكن الوصول إليها داخل نفس شبكة Thread. دعونا نرى الردود على بينغ إلى ff03::1 الإرسال المتعدد عنوان.

بينغ ff03::1 من المفوض FTD:

## 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

هذه المرة تلقى المفوض FTD ردين، واحدة من FTD نجارة توجيه محدد (RLOC، تنتهي في b800 ) واحدة من EID شبكة محلية للحزب الشيوعي الثوري نجارة (ML-EID، تنتهي في d55f ). ذلك لأن نطاق الشبكة المحلية يشتمل على شبكة مؤشر الترابط بأكملها. بغض النظر عن مكان في الشبكة الجهاز، فإنه سيتم مشترك في ff03::1 عنوان.

otcodelab_top02C_02_ML.png

بينغ ff03::1 من FTD النجار لتأكيد نفس السلوك:

## 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 Joiner في كلا مخرجي اختبار الاتصال. استغرق RCP Joiner وقتًا أطول للوصول إلى مفوض FTD (68 مللي ثانية) مقارنة بالوصول إلى FTD Joiner (23 مللي ثانية). هذا لأنه يجب أن يقوم بقفلتين للوصول إلى مفوض FTD ، مقارنة بقفزة واحدة لـ FTD Joiner.

ربما لاحظت أيضًا أن ping متعدد البث المحلي المتشابك استجاب مع RLOC فقط من أجل FTDs - وليس RCP Joiner. وذلك لأن FTDs هي أجهزة توجيه داخل الشبكة ، بينما RCP هي جهاز نهاية.

التحقق من الدولة للحزب الشيوعي الثوري النجار إلى تأكيد:

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

> state
child

13. إرسال الرسائل باستخدام UDP

إحدى خدمات التطبيقات التي يوفرها OpenThread هي بروتوكول مخطط بيانات المستخدم (UDP) ، وهو بروتوكول طبقة النقل. يمكن للتطبيق المبني على OpenThread استخدام UDP API لتمرير الرسائل بين العقد في شبكة Thread ، أو إلى أجهزة أخرى في شبكة خارجية (مثل الإنترنت ، إذا كانت شبكة Thread تحتوي على جهاز توجيه الحدود).

يتم كشف مآخذ UDP من خلال OpenThread CLI. دعنا نستخدمها لتمرير الرسائل بين اثنين من FTDs.

الحصول على عنوان EID-شبكة محلية ل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، تبدأ UDP، والاتصال مأخذ تقوم بإعداد على FTD النجار، وذلك باستخدام لها ML-EID:

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

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

يجب أن يكون اتصال UDP مباشرًا بين العقدتين. إرسال رسالة من مفوض FTD:

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

> udp send hellothere
Done

على FTD النجار، وقد وردت في رسالة UDP!

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

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

14. مبروك!

لقد قمت بإنشاء شبكة ترابط فعلية!

b915c433e7027cc7.png

أنت تعرف الآن:

  • الفرق بين أنواع أجهزة الخيط والأدوار والنطاقات
  • كيف تدير أجهزة الخيط حالاتها داخل الشبكة
  • كيفية تمرير رسائل بسيطة بين العقد باستخدام UDP

الخطوات التالية

بناء على Codelab هذا ، جرب التمارين التالية:

  • تعيد تحميل مجلس FTD النجار باعتباره MTD باستخدام ot-cli-mtd ثنائي، ونلاحظ أنه لم ترفع نفسها إلى جهاز توجيه أو يحاول أن يصبح الزعيم
  • أضف المزيد من الأجهزة (جرب نظامًا أساسيًا مختلفًا!) إلى الشبكة وقم برسم الهيكل باستخدام جهاز التوجيه والجداول الفرعية ، جنبًا إلى جنب مع الأصوات إلى عناوين الإرسال المتعدد
  • استخدام pyspinel للسيطرة على حزب المؤتمر الوطني
  • تحويل NCP الى راوتر الحدود باستخدام راوتر الحدود OpenThread وربط شبكة الموضوع إلى الإنترنت

قراءة متعمقة

تحقق من openthread.io و جيثب لمجموعة متنوعة من الموارد OpenThread، بما في ذلك:

المرجعي: