۱. مقدمه

OpenThread که توسط گوگل منتشر شده است، یک پیادهسازی متنباز از پروتکل شبکه Thread است. گوگل نست (Google Nest) OpenThread را منتشر کرده است تا فناوری مورد استفاده در محصولات Nest را به طور گسترده در دسترس توسعهدهندگان قرار دهد تا توسعه محصولات برای خانههای متصل را تسریع کند.
مشخصات Thread یک پروتکل ارتباطی بیسیم دستگاه به دستگاه مبتنی بر IPv6، قابل اعتماد، امن و کممصرف را برای کاربردهای خانگی تعریف میکند. OpenThread تمام لایههای شبکه Thread شامل IPv6، 6LoWPAN، IEEE 802.15.4 را با امنیت MAC، ایجاد لینک مش و مسیریابی مش پیادهسازی میکند.
این Codelab شما را در شبیهسازی یک شبکه Thread روی دستگاههای شبیهسازی شده راهنمایی میکند.
آنچه یاد خواهید گرفت
- نحوه تنظیم ابزار ساخت OpenThread
- نحوه شبیهسازی یک شبکه Thread
- نحوه احراز هویت گرههای Thread
- نحوه مدیریت شبکه Thread با OpenThread Daemon
آنچه نیاز دارید
- گیت
- آشنایی اولیه با لینوکس، مسیریابی شبکه
۲. سیستم ساخت را راهاندازی کنید
گیت
برای تکمیل این Codelab به Git نیاز است. قبل از ادامه آن را دانلود و نصب کنید.
پس از نصب، دستورالعملهای مربوط به سیستم عامل خاص خود را برای دانلود و ساخت OpenThread دنبال کنید.
XCode برای سیستم عامل مک
برای نصب و ساخت OpenThread در Mac OS X، به XCode نیاز است.
پس از نصب XCode، ابزارهای خط فرمان XCode را نصب کنید:
$ xcode-select --install
ساخت بر روی لینوکس / مک او اس ایکس
این دستورالعملهای نصب روی Ubuntu Server 14.04 LTS و Mac OS X Sierra 10.12.6 آزمایش شدهاند.
OpenThread را نصب کنید. دستورات bootstrap اطمینان حاصل میکنند که toolchain نصب شده و محیط به درستی پیکربندی شده است:
$ mkdir -p ~/src $ cd ~/src $ git clone --recursive https://github.com/openthread/openthread.git $ cd openthread $ ./script/bootstrap
با استفاده از ویندوز
اگر ویندوز را ترجیح میدهید، توصیه میکنیم نسخه داکر این Codelab را امتحان کنید.
۳. برنامههای OpenThread را بسازید
پس از اتمام نصب، برنامه نمونه OpenThread را بسازید. برای این Codelab ما از مثال شبیهسازی استفاده میکنیم.
$ cd ~/src/openthread $ ./script/cmake-build simulation
اکنون OpenThread Daemon را بسازید:
$ ./script/cmake-build posix -DOT_DAEMON=ON
۴. شبیهسازی یک شبکه Thread
برنامه نمونهای که برای این Codelab استفاده خواهید کرد، یک برنامه OpenThread مینیمال را نشان میدهد که رابطهای پیکربندی و مدیریت OpenThread را از طریق یک رابط خط فرمان (CLI) پایه در معرض نمایش قرار میدهد.
این تمرین شما را با حداقل مراحل مورد نیاز برای پینگ کردن یک دستگاه Thread شبیهسازی شده از یک دستگاه Thread شبیهسازی شده دیگر آشنا میکند.
شکل زیر یک توپولوژی شبکه Thread پایه را توصیف میکند. برای این تمرین، دو گره درون دایره سبز را شبیهسازی خواهیم کرد: یک Thread Leader و یک Thread Router با یک اتصال واحد بین آنها.

پینگ کردن یک گره
۱. گره ۱ را شروع کنید
به دایرکتوری openthread بروید و با استفاده از فایل باینری ot-cli-ftd فرآیند CLI را برای یک دستگاه Thread شبیهسازی شده ایجاد کنید.
$ cd ~/src/openthread $ ./build/simulation/examples/apps/cli/ot-cli-ftd 1
نکته: اگر بعد از اجرای این دستور، اعلان > را مشاهده نکردید، enter فشار دهید.
این فایل باینری یک دستگاه OpenThread را که بر روی POSIX شبیهسازی شده است، پیادهسازی میکند. درایور رادیویی IEEE 802.15.4 بر روی UDP پیادهسازی شده است (فریمهای IEEE 802.15.4 در داخل بارهای داده UDP منتقل میشوند).
آرگومان 1 یک توصیفگر فایل است که نشاندهندهی کمارزشترین بیتهای IEEE EUI-64 «اختصاصیافته از کارخانه» برای دستگاه شبیهسازیشده است. این مقدار همچنین هنگام اتصال به پورت UDP برای شبیهسازی رادیویی IEEE 802.15.4 (پورت = ۹۰۰۰ + توصیفگر فایل) استفاده میشود. هر نمونه از یک دستگاه Thread شبیهسازیشده در این Codelab از یک توصیفگر فایل متفاوت استفاده خواهد کرد.
توجه: فقط از توصیفگرهای فایل 1 یا بزرگتر، همانطور که در این Codelab ذکر شده است، هنگام ایجاد فرآیند برای یک دستگاه شبیهسازی شده استفاده کنید. توصیفگر فایل 0 برای استفادههای دیگر رزرو شده است.
یک مجموعه داده عملیاتی جدید ایجاد کنید و آن را به عنوان مجموعه داده فعال ثبت کنید. مجموعه داده عملیاتی، پیکربندی شبکه Thread ای است که شما ایجاد می کنید.
> dataset init new Done > dataset Active Timestamp: 1 Channel: 20 Channel Mask: 07fff800 Ext PAN ID: d6263b6d857647da Mesh Local Prefix: fd61:2344:9a52:ede0/64 Network Key: e4344ca17d1dca2a33f064992f31f786 Network Name: OpenThread-c169 PAN ID: 0xc169 PSKc: ebb4f2f8a68026fc55bcf3d7be3e6fe4 Security Policy: 0, onrcb Done
این مجموعه داده را به عنوان مجموعه داده فعال ثبت کنید:
> dataset commit active Done
رابط IPv6 را اجرا کنید:
> ifconfig up Done
شروع عملیات پروتکل Thread:
> thread start Done
چند ثانیه صبر کنید و تأیید کنید که دستگاه به عنوان رهبر رشته (Thread Leader) انتخاب شده است. رهبر، دستگاهی است که مسئولیت مدیریت تخصیص شناسه روتر (router ID) را بر عهده دارد.
> state leader Done
آدرسهای IPv6 اختصاص داده شده به رابط Thread گره ۱ را مشاهده کنید (خروجی شما متفاوت خواهد بود):
> ipaddr fd61:2344:9a52:ede0:0:ff:fe00:fc00 fd61:2344:9a52:ede0:0:ff:fe00:5000 fd61:2344:9a52:ede0:d041:c5ba:a7bc:5ce6 fe80:0:0:0:94da:92ea:1353:4f3b Done
به انواع خاص آدرس IPv6 توجه کنید:
- با
fd= mesh-local شروع میشود - با
fe80شروع میشود = لینک-محلی
انواع آدرسهای محلی مش به صورت زیر طبقهبندی میشوند:
- شامل
ff:fe00= یابنده مسیریاب (RLOC) - شامل
ff:fe00= شناسه نقطه پایانی (EID) نمیشود.
EID را در خروجی کنسول خود مشخص کنید و آن را برای استفادههای بعدی یادداشت کنید. در خروجی نمونه بالا، EID به صورت زیر است:
fd61:2344:9a52:ede0:d041:c5ba:a7bc:5ce6
۲. گره ۲ را شروع کنید
یک ترمینال جدید باز کنید و به دایرکتوری openthread بروید و فرآیند CLI را اجرا کنید. این دومین دستگاه Thread شبیهسازی شده شماست:
$ cd ~/src/openthread $ ./build/simulation/examples/apps/cli/ot-cli-ftd 2
نکته: اگر بعد از اجرای این دستور، اعلان > را مشاهده نکردید، enter فشار دهید.
کلید شبکه نخ و شناسه PAN را با استفاده از همان مقادیر مجموعه دادههای عملیاتی گره ۱ پیکربندی کنید:
> dataset networkkey e4344ca17d1dca2a33f064992f31f786 Done > dataset panid 0xc169 Done
این مجموعه داده را به عنوان مجموعه داده فعال ثبت کنید:
> dataset commit active Done
رابط IPv6 را اجرا کنید:
> ifconfig up Done
شروع عملیات پروتکل Thread:
> thread start Done
دستگاه خود را به عنوان یک Child مقداردهی اولیه میکند. یک Thread Child معادل یک End Device است که یک دستگاه Thread است که ترافیک Unicast را فقط با یک دستگاه Parent ارسال و دریافت میکند.
> state child Done
ظرف ۲ دقیقه باید شاهد تغییر وضعیت از child به router باشید. یک روتر Thread قادر به مسیریابی ترافیک بین دستگاههای Thread است. به آن والد نیز گفته میشود.
> state router Done
شبکه را تأیید کنید
یک راه آسان برای تأیید شبکه مش، نگاه کردن به جدول روتر است.
۱. اتصال را بررسی کنید
در گره ۲، RLOC16 را دریافت کنید. RLOC16 آخرین ۱۶ بیت آدرس RLOC IPv6 دستگاه است.
> rloc16 5800 Done
در گره ۱، جدول روتر را برای RLOC16 گره ۲ بررسی کنید. مطمئن شوید که گره ۲ ابتدا به حالت روتر تغییر وضعیت داده است.
> router table | ID | RLOC16 | Next Hop | Path Cost | LQI In | LQI Out | Age | Extended MAC | +----+--------+----------+----------+-------+---------+-----+------------------+ | 20 | 0x5000 | 63 | 0 | 0 | 0 | 0 | 96da92ea13534f3b | | 22 | 0x5800 | 63 | 0 | 3 | 3 | 23 | 5a4eb647eb6bc66c |
مقدار RLOC گره ۱ که 0xa800 است در جدول یافت میشود که اتصال آن به شبکه را تأیید میکند.
۲. پینگ کردن گره ۱ از گره ۲
اتصال بین دو دستگاه Thread شبیهسازی شده را تأیید کنید. در گره ۲، EID اختصاص داده شده به گره ۱ ping :
> ping fd61:2344:9a52:ede0:d041:c5ba:a7bc:5ce6 > 16 bytes from fd61:2344:9a52:ede0:d041:c5ba:a7bc:5ce6: icmp_seq=1 hlim=64 time=12ms
برای بازگشت به اعلان > CLI، enter فشار دهید.
شبکه را آزمایش کنید
حالا که میتوانید با موفقیت بین دو دستگاه Thread شبیهسازی شده پینگ کنید، شبکه مش را با آفلاین کردن یک گره آزمایش کنید.
بازگشت به گره ۱ و متوقف کردن نخ:
> thread stop Done
به گره ۲ سوئیچ کنید و وضعیت را بررسی کنید. ظرف دو دقیقه، گره ۲ تشخیص میدهد که رهبر (گره ۱) آفلاین است و باید شاهد انتقال گره ۲ به leader شبکه باشید:
> state router Done ... > state leader Done
پس از تأیید، Thread را متوقف کنید و قبل از خروج، Node 2 را به تنظیمات کارخانه برگردانید. تنظیم مجدد کارخانه برای اطمینان از اینکه اعتبارنامههای شبکه Thread که در این تمرین استفاده کردیم به تمرین بعدی منتقل نمیشوند، انجام میشود.
> thread stop Done > factoryreset > > exit
همچنین تنظیمات کارخانه را بازنشانی کنید و از گره ۱ خارج شوید:
> factoryreset > > exit
برای بررسی تمام دستورات CLI موجود، به مرجع OpenThread CLI مراجعه کنید.
۵. احراز هویت گرهها با راهاندازی
در تمرین قبلی، شما یک شبکه Thread با دو دستگاه شبیهسازی شده و اتصال تأیید شده راهاندازی کردید. با این حال، این فقط به ترافیک لینک-محلی IPv6 احراز هویت نشده اجازه عبور بین دستگاهها را میدهد. برای مسیریابی ترافیک جهانی IPv6 بین آنها (و اینترنت از طریق یک روتر مرزی Thread)، گرهها باید احراز هویت شوند.
برای احراز هویت، یک دستگاه باید به عنوان کمیسر عمل کند. کمیسر، سرور احراز هویت منتخب فعلی برای دستگاههای جدید Thread و مجوز دهنده برای ارائه اعتبارنامههای شبکه مورد نیاز برای پیوستن دستگاهها به شبکه است.
در این تمرین، ما از همان توپولوژی دو گرهای قبلی استفاده خواهیم کرد. برای احراز هویت، Thread Leader به عنوان کمیسر و Thread Router به عنوان Joiner عمل خواهند کرد.

۱. یک شبکه ایجاد کنید
اگر از تمرین قبلی ادامه میدهید، باید از قبل دو پنجره ترمینال باز داشته باشید. در غیر این صورت، مطمئن شوید که دو پنجره باز و آماده استفاده هستند. یکی به عنوان گره ۱ و دیگری به عنوان گره ۲ عمل خواهد کرد.
در گره ۱، فرآیند CLI را ایجاد کنید:
$ cd ~/src/openthread $ ./build/simulation/examples/apps/cli/ot-cli-ftd 1
نکته: اگر بعد از اجرای این دستور، اعلان > را مشاهده نکردید، enter فشار دهید.
یک مجموعه داده عملیاتی جدید ایجاد کنید، آن را به عنوان مجموعه داده فعال ثبت کنید و Thread را شروع کنید:
> dataset init new Done > dataset Active Timestamp: 1 Channel: 12 Channel Mask: 07fff800 Ext PAN ID: e68d05794bf13052 Mesh Local Prefix: fd7d:ddf7:877b:8756/64 Network Key: a77fe1d03b0e8028a4e13213de38080e Network Name: OpenThread-8f37 PAN ID: 0x8f37 PSKc: f9debbc1532487984b17f92cd55b21fc Security Policy: 0, onrcb Done
این مجموعه داده را به عنوان مجموعه داده فعال ثبت کنید:
> dataset commit active Done
رابط IPv6 را اجرا کنید:
> ifconfig up Done
شروع عملیات پروتکل Thread:
> thread start Done
چند ثانیه صبر کنید و تأیید کنید که دستگاه به یک رهبر رشته تبدیل شده است:
> state leader Done
۲. نقش کمیسر را شروع کنید
در حالی که هنوز در گره ۱ هستید، نقش کمیسر را شروع کنید:
> commissioner start Done
به هر Joiner (با استفاده از علامت * ) که دارای اعتبارنامه Joiner J01NME است، اجازه دهید تا به شبکه متصل شود. Joiner دستگاهی است که توسط یک مدیر انسانی به یک شبکه Thread متصل شده اضافه میشود.
> commissioner joiner add * J01NME Done
۳. نقش Joiner را شروع کنید
در پنجره ترمینال دوم، یک فرآیند CLI جدید ایجاد کنید. این Node 2 است.
$ cd ~/src/openthread $ ./build/simulation/examples/apps/cli/ot-cli-ftd 2
در گره ۲، نقش Joiner را با استفاده از اعتبارنامه J01NME Joiner فعال کنید.
> ifconfig up Done > joiner start J01NME Done
... چند ثانیه برای تأیید صبر کنید ...
Join success
به عنوان یک Joiner، دستگاه (Node 2) با موفقیت خود را توسط Commissioner (Node 1) احراز هویت کرده و اعتبارنامههای شبکه Thread را دریافت کرده است.
حالا که نود ۲ احراز هویت شد، Thread را شروع کنید:
> thread start Done
۴. اعتبارسنجی احراز هویت شبکه
state گره ۲ را بررسی کنید تا تأیید شود که اکنون به شبکه پیوسته است. ظرف دو دقیقه، گره ۲ از child به router منتقل میشود:
> state child Done ... > state router Done
۵. تنظیمات را ریست کنید
برای آماده شدن برای تمرین بعدی، پیکربندی را مجدداً تنظیم کنید. در هر گره، Thread را متوقف کنید، آن را به تنظیمات کارخانه برگردانید و از دستگاه Thread شبیهسازی شده خارج شوید:
> thread stop Done > factoryreset > > exit
ممکن است لازم باشد چند بار enter فشار دهید تا بعد از دستور factoryreset اعلان > نمایش داده شود.
۶. مدیریت شبکه با OpenThread Daemon
برای این تمرین، ما قصد داریم یک نمونه CLI (یک دستگاه SoC Thread تعبیهشده) و یک نمونه کمکپردازنده رادیویی (RCP) را شبیهسازی کنیم.
ot-daemon حالتی از برنامه OpenThread Posix است که از یک سوکت یونیکس به عنوان ورودی و خروجی استفاده میکند، به طوری که هسته OpenThread میتواند به عنوان یک سرویس اجرا شود. یک کلاینت میتواند با اتصال به سوکت با استفاده از OpenThread CLI به عنوان پروتکل، با این سرویس ارتباط برقرار کند.
ot-ctl یک رابط خط فرمان (CLI) است که توسط ot-daemon برای مدیریت و پیکربندی RCP ارائه شده است. با استفاده از این، RCP را به شبکه ایجاد شده توسط دستگاه Thread متصل خواهیم کرد.
از ot-daemon استفاده کنید
این تمرین از سه پنجره ترمینال استفاده خواهد کرد که مربوط به موارد زیر هستند:
- نمونه CLI از دستگاه Thread شبیهسازی شده (گره ۱)
- فرآیند
ot-daemon - نمونه خط فرمان
ot-ctl
اگر تمرین قبلی را ادامه میدهید، باید دو پنجره ترمینال از قبل باز شده باشد. برای اطمینان از اینکه سه پنجره ترمینال برای این تمرین در دسترس دارید، پنجره سوم را نیز باز کنید.
۱. گره ۱ را شروع کنید
در اولین پنجره ترمینال، فرآیند CLI را برای دستگاه Thread شبیهسازی شده خود ایجاد کنید:
$ cd ~/src/openthread $ ./build/simulation/examples/apps/cli/ot-cli-ftd 1
نکته: اگر بعد از اجرای این دستور، اعلان > را مشاهده نکردید، enter فشار دهید.
یک مجموعه داده عملیاتی جدید ایجاد کنید، آن را به عنوان مجموعه داده فعال ثبت کنید و Thread را شروع کنید:
> dataset init new Done > dataset Active Timestamp: 1 Channel: 13 Channel Mask: 07fff800 Ext PAN ID: 97d584bcd493b824 Mesh Local Prefix: fd55:cf34:dea5:7994/64 Network Key: ba6e886c7af50598df1115fa07658a83 Network Name: OpenThread-34e4 PAN ID: 0x34e4 PSKc: 38d6fd32c866927a4dfcc06d79ae1192 Security Policy: 0, onrcb Done
این مجموعه داده را به عنوان مجموعه داده فعال ثبت کنید:
> dataset commit active Done
رابط IPv6 را اجرا کنید:
> ifconfig up Done
شروع عملیات پروتکل Thread:
> thread start Done
آدرسهای IPv6 اختصاص داده شده به رابط Thread گره ۱ را مشاهده کنید:
> ipaddr fd55:cf34:dea5:7994:0:ff:fe00:fc00 fd55:cf34:dea5:7994:0:ff:fe00:d000 fd55:cf34:dea5:7994:460:872c:e807:c4ab fe80:0:0:0:9cd8:aab6:482f:4cdc Done >
همانطور که در مرحله شبیهسازی شبکه Thread توضیح داده شد، یک آدرس link-local ( fe80 ) و سه آدرس mesh-local ( fd ) هستند. EID آدرس mesh-local است که شامل ff:fe00 در آدرس نیست. در این خروجی نمونه، EID به fd55:cf34:dea5:7994:460:872c:e807:c4ab است.
EID خاص را از خروجی ipaddr خود شناسایی کنید، که برای ارتباط با گره استفاده خواهد شد.
۲. شروع ot-daemon
در پنجره ترمینال دوم، به دایرکتوری openthread بروید و ot-daemon برای یک گره RCP که ما آن را گره ۲ مینامیم، شروع کنید. از پرچم verbose -v استفاده کنید تا بتوانید خروجی گزارش را ببینید و تأیید کنید که در حال اجرا است و حتماً از sudo استفاده کنید:
$ cd ~/src/openthread
$ sudo ./build/posix/src/posix/ot-daemon -v \
'spinel+hdlc+forkpty://build/simulation/examples/apps/ncp/ot-rcp?forkpty-arg=2'
در صورت موفقیت، ot-daemon در حالت verbose خروجی مشابه زیر تولید میکند:
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-ctl استفاده کنید
ما هنوز Node 2 ( ot-daemon RCP) را به هیچ شبکه Thread ای راه اندازی نکرده ایم. اینجاست که ot-ctl وارد عمل می شود. ot-ctl از همان رابط خط فرمان (CLI) برنامه OpenThread CLI استفاده می کند. بنابراین، می توانید گره های ot-daemon را به همان روشی که سایر دستگاه های Thread شبیه سازی شده کنترل می کنید، کنترل کنید.
در یک پنجره ترمینال سوم، ot-ctl را اجرا کنید:
$ sudo ./build/posix/src/posix/ot-ctl >
نکته: اگر بعد از اجرای این دستور، اعلان > را مشاهده نکردید، enter فشار دهید.
شما در این پنجره ترمینال سوم ot-ctl برای مدیریت گره ۲ (گره RCP) که در پنجره ترمینال دوم با ot-daemon شروع کردهاید، استفاده خواهید کرد. state گره ۲ را بررسی کنید:
> state disabled Done
برای محدود کردن اتصال به Joiner خاص، eui64 گره ۲ را دریافت کنید:
> eui64 18b4300000000001 Done
در گره ۱ (پنجره ترمینال اول)، کمیسر را اجرا کنید و اتصال را فقط به آن eui64 محدود کنید:
> commissioner start Done > commissioner joiner add 18b4300000000001 J01NME Done
در گره ۲ (پنجره ترمینال سوم)، رابط شبکه را باز کنید و به شبکه بپیوندید:
> ifconfig up Done > joiner start J01NME Done
... چند ثانیه برای تأیید صبر کنید ...
Join success
به عنوان یک عضو، RCP (گره ۲) با موفقیت خود را نزد کمیسر (گره ۱) احراز هویت کرده و اعتبارنامههای شبکه Thread را دریافت کرده است.
حالا گره ۲ را به شبکه Thread وصل کنید:
> thread start Done
۴. اعتبارسنجی احراز هویت شبکه
state گره ۲ را بررسی کنید تا تأیید شود که اکنون به شبکه پیوسته است. ظرف دو دقیقه، گره ۲ از child به router منتقل میشود:
> state child Done ... > state router Done
۵. اعتبارسنجی اتصال
با استفاده از Ctrl+D یا دستور exit ot-ctl خارج شوید و در خط فرمان دستگاه میزبان خود، Node 1 را با استفاده از EID آن و با دستور ping6 پینگ کنید. اگر نمونه RCP ot-daemon با موفقیت به شبکه Thread متصل شده و با آن ارتباط برقرار کند، پینگ با موفقیت انجام میشود:
$ ping6 -c 4 fd55:cf34:dea5:7994:460:872c:e807:c4ab PING fd55:cf34:dea5:7994:460:872c:e807:c4ab (fd55:cf34:dea5:7994:460:872c:e807:c4ab): 56 data bytes 64 bytes from fd55:cf34:dea5:7994:460:872c:e807:c4ab: icmp_seq=0 ttl=64 time=4.568 ms 64 bytes from fd55:cf34:dea5:7994:460:872c:e807:c4ab: icmp_seq=1 ttl=64 time=6.396 ms 64 bytes from fd55:cf34:dea5:7994:460:872c:e807:c4ab: icmp_seq=2 ttl=64 time=7.594 ms 64 bytes from fd55:cf34:dea5:7994:460:872c:e807:c4ab: icmp_seq=3 ttl=64 time=5.461 ms --- fd55:cf34:dea5:7994:460:872c:e807:c4ab ping statistics --- 4 packets transmitted, 4 packets received, 0% packet loss round-trip min/avg/max/stddev = 4.568/6.005/7.594/1.122 ms
۷. تبریک میگویم!
شما با موفقیت اولین شبکه Thread خود را با استفاده از OpenThread شبیهسازی کردید. عالی!
در این Codelab شما یاد گرفتید که چگونه:
- ابزار ساخت OpenThread را تنظیم کنید
- شبیهسازی یک شبکه Thread
- احراز هویت گرههای Thread
- مدیریت شبکه Thread با OpenThread Daemon
اگر میخواهید بیشتر بدانید، این منابع را بررسی کنید: