1- المقدمة
OpenThread التي أصدرتها Google هي بروتوكول مفتوح المصدر لبروتوكول شبكات Thread®. أصدرت Google Nest ميزة OpenThread لإتاحة التكنولوجيا المستخدمة في منتجات Nest على نطاق واسع لتسريع وتيرة تطوير المنتجات إلى المنازل المتصلة.
تحدِّد مواصفات سلاسل المحادثات بروتوكول الاتصال اللاسلكي الآمن والمستنِد إلى الطاقة والذي يعتمد على بروتوكول IPv6 والمعتمَد من جهاز إلى آخر للتطبيقات المنزلية. ينفّذ OpenThread جميع طبقات شبكات Thread بما في ذلك IPv6 و6LoWPAN وIEEE 802.15.4 مع أمان MAC وإنشاء Mesh Link وتوجيه الشبكة المتداخلة.
في هذا الدرس التطبيقي حول الترميز، يمكنك برمجة OpenThread على أجهزة حقيقية وإنشاء شبكة Thread وإدارتها، وتمرير الرسائل بين العُقد.
ما ستتعرَّف عليه
- إنشاء وترقية ملفات CLI الثنائية إلى ألواح مطوّري البرامج
- إنشاء RCP يتألف من جهاز يعمل بنظام التشغيل Linux ولوحة مطوّري برامج
- التواصل مع RCP باستخدام البرنامج الخفي المفتوح في سلسلة محادثات و
ot-ctl
- إدارة عُقد سلاسل المحادثات يدويًا باستخدام شاشة GNU وواجهة سطر الأوامر في OpenThread
- التفويض الآمن للأجهزة على شبكة Thread
- آلية عمل البث المتعدد IPv6
- تمرير الرسائل بين عُقَد سلاسل المحادثات باستخدام بروتوكول UDP
المتطلبات
الأجهزة:
- 3 لوحات لـ Nodic نصف الموصّلة nRF52840
- 3 كابلات USB إلى USB صغيرة لتوصيل الألواح
- جهاز يعمل بنظام التشغيل Linux يتضمّن 3 منافذ USB على الأقل
البرامج:
- سلسلة أدوات GNU
- أدوات سطر الأوامر من Nordic nRF5x
- برنامج Segger J-Link
- OpenThread
- Git
2. البدء
محاكاة OpenThread
قبل البدء، ننصحك بالاطّلاع على الدرس التطبيقي حول ترميز OpenThread، للتعرّف على مفاهيم سلاسل المحادثات الأساسية وواجهة سطر الأوامر في OpenThread.
محطات الدفع التسلسلية
يجب أن تكون على دراية بكيفية الاتصال بمنفذ تسلسلي من خلال محطة دفع. يستخدم الدرس التطبيقي حول الترميز هذا شاشة GNU ويقدّم نظرة عامة على الاستخدام، ولكن يمكن استخدام أي برنامج طرفي آخر.
جهاز يعمل بنظام التشغيل Linux
تم تصميم الدرس التطبيقي حول الترميز هذا لاستخدام جهاز يعمل بنظام التشغيل Linux i386 أو x86 ليكون جهاز مضيف لجهاز Radio Co-Processor (RCP) ، ول جعل جميع لوحات تطوير سلاسل المحادثات عابرة. تم اختبار جميع الخطوات على نظام التشغيل Ubuntu 14.04.5 LTS (Trusty Tahr).
لوحات 5,52840 شمالية شبه موصلّة
يستخدم هذا الدرس التطبيقي حول الترميز ثلاثة nRF52840 لوحات PDK.
تثبيت SEGGER J-Link
نحن نستخدم SEGGER J-Link لبرمجة لوحات nRF52840 التي تحتوي على وحدات JTAG داخلية. يمكنك تثبيت هذا التطبيق على جهاز يعمل بنظام التشغيل Linux.
نزِّل الحزمة المناسبة لجهازك وثبِّتها في المكان المناسب. بالنسبة إلى نظام التشغيل Linux، إليك /opt/SEGGER/JLink
.
تثبيت أدوات سطر الأوامر nRF5x
تتيح لك أدوات سطر الأوامر nRF5x بث برامج ثنائية لبرنامج OpenThread على ألواح nRF52840. ثبِّت الإصدار المناسب من نظام التشغيل nRF5x-Command-Line-أدوات <OS> على جهاز Linux.
وضع الحزمة المستخرَجة في المجلد الجذر ~/
تثبيت سلسلة ARM GNU
ويتم استخدام أداة ARM GNU Keychain للبناء.
نقترح وضع الأرشيف الذي تم استخراجه في /opt/gnu-mcu-eclipse/arm-none-eabi-gcc/
على الجهاز الذي يعمل بنظام التشغيل Linux. اتبع التعليمات الواردة في ملف readme.txt
في الأرشيف للحصول على تعليمات التثبيت.
تثبيت الشاشة (اختياري)
الشاشة هي أداة بسيطة للوصول إلى الأجهزة المتصلة من خلال منفذ تسلسلي. يستخدم هذا الدرس التطبيقي حول الترميز ميزة الشاشة، ولكن يمكنك استخدام أي تطبيق محطة منافذ تسلسلية تريده.
$ sudo apt-get install screen
3. مستودعات مماثلة
OpenThread
استنسِخ OpenThread وثبِّته. تضمن أوامر script/bootstrap
تثبيت سلسلة الأدوات وضبط البيئة بشكل صحيح:
$ mkdir -p ~/src $ cd ~/src $ git clone --recursive https://github.com/openthread/openthread.git $ cd openthread $ ./script/bootstrap
إنشاء البرنامج الخفي المفتوح في سلسلة محادثات:
$ script/cmake-build posix -DOT_DAEMON=ON
أصبحت جاهزًا الآن لإنشاء إصدار مفتوح من Flash، وإضافته إلى لوحات nRF52840.
4- إعداد رابط RCP
تصميم ووميض
أنشِئ مثالاً على سلسلة سلسلة OpenN RR52840 باستخدام وظيفة الميكروفون وكابل USB الأصلية. يستخدم أحد الأجهزة دور "المنضم" لتتم مصادقتها وتكليفه بشكل آمن على شبكة Thread. يسمح نظام USB الأصلي باستخدام ACM CDC كنقل تسلسلي بين 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 بمنفذ USB-Debug لتصحيح الأخطاء بجانب دبوس الطاقة الخارجي على لوح nRF52840، ثم وصِّله بجهاز Linux. اضبط مفتاح مصدر الطاقة بـ nRF على لوحة nRF52840 على VDD. عندما يكون الجهاز متصلاً بشكل صحيح، يعني هذا أنّ الجهاز LED5 مفعَّل.
إذا كانت هذه هي اللوحة الأولى المتصلة بجهاز Linux، ستظهر كمنافذ تسلسلية /dev/ttyACM0
(تستخدم جميع nRF52840 ألواح ttyACM
لمعرّف المنفذ التسلسلي).
$ ls /dev/ttyACM* /dev/ttyACM0
لاحظ الرقم التسلسلي للوحة nRF52840 المستخدَمة في RCP:
انتقِل إلى موقع أدوات سطر الأوامر nRFx، وأدرِج ملف OpenThread RCP السداسي العشري على اللوحة nRF52840، باستخدام الرقم التسلسلي لللوحة. يُرجى العِلم أنّه في حال عدم ظهور العلامة --verify
، ستظهر لك رسالة تحذير تفيد بأنّ عملية الفلاش قد تتعذّر بدون أي خطأ.
$ cd ~/nrfjprog/ $ ./nrfjprog -f nrf52 -s 683704924 --verify --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 كنقل تسلسلي، عليك استخدام منفذ nRF USB على لوح nRF52840 للتواصل مع مضيف RCP (جهاز يعمل بنظام التشغيل Linux).
افصِل الطرف المصغّر لكابل USB من منفذ تصحيح لوحة nRF52840 الوامضة، ثم أعِد توصيله بمنفذ nRF USB المصغَّر بجانب الزر إعادة ضبط. اضبط مفتاح تبديل مصدر طاقة nRF على USB.
بدء البرنامج الخفي في OpenThread
في تصميم RCP، يمكنك استخدام البرنامج الخفي OpenThread للتواصل مع جهاز Thread وإدارته. ابدأ ot-daemon
بعلامة علامة النتائج التفصيلية -v
حتى تتمكّن من الاطّلاع على نتيجة السجلّ والتأكد من تشغيله:
$ cd ~/src/openthread $ sudo ./build/posix/src/posix/ot-daemon -v \ 'spinel+hdlc+uart:///dev/ttyACM0?uart-baudrate=115200'
عند نجاح هذا الإجراء، ينشئ 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
اترك هذه النافذة الطرفية مفتوحة حتى يمكن عرض السجلّات من ot-daemon
.
يمكنك استخدام ot-ctl
للتواصل مع عقدة RCP. يستخدم ot-ctl
واجهة سطر الأوامر نفسها التي يستخدمها تطبيق OpenLI CLI. وبالتالي، يمكنك التحكّم في ot-daemon
عُقد بالطريقة نفسها التي تستخدم بها أجهزة Thread الأخرى التي تمت محاكاتها.
في نافذة ثانية طرفية، ابدأ ot-ctl
:
$ sudo ./build/posix/src/posix/ot-ctl >
تحقق من state
للعقدة 2 (عقدة RCP) التي بدأتها بـ ot-daemon
:
> state disabled Done
5. إعداد بيانات FTD
عُقدتا Thread الأخرى المستخدمة في هذا الدرس التطبيقي حول الترميز: أجهزة سلسلة المحادثات الكاملة (FTDs) ذات التصميم العادي للنظام على الرقاقة (SoC). في إعداد الإنتاج، يمكن استخدام wpantund
، وهو برنامج تشغيل لواجهة الشبكة على مستوى الإنتاج، للتحكّم في مثيلات Openسلسلة NCP، ولكن في هذا الدرس التطبيقي حول الترميز، سنستخدم ot-ctl
، وهو واجهة سطر الأوامر في OpenThread.
يعمل جهاز واحد كمُفوَّض لمصادقة الأجهزة واعتمادها بشكل آمن على تلك الشبكة. ويعمل الجهاز الآخر كجهة انضمام يمكن للمفوَّض المصادقة عليها.
تصميم ووميض
إنشاء مثال على OpenThread FTD للنظام الأساسي nRF52840، مع تفعيل دورَي المفوَّض والانضمام:
$ cd ~/src/ot-nrf528xx $ rm -rf build $ script/build nrf52840 USB_trans -DOT_JOINER=ON -DOT_COMMISSIONER=ON
انتقِل إلى الدليل باستخدام البرنامج الثنائي لسلسلة Open Graph الكاملة (FTD) CLI، وحوِّله إلى تنسيق ست عشري:
$ cd ~/src/ot-nrf528xx/build/bin $ arm-none-eabi-objcopy -O ihex ot-cli-ftd ot-cli-ftd.hex
وصِّل كابل USB بمنفذ USB الصغير بجانب دبوس الطاقة الخارجي على لوح nRF52840، ثم وصِّله بجهاز Linux. إذا كان RCP لا يزال متصلاً بجهاز Linux، من المفترض أن تظهر هذه اللوحة الجديدة كمنافذ تسلسلية /dev/ttyACM1
(جميع الألواح nRF52840 تستخدم ttyACM
لمعرّف المنفذ التسلسلي).
$ ls /dev/ttyACM* /dev/ttyACM0 /dev/ttyACM1
كما في السابق، يُرجى ملاحظة أنّ الرقم التسلسلي للوحة nRF52840 المستخدَمة في الضريبة المستدامة (FTD) هو:
انتقِل إلى موقع أدوات سطر الأوامر nRFx، وأدرِج ملف سداسي عشري لسلسلة OpenThread CLI FTD على اللوح nRF52840، باستخدام الرقم التسلسلي لللوحة:
$ cd ~/nrfjprog/ $ ./nrfjprog -f nrf52 -s 683704924 --verify --chiperase --program \ ~/src/ot-nrf528xx/build/bin/ot-cli-ftd.hex --reset
صنِّف اللوحة "مفوَّض".
الاتصال بكابل USB الأصلي
بما أنّ إصدار OpenThread FTD يتيح استخدام منفذ USB CDC ACM كنقل تسلسلي، عليك استخدام منفذ nRF USB على لوح nRF52840 للتواصل مع مضيف RCP (جهاز يعمل بنظام التشغيل Linux).
افصِل الطرف المصغّر لكابل USB من منفذ تصحيح لوحة nRF52840 الوامضة، ثم أعِد توصيله بمنفذ nRF USB المصغَّر بجانب الزر إعادة ضبط. اضبط مفتاح تبديل مصدر طاقة nRF على USB.
التأكّد من الإصدار
التحقُّق من نجاح الإصدار من خلال الوصول إلى واجهة سطر الأوامر في OpenThread باستخدام شاشة GNU من نافذة طرفية تستخدم لوحات nRF52840 معدّل باود 115200.
$ screen /dev/ttyACM1 115200
في النافذة الجديدة، اضغط على زرّ Return على لوحة المفاتيح بضع مرات لإظهار إشعار OpenLI CLI >
. اعرض واجهة IPv6 وابحث عن العناوين:
> ifconfig up Done > ipaddr fe80:0:0:0:1cd6:87a9:cb9d:4b1d Done
استخدام Ctrl+a ←
d
لفصل الجهاز عن شاشة واجهة سطر الأوامر الخاصة بتفويض FTD ثم ارجع إلى الوحدة الطرفية لنظام التشغيل Linux بحيث يمكن استخدام اللوحة التالية. لإعادة إدخال واجهة سطر الأوامر في أي وقت، يمكنك استخدام 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
الحالي. عند الانتهاء، احرص على إعادة توصيل اللوحة بجهاز الكمبيوتر باستخدام منفذ nRF USB وضبط مفتاح مصدر الطاقة nRF على VDD.
إذا كانت العُقدتان الأخرى متصلتَين بجهاز Linux عند إرفاق هذه اللوحة الثالثة، يجب أن تظهر ك منفذ تسلسلي /dev/ttyACM2
:
$ ls /dev/ttyACM* /dev/ttyACM0 /dev/ttyACM1 /dev/ttyACM2
صنِّف اللوحة على شكل "رابط".
عند إثبات الملكية باستخدام ميزة "الشاشة"، بدلاً من إنشاء نسخة جديدة من الشاشة من سطر الأوامر، أعِد الربط بالنافذة الحالية وأنشئ نافذة جديدة داخلها (استخدمتها لمفوض إدارة الضرائب الفيدرالية):
$ screen -r
يمكنك إنشاء نافذة جديدة ضمن الشاشة باستخدام Ctrl+a ← c
.
سيظهر لك سطر أوامر جديد. الوصول إلى واجهة سطر أوامر (CLI) الخاصة ببروتوكول OpenThread الخاص بالانضمام إلى FTD:
$ screen /dev/ttyACM2 115200
في هذه النافذة الجديدة، اضغط على Return في لوحة المفاتيح بضع مرات لإظهار إشعار OpenLI CLI >
. اعرض واجهة IPv6 وابحث عن العناوين:
> ifconfig up Done > ipaddr fe80:0:0:0:6c1e:87a2:df05:c240 Done
بعد أن أصبحت واجهة سطر الأوامر (FTD) التابعة لـ FTD مطابقًا لشاشته كمفوضية FTD، يمكنك التبديل بينها باستخدام Ctrl+a ← n
.
استخدام Ctrl+a ←
d
في أي وقت للخروج من الشاشة
6- إعداد نافذة طرفية
من الآن فصاعدًا، سيتم التبديل بين أجهزة Thread بشكل متكرر، لذا احرص على أن تكون جميع الأجهزة مباشرة ويسهل الوصول إليها. حتى الآن، نستخدم الشاشة للوصول إلى ميزتَي FTD، كما تسمح هذه الأداة أيضًا بتقسيم الشاشة من خلال النافذة الطرفية نفسها. استخدِم هذا الزر لمعرفة كيفية تفاعل عقدة معيّنة مع الأوامر الصادرة على أخرى.
من المفترض أن تتوفر لديك أربع نوافذ بسهولة:
- خدمة / سجلات
ot-daemon
- جهة الانضمام إلى برنامج RRC عبر
ot-ctl
- المُفوَّض لإدارة الأغذية والدواء (FTD) من خلال واجهة سطر الأوامر (CLI) في OpenThread
- رابط FTD عبر واجهة سطر الأوامر في OpenThread
إذا أردت استخدام الأداة أو ضبط المنفذ التسلسلي الخاص بك، يمكنك التخطي إلى الخطوة التالية. يمكنك ضبط النوافذ الطرفية لجميع الأجهزة بالطريقة التي تناسبك.
استخدام الشاشة
لتسهيل الاستخدام، ابدأ جلسة شاشة واحدة فقط. يجب أن يكون لديك حساب حالي من وقت إعداد FTD.
تبدأ جميع الأوامر ضمن الشاشة بـ Ctrl+a.
أوامر الشاشة الأساسية:
إعادة الربط بجلسة الشاشة (من سطر الأوامر) |
|
مغادرة جلسة الشاشة | Ctrl+a ← |
إنشاء نافذة جديدة ضمن جلسة الشاشة | Ctrl+a ← |
التبديل بين النوافذ في جلسة الشاشة نفسها | Ctrl+a ← |
إيقاف النافذة الحالية في جلسة الشاشة | Ctrl+a ← |
تقسيم الشاشة
باستخدام الشاشة، يمكنك تقسيم الوحدة الطرفية إلى نوافذ متعددة:
يتم الوصول إلى الأوامر في screen
باستخدام Ctrl+a. يجب أن يبدأ كل أمر بمفتاح الوصول هذا.
في حال اتّباع الدرس التطبيقي حول الترميز بالضبط، يجب أن تكون لديك نافذتان (مُفوَّض من برنامج FTD، وشريك FTD) على مثيل الشاشة نفسه. لتقسيم الشاشة بين الاثنين، أدخل أولاً جلسة الشاشة الحالية:
$ screen -r
يجب استخدام أحد أجهزة FTD. اتّبِع الخطوات التالية في الشاشة:
- Ctrl+a ←
S
لتقسيم النافذة أفقيًا - Ctrl+a ←
Tab
لنقل المؤشر إلى نافذة فارغة جديدة - Ctrl+a ←
n
لتبديل هذه النافذة الجديدة إلى النافذة التالية - إذا كان الأمر هو نفسه النافذة العلوية، اضغط على Ctrl+a ←
n
لعرض جهاز FTD الآخر.
كلاهما مرئي الآن. ويمكنك التبديل بينهما باستخدام Ctrl+a ← Tab
. نقترح إعادة تسمية كل نافذة باستخدام Ctrl+a ← A
لتجنب الالتباس.
الاستخدام المتقدم
لتقسيم الشاشة إلى أربعة أقسام وعرض سجلّات ot-daemon
ودمج RCP ot-ctl
، يجب بدء تشغيل تلك الخدمات ضمن مثيل الشاشة نفسه. ولإجراء ذلك، عليك إيقاف ot-daemon
والخروج من ot-ctl
، ثم إعادة تشغيله ضمن نوافذ "الشاشة الجديدة" (Ctrl+a ← c
).
هذا الإعداد غير مطلوب ويتم تركه كتمرين للمستخدم.
يمكنك تقسيم النوافذ والتنقّل بينها باستخدام الطلبات التالية:
إنشاء نافذة جديدة | Ctrl+a ← |
تقسيم النافذة عموديًا | Ctrl+a ← |
تقسيم النافذة أفقيًا | Ctrl+a ← |
الانتقال إلى النافذة المعروضة التالية | Ctrl+a ← |
تبديل النافذة المعروضة للأمام أو للخلف | Ctrl+a ← |
إعادة تسمية النافذة الحالية | Ctrl+a ← |
يمكنك الخروج من الشاشة في أي وقت من خلال الضغط على Ctrl+a ← d
وإعادة إرفاقها باستخدام screen -r
من سطر الأوامر.
لمزيد من المعلومات حول الشاشة، اطّلع على المرجع السريع لشاشة GNU.
7- إنشاء شبكة Thread
الآن بعد أن تم ضبط جميع النوافذ والشاشات الطرفية، لنبدأ إنشاء شبكة Thread. في مفوضية إدارة الأغذية والدواء، أنشئ مجموعة بيانات تشغيلية جديدة والتزم بها كمجموعة نشطة. مجموعة البيانات التشغيلية هي إعدادات شبكة Thread التي تنشئها.
## 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" مرئية الآن عند البحث عنها من أجهزة Thread الأخرى.
من ot-ctl
على رابط RCP:
## RCP Joiner ## ---------------- > scan | PAN | MAC Address | Ch | dBm | LQI | +------+------------------+----+-----+-----+ | c0de | 1ed687a9cb9d4b1d | 11 | -36 | 232 |
من واجهة سطر الأوامر في OpenThread على رابط FTD:
## FTD Joiner ## ---------------- > scan | PAN | MAC Address | Ch | dBm | LQI | +------+------------------+----+-----+-----+ | c0de | 1ed687a9cb9d4b1d | 11 | -38 | 229 |
إذا لم تظهر شبكة "lablab" في القائمة، حاوِل البحث عنها مرة أخرى.
8- إضافة ملحق RCP
تفويض Threading غير نشط على الشبكة، ما يعني أننا سنحتاج إلى إضافة رابط RCP إلى شبكة Thread التي أنشأناها باستخدام عملية تفويض خارج النطاق.
في مفوضية إدارة الأغذية والدواء، دوّنا مفتاح الشبكة، على سبيل المثال، 1234c0de7ab51234c0de7ab51234c0de
. إذا كنت بحاجة إلى البحث عن مفتاح الشبكة مرة أخرى، شغّل الأمر التالي في FTD Commissioner:
## FTD Commissioner ## > dataset networkkey 1234c0de7ab51234c0de7ab51234c0de Done
بعد ذلك، في القيمة المجمّعة لبروتوكول RCP، يمكنك ضبط مفتاح شبكة مجموعة البيانات النشط على مفتاح شبكة FTD Commissioner:
## RCP Joiner ## ---------------- > dataset networkkey 1234c0de7ab51234c0de7ab51234c0de Done > dataset commit active Done
تحقّق من مجموعة البيانات للتأكد من إعدادها بشكل صحيح.
## RCP Joiner ## ---------------- > dataset Network Key: 1234c0de7ab51234c0de7ab51234c0de
انتقِل إلى Thread حتى تنضمّ رابط RCP إلى شبكة "codelab". انتظِر بضع ثوانٍ، تحقَّق من حالة RLOC16 وعناوين IPv6:
## RCP Joiner ## ---------------- > ifconfig up Done > 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 Commissioner للتحقُّق من أجهزة التوجيه والجداول الفرعية للتأكُّد من أن كلا الجهازَين جزءان من الشبكة نفسها. استخدِم RLOC16 لتحديد رابط RCP.
## 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
يمكنك فحص اتصال الشبكة المحلية الشبكية لجهة الانضمام عبر بروتوكول CCP (عنوان الشبكة المحلية المحلية الذي تم الحصول عليه من مخرجات ipaddr
عبر RCP) للتحقق من الاتصال:
## 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
لدينا الآن شبكة Thread تتألف من عقدتين، كما هو موضح في مخطط الطوبولوجيا هذا:
مخططات الطوبولوجيا
أثناء عَمَل باقي الدروس التطبيقية في Codelab، سنعرض رسمًا بيانيًا جديدًا عن تقنية "سلسلة المحادثات" كلما تغيّرت حالة الشبكة. يتم توضيح أدوار العُقد على النحو التالي:
تكون أجهزة التوجيه خماسية دائمًا، والأجهزة النهائية دائمًا دائرية الشكل. تمثّل الأرقام في كل عُقدة رقم تعريف جهاز التوجيه أو المعرّف الفرعي المعروض في مخرجات واجهة سطر الأوامر (CLI)، استنادًا إلى الدور الحالي لكل عقدة وحالتها في ذلك الوقت.
9. عمولة وصلة FTD
لنبدأ الآن إضافة جهاز Thread الثالث إلى شبكة "codelab". وفي هذه المرة، سنستخدم عملية العمولة الأكثر أمانًا ضمن النطاق، ولن نسمح إلا لمنضمّ FTD بالانضمام.
في جهة FTD، احصل على eui64
، حتى يتمكّن مفوَّض FTD من التعرّف عليه:
## FTD Joiner ## ---------------- > eui64 2f57d222545271f1 Done
في المُفوَّض لإدارة الأغذية والعقاقير (FTD)، ابدأ المُفوَّض وحدِّد eui64
للجهاز الذي يمكن الانضمام إليه، إلى جانب بيانات اعتماد المُسجِّل، على سبيل المثال J01NME
. "بيانات اعتماد المُسجِّل" هي سلسلة خاصة بكل أحرف أبجدية رقمية كبيرة (من 0 إلى 9 ومن A إلى Y)، باستثناء I وO وQ وZ لتسهيل القراءة، وتتضمّن بين 6 و32 حرفًا.
## FTD Commissioner ## ---------------------- > commissioner start Done > commissioner joiner add 2f57d222545271f1 J01NME Done
التبديل إلى لوحة FTD ابدأ دور العضو باستخدام بيانات اعتماد الانضمام التي أعددتها للتو في مفوَّض إدارة الأغذية والعقاقير (FTD):
## FTD Joiner ## ---------------- > ifconfig up Done > joiner start J01NME Done
في غضون دقيقة تقريبًا، ستتلقّى تأكيدًا على المصادقة الناجحة:
## FTD Joiner ## ---------------- > Join success
انتقِل إلى Thread حتى ينضم عضو FTD إلى شبكة "codelab"، ويتحقّق على الفور من الحالة وRLOC16:
## FTD Joiner ## ---------------- > thread start Done > state child Done > rloc16 0c02 Done
تحقَّق من عناوين IPv6 للجهاز. يُرجى العِلم أنّه ما مِن شهادة ALOC. ويرجع ذلك إلى أنّ هذا الجهاز ليس القائد، ولا يملك دورًا خاصًا بـ Allcast يتطلب توفّر شهادة 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 Commissioner وتحقّق من جهاز التوجيه والجداول الفرعية للتأكّد من توفّر ثلاثة أجهزة في شبكة "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 بالشبكة بصفتها "جهازًا نهائيًا" (طفل). هذه هي الطوبولوجيا المعدَّلة:
10. طريقة استخدام سلسلة المحادثات
الأجهزة التي تتضمّن سلاسل محادثات في هذا الدرس التطبيقي حول الترميز هي نوع معيّن من الأجهزة المزوّدة بسلاسل محادثات كاملة (FTD) والتي يُطلق عليها اسم "جهاز النهاية المؤهَّل لاستخدام جهاز التوجيه" (REED). وهذا يعني أنّها قد تكون جزءًا من جهاز توجيه أو جهاز نهاية، ويمكنها الترويج لنفسها من جهاز نهائي إلى جهاز توجيه.
يمكن أن تتيح سلسلة المحادثات ما يصل إلى 32 جهاز توجيه، ولكنها تحاول إبقاء عدد أجهزة التوجيه بين 16 و23 جهازًا. في حال إرفاق جهاز REED بوصفه جهازًا نهائيًا (طفلاً) وكان عدد أجهزة التوجيه أقل من 16 عامًا، سيعود تلقائيًا بعد فترة عشوائية في غضون دقيقتين إلى جهاز توجيه.
إذا كان لديك طفلَان في شبكة Thread بعد إضافة رابط FTD، انتظر لمدة دقيقتين على الأقل، ثم تحقّق مرة أخرى من جداول جهاز التوجيه والأطفال على FTD Commissioner:
## 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.
يُرجى تأكيد الحالة الجديدة ونموذج RLOC16 في FTDJOINer:
## FTD Joiner ## ---------------- > state router Done > rloc16 b800 Done
خفض مستوى انضمام FTD
يمكنك اختبار هذا السلوك من خلال الرجوع إلى إصدار سابق من أداة FTD من جهاز توجيه إلى جهاز نهائي. غيِّر الولاية إلى "طفل" وتحقَّق من RLOC16:
## FTD Joiner ## ---------------- > state child Done > rloc16 0c03 Done
بالرجوع إلى مفوّض إدارة الأغذية والعقاقير (FTD)، من المفترض أن يظهر الآن رابط FTD في الجدول الفرعي (رقم التعريف = 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
.
إزالة القائد
يتم اختيار القائد بنفسه من بين جميع أجهزة توجيه سلاسل المحادثات. ويعني هذا أنه في حال إزالة القائد الحالي من شبكة Thread، سيصبح أحد أجهزة التوجيه الأخرى القائد الجديد.
في FTD Commissioner (إيقاف FTD Commissioner)، أوقِف سلسلة المحادثات لإزالتها من شبكة Thread:
## FTD Commissioner ## ---------------------- > thread stop Done > ifconfig down Done
في غضون دقيقتين، يصبح الانضمام إلى FTD رائدًا في سلسلة محادثات. راجِع حالة الولاية وعناوين IPv6 الخاصة بجهة FTD للتحقق مما يلي:
## 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
تحقّق من الجدول الفرعي. رصد توفّر جهاز RLOC16 جديد هذا هو رابط RCP، كما هو موضح في رقم التعريف ورقم MAC الإضافي. من أجل الحفاظ على شبكة Thread معًا، تم تبديل أجهزة التوجيه الرئيسية من مفوّض FTD إلى رابط FTD. ويؤدي هذا إلى الحصول على RLOC16 جديد لجهة انضمام RCP (لأن رقم تعريف جهاز التوجيه تغيّر من 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
قد تحتاج إلى الانتظار بضع دقائق حتى يتم إرفاق رابط RCP كعضو FTD كطفل. تحقَّق من الولاية والمستوى RLOC16 للتأكّد من أنّ:
## RCP Joiner ## -------------- > state child > rloc16 b801
إعادة إرفاق مرفق FTD
إنّ شبكة سلسلة المحادثات التي تحتوي على عقدتَين ليست ممتعة جدًا. لنبدأ من جديد في تفويض FTD على الإنترنت.
في FTD Commissioner، أعِد تشغيل سلسلة المحادثات:
## FTD Commissioner ## ---------------------- > ifconfig up Done > thread start Done
وبعد دقيقتين، تتم إعادة توصيله تلقائيًا بشبكة "الدرس التطبيقي حول الترميز" كـ "جهاز نهائي"، ثم يروّي نفسه إلى "جهاز التوجيه".
## FTD Commissioner ## ---------------------- > state router Done
تحقَّق من جهاز التوجيه والجداول الفرعية في FTD Dialerer للتحقّق من:
## 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
تتألف شبكة Thread من ثلاث عُقد مرة أخرى.
11- تحديد المشاكل وحلّها
قد تكون إدارة شبكة Thread باستخدام أجهزة متعددة على محطات دفع أو نوافذ شاشة مختلفة عملية معقدة. استخدِم هذه النصائح من أجل "إعادة ضبط" حالة الشبكة أو مساحة العمل في حال مواجهة مشاكل.
الشاشة
إذا فقدت الضبط في عملية الإعداد (عدد كبير جدًا من نوافذ الشاشة أو الشاشات ضمن الشاشة)، استمر في إغلاق نافذة الشاشة باستخدام Ctrl+a ← k حتى لا يتوفّر أي منها، وسيتم عرض screen -ls
في سطر الأوامر No Sockets found
. بعد ذلك، أعِد إنشاء نوافذ الشاشة لكل جهاز. يتم الاحتفاظ بحالة الجهاز حتى إذا تم إيقاف الشاشة.
عُقد سلاسل المحادثات
في حال لم يكن تصنيف طوبولوجيا شبكة Thread مضبوطًا على النحو الموضّح في هذا الدرس التطبيقي حول الترميز، أو تم فصل العُقد لسببٍ ما (ربما بسبب عدم اتصال الجهاز الذي يعمل بنظام التشغيل Linux بمصدر الطاقة)، من الأفضل إيقاف سلسلة المحادثات ومحو بيانات اعتماد الشبكة والبدء مرة أخرى من الخطوة إنشاء شبكة Thread.
اتّبِع الخطوات التالية لإعادة ضبط إعدادات FTD:
## 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
12- استخدام البث المتعدد
يتم استخدام ميزة البث المتعدد لنقل المعلومات إلى مجموعة من الأجهزة في آنٍ واحد. في شبكة سلسلة المحادثات، يتم حجز عناوين مُحدَّدة للاستخدام في البث المتعدد مع مجموعات مختلفة من الأجهزة، بناءً على النطاق.
عنوان IPv6 | النطاق | تم التسليم إلى |
| الرابط المحلي | كل تدريبات تدريبي مسبق على الجهاز |
| الرابط المحلي | كل أجهزة FTD وأجهزة توجيه الحدود |
| شبكة لاسلكية محلية | كل تدريبات تدريبي مسبق على الجهاز |
| شبكة لاسلكية محلية | كل أجهزة FTD وأجهزة توجيه الحدود |
بما أنّنا لا نستخدم جهاز توجيه الحدود في هذا الدرس التطبيقي حول الترميز، سنركّز على عنوانَي البث المتعددَين FTD وMED.
الرابط المحلي
يشمل النطاق المحلي Link جميع واجهات Thread التي يمكن الوصول إليها عن طريق بث لاسلكي واحد أو "قفز" واحد. تتحكّم السياسة الهيكلية للشبكة في الأجهزة التي تستجيب لإرسال إشعار إلى عنوان ff02::1
المتعدد البث.
فحص الاتصال بـ ff02::1
من FTD Commissioner:
## FTD Commissioner ## ---------------------- > ping ff02::1 > 8 bytes from fe80:0:0:0:e4cd:d2d9:3249:a243: icmp_seq=2 hlim=64 time=9ms
هناك جهازان آخران في الشبكة (رابط FTD وشريك RCP)، ولكن لم تفوّض مفوض FTD ردًا واحدًا فقط من العنوان المحلي لرابط FTD (LLA). وهذا يعني أن رابط FTD هو الجهاز الوحيد الذي يمكن أن يصل إليه مفوّض FTD بقفزة واحدة.
يتم الآن فحص الاتصال بـ 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 التابع لـ RCP.
هذا يعني أنّ رابط FTD مرتبط مباشرةً بكلّ من مفوّض FTD وشريك RCP، ما يؤكّد طبيعة الطبولوجيا.
شبكة لاسلكية محلية
يشمل نطاق Mesh-Local جميع واجهات سلاسل المحادثات التي يمكن الوصول إليها ضمن شبكة Thread نفسها. لنتعرّف على الردود على إشعار عنوان البث المتعدد ff03::1
.
فحص الاتصال بـ ff03::1
من FTD Commissioner:
## 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-Local EID (ML-EID) التابع لجهة انضمام RCP، وهو ينتهي بالنطاق d55f
. ويرجع ذلك إلى أنّ النطاق المحلي للشبكة المتداخلة يضم شبكة Thread بالكامل. بغض النظر عن مكان الشبكة، سيُشترَك بعنوان ff03::1
.
إشعار 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
دوِّن وقت استجابة رابط RCP في مخرجتَي فحص الاتصال. استغرقت عملية الانضمام إلى "سرعة عرض المحتوى على الصفحة" وقتًا أطول من غيره للوصول إلى "مفوّض FTD" (68 ملّي ثانية) مقارنةً بوقت وصوله إلى "منضم FTD" (23 ملّي ثانية). ويرجع ذلك إلى أنّها تتطلّب إجراء قفزتَين للوصول إلى مفوّض FTD مقارنةً بالقفز مرة واحدة بالنسبة إلى لجنة FTD.
قد تلاحظ أيضًا أنّ إشعار البث المتعدد المحلي للشبكة المتداخلة قد استجاب باستخدام RLOC فقط لمجموعتَي VTD، وليس رابط RCP. ويرجع ذلك إلى أنّ بروتوكول FTD هو جهاز توجيه في الشبكة، في حين أنّ RCP هو جهاز نهائي.
اطّلِع على حالة شريك RRC لتأكيد ما يلي:
## RCP Joiner ## ---------------- > state child
13- إرسال الرسائل باستخدام UDP
تتمثّل إحدى خدمات التطبيق التي يوفّرها OpenThread في بروتوكول بروتوكول بيانات مخطط المستخدمين (UDP). يمكن لأحد التطبيقات المنشأة على OpenThread استخدام واجهة برمجة تطبيقات UDP لتمرير الرسائل بين العُقد في شبكة Thread، أو إلى أجهزة أخرى في شبكة خارجية (مثل الإنترنت، إذا كانت شبكة Thread تعرض جهاز توجيه الحدود).
يتم الكشف عن مقابس UDP من خلال واجهة سطر الأوامر (OpenLI). لنستخدمها لتمرير الرسائل بين أدائيتَي FTD.
يمكنك الحصول على عنوان معرّف بطاقة SIM المضمنة (EID) المحلي لجهة FTD. نستخدم هذا العنوان لأنه يمكن الوصول إليه من أي مكان داخل شبكة Thread.
## 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 والاتصال بالمقبس الذي أعددته في رابط 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 Dialer، تم تلقّي رسالة UDP.
## FTD Joiner ## ---------------- > 10 bytes from fdc0:de7a:b5c0:0:0:ff:fe00:c00 49153 hellothere
14- تهانينا.
لقد أنشأت شبكة Thread الفعلية!
أنت تعلم الآن:
- الفرق بين أنواع الأجهزة وأدوارها ونطاقاتها في سلسلة محادثات
- كيف تدير أجهزة Thread حالاتها داخل الشبكة
- كيفية تمرير رسائل بسيطة بين العُقد باستخدام UDP
الخطوات التالية
وبناءً على هذا الدرس التطبيقي حول الترميز، جرِّب التمارين التالية:
- يمكنك إعادة تحميل لوحة FTD تضامن "MTD" مع البرنامج الثنائي
ot-cli-mtd
، مع ملاحظة أنّ اللوحة لا تتم ترقيتها مطلقًا إلى جهاز توجيه أو تحاول أن تصبح قائدًا. - أضِف المزيد من الأجهزة (جرِّب نظامًا أساسيًا مختلفًا) إلى الشبكة وارسم مخططًا للطب تساعدك في استخدام الجداول بين أجهزة التوجيه والأطفال الفرعية، إلى جانب الإشعارات إلى عناوين البث المتعدد.
- استخدِم pyspinel للتحكّم في NCP
- حوّل "بروتوكول NCP" إلى جهاز توجيه الحدود باستخدام جهاز توجيه الحدود في سلسلة محادثات ووصِّل شبكة سلسلة المحادثات بالإنترنت
مواصلة القراءة
يمكنك الاطّلاع على openthread.io وGitHub في مجموعة متنوعة من مراجع OpenThread، بما في ذلك:
- الأنظمة الأساسية المتوافقة: يمكنك اكتشاف جميع الأنظمة الأساسية التي تتوافق مع OpenThread.
- الإصدار
- Thread Primer: يتناول جميع مفاهيم سلاسل المحادثات المعروضة في هذا الدرس التطبيقي حول الترميز.
مرجع: