1- المقدمة
ما هو Thread وOpenThread وOTNS وS Silk؟
إنّ سلسلة المحادثات هي بروتوكول شبكة لاسلكية منخفضة الطاقة ومستندة إلى عنوان IP، وتوفّر اتصالات آمنة من جهاز لجهاز إلى جهاز آخر. يمكن أن تتكيّف شبكات المحادثات مع التغييرات في المخططات الهيكلية لتجنُّب نقطة واحدة من التعذُّر.
إنّ OpenThread التي أصدرتها Google عبارة عن تنفيذ مفتوح المصدر لسلسلة المحادثات. على الرغم من صغر حجم الرمز وبصمة الذاكرة، يتوافق OpenThread مع جميع الميزات المحدّدة في مواصفات سلسلة المحادثات.
يمكن استخدام محاكي شبكة OpenThread (OTNS) لمحاكاة شبكات Thread من خلال تشغيل عُقد OpenThread الافتراضية على منصات posix. توفّر OTNS واجهة ويب سهلة الاستخدام (OTNS-Web) لعرض شبكات Thread المضمَّنة وتشغيلها.
Silk هو منصّة اختبار مبرمَجة بالكامل للتحقق من صحة وظيفة OpenThread والميزات وأداء النظام باستخدام أجهزة حقيقية.
ما ستتعرَّف عليه
- إطار عمل التحقّق من وظائف OpenThread: الحرير
- إنشاء سلسلة محادثات للأجهزة الفعلية باستخدام ميزة OTNS مفعَّلة
- استخدام واجهة OTNS-Web لمراقبة حالة شبكة Thread التي تم إنشاؤها من خلال تشغيل حالات اختبار الحرير
يركّز هذا الدرس التطبيقي حول الترميز على استخدام الحرير مع تقنية OTNS. ولا يتم تغطية الميزات الأخرى للحرير وOTNS.
المتطلبات
الأجهزة:
- 6 لوحات شبه عُرضية لـ Nordic nRF52840
- 6 كابلات USB إلى USB صغيرة لتوصيل الألواح
- موزّع USB
البرامج:
- نظام التشغيل Linux x86_64
- معلومة
- الإصدار 1.11 أو إصدار أحدث.
- متصفح ويب تستخدم شبكة OTNS-Web متصفح ويب لعرض عمليات المحاكاة.
المتطلبات الأساسية:
2. المتطلبات الأساسية
إكمال الدروس التطبيقية الأساسية حول الترميز
- الاشتراك في سلسلة محادثات. ستحتاج إلى معرفة المفاهيم الأساسية لسلسلة المحادثات لفهم ما يتم تدريسه في هذا الدرس التطبيقي حول الترميز.
- أنشِئ شبكة Thread باستخدام لوحات nRF52840 وOpenThread. يفترض الدرس التطبيقي حول الترميز هذا أنّك أنشأت شبكة Thread بنجاح.
- محاكاة شبكات سلاسل المحادثات باستخدام OTNS يفترض الدرس التطبيقي حول الترميز هذا أنّك قد شغّلت أداة OTNS بنجاح.
جارٍ التحقّق من المتطلّبات الأساسية للحزمة.
يجب التأكّد من استيفاء جميع المتطلبات الأساسية.
- شغِّل
which otns
للتحقق مما إذا كان الملفotns
القابل للبحث قابلاً للبحث في$PATH
. - يمكنك تشغيل
which wpantund
للتأكد من توفّرwpantund
. - تأكّد من توفّر كل من سلسلة أدوات ARM GNU وJ-Link و
nrfjprog
.
ملاحظة: يُرجى الرجوع إلى المستندات المرتبطة لإعداد الإرشادات. الشرط الأول هو من محاكاة شبكات سلاسل المحادثات باستخدام OTNS وأخرى من إنشاء شبكة سلسلة محادثات باستخدام لوحات nRF52840 وOpenThread.
3. إعداد الحرير
استنساخ الحرير وإعداد البيئة، نفِّذ الأوامر التالية ضمن دليلك المصدر:
$ 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
كجزء من الحرير، والتي يمكن استخدامها لمعرفة الرقم التسلسلي للواجهة ورقم واجهة USB. DutSerial هو رقم SN المطبوع على الشريحة أو يعرضها usbinfo
لمنتجات J-Link.
يحدّد الحقلان LayoutCenter
وLayoutRadius
في قسم [DEFAULT]
شكل التنسيق عند عرض الأجهزة على واجهة مستخدم الويب. قد يكون ضبطها على القيم المعروضة هنا نقطة انطلاق جيدة.
بعد ذلك، تحدِّد هذه السياسة قسمًا لكل جهاز اختبار وتزوِّد بمعلومات الأجهزة ذات الصلة.
4- تجميع سلسلة المحادثات المفتوحة مع تفعيل OOTNS
صورة المبنى والوميض
بشكل تلقائي، لا تنبعث أجهزة OpenThread رسائل ذات صلة باتصال OTNS. للسماح لألواح مطوّري البرامج بإرسال رسائل حالة لتسجيل الواجهات الضرورية لتمثيل OTNS، شغِّل الأمر التالي ضمن دليل مصدر OpenThread لإنشاء صورة FTD وتحويلها إلى تنسيق ست عشري.
$ git clone https://github.com/openthread/ot-nrf528xx.git --recursive $ cd ot-nrf528xx $ ./script/bootstrap $ ./script/build nrf52840 USB_trans -DOT_COMMISSIONER=ON -DOT_JOINER=ON -DOT_OTNS=ON $ cd ./build/bin $ arm-none-eabi-objcopy -O ihex ot-ncp-ftd ot-ncp-ftd.hex
لاستخدام ألواح الرسم بسرعة، اتّبِع التعليمات الواردة في الخطوة 4 من Create a Thread Network Codelab لاستخدام nrfjprog
. بعد ذلك، عليك توصيل جميع اللوحات عبر منفذ USB nRF بجهاز المضيف. ويمكن فصل مجموعة أجهزة USB نفسها مع كابلات USB الصغيرة من منافذ J-Link وتوصيلها بمنافذ USB التابعة لمنصة nRF على لوحات nRF52840. وبالتالي، يمكن تنفيذ اختبار الكابلات الستة فقط. لتجنّب المتاعب، استخدِم 12 كابل ووصِّل بكلا المنفذين.
5. تشغيل خادم OTNS باستخدام الوضع الحقيقي
يؤدي تشغيل OTNS مع معلَمات تلقائية إلى السماح للمستخدم بمحاكاة شبكة Thread. ولاستخدامها كأداة للعرض المرئي لشبكة فعلية، عليك تشغيلها باستخدام:
otns -raw -real -ot-cli otns-silk-proxy
تخبر هذه الوسيطات شبكة OTNS أن تتوقع رسائل gRPC وUDP التي تصف كيفية إنشاء تمثيل بصري لشبكة Thread، بدلاً من تشغيل عمليات ot-cli
متعدّدة لمحاكاة الشبكة. من المفترض أن يفتح المتصفّح صفحة التمثيل البصري تلقائيًا باستخدام لوحة فارغة.
6- تشغيل حافظات الاختبار الحريري مع دعم OTNS
الحرير هو منصّة اختبار مبرمَجة بالكامل للتحقّق من دقّة وظائف سلسلة المحادثات وميزاتها وأدائها باستخدام أجهزة حقيقية. تتناول التعليمات الواردة في المشروع ReadME كيفية استخدامها.
يتيح لك ملف silk_run_test.py
المتوفّر في silk/unit_tests
إمكانية توليد البداية. يوفّر الحرير دعم OTNS عند تشغيل حالة اختبار. نظرًا لأن خدمة "الوضع الفعلي" لخدمة OTNS قيد التشغيل محليًا، نحتاج إلى تعديل ملف silk_run_test.py
بالمواقع الجغرافية المطلوبة لملف سجلّ الإخراج، والنصوص البرمجية لاختبارات الاختبار، وملف hwconfig.ini
. تطلب الوسيطة -s localhost
من الحرير إرسال رسائل OTNS إلى localhost
.
على سبيل المثال، يمكن إجراء الاختبار باسم ot_test_form_network.py
باستخدام التعديلات التالية على الملف silk_run_test.py
. /opt/openthread_test/
هو المسار التلقائي الذي يستخدمه Silk لإخراج السجلّ وملف الإعداد، ولكن يمكنك استخدام أي مسار.
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)
وسيظهر التمثيل البصري للمخطط للشبكة التي تم إنشاؤها على واجهة مستخدم الويب لـ OTNS.
في أعلى يمين الصفحة، تظهر إحصاءات حول العرض المرئي وإصدار النسخة التجريبية وعنوان الاختبار. يتوفر في أسفل يمين الشاشة عناصر تحكّم في نافذة السجل التي تظهر على اليسار. في البداية، تتم إضافة العُقد ولكن بدون إنشاء أي شبكة. ومع تقدُّم الاختبار، يتم تشكيل أنماط وأدوار كل عقدة وروابط.
7- تهانينا
تهانينا، لقد نجحت في إجراء اختبار الحرير على أجهزة Thread الفعلية وتم تمثيلها باستخدام OTNS.
لقد نفّذت اختبار الحرير باستخدام لوحات التطوير التي صدرت من خلال البرامج الثابتة التي تتوافق مع OTNS. يبلّغ مجلس الإدارة عن حالته إلى خادم الحرير الذي يراقب كل هذه البيانات ويجمّعها، ويرسلها إلى خدمة OTNS مع تقديم معلومات اختبار أخرى. تعرض OTNS التي تعمل في الوضع الفعلي شبكة Thread على واجهة الويب.
ما هي الخطوات التالية؟
جرِّب تشغيل حالات اختبار OpenThread الأخرى المضمّنة في حزمة الحرير.
مواصلة القراءة
يمكنك الاطّلاع على openthread.io وSilk للحصول على مجموعة متنوعة من مراجع OpenThread.