دستورالعملهای زیر از نمونه برنامه نورپردازی Matter SDK به همراه یک برد توسعه Nordic nRF52840 استفاده میکنند.
این دستورالعمل ها بر اساس نصب مبتنی بر Docker از زنجیره ابزار nRF Connect است. اگر ترجیح میدهید از Docker استفاده نکنید، دستورالعملهای نصب nRF Connect به صورت بومی در رایانه میزبان در سایت Nordic موجود است.
user@host> mkdir otaprep
user@host> cd otaprep
user@host> git clone https://github.com/project-chip/connectedhomeip.git
user@host> cd connectedhomeip/
user@host> git fetch origin v1.0-branch
user@host> git checkout FETCH_HEAD
تصویر Docker صحیح را برای استفاده بررسی کنید. از یکی از تصاویر ایجاد شده برای ادغام پیوسته Matter SDK استفاده کنید.
user@host> cat .github/workflows/examples-nrfconnect.yaml | grep chip-build
image: connectedhomeip/chip-build-nrf-platform:0.5.99
برد Nordic را به کامپیوتر وصل کنید. شماره USB رابط سریال آن را بررسی کنید:
در MacOS:
user@host> ls /dev/tty.usbmodem*
/dev/tty.usbmodem0123456789000
در لینوکس، یا:
user@host> ls /dev/tty*AC*
/dev/ttyACM0
یا
user@host> ls /dev/tty*USB*
/dev/ttyUSB0
یک کانتینر را با استفاده از اطلاعات جمع آوری شده در دستور قبلی اجرا کنید. پرچم ها را برای سوار کردن پوشه Host Matter SDK و رابط سریال usb در ظرف قرار دهید.
user@host> docker run --name container_name -it --user $(id -u):$(id -g) --mount source=$(pwd),target=/workspace,type=bind connectedhomeip/chip-build-nrf-platform:0.5.99 /bin/bash
هر زمان که دستور docker run
را اجرا می کنید، یک ظرف جدید با تصویر مشخص شده ایجاد می کنید. هنگامی که این کار را انجام می دهید، داده های قدیمی شما که در یک نمونه کانتینر قبلی ذخیره شده بود، از بین می رود. گاهی اوقات این چیزی است که شما می خواهید اتفاق بیفتد، زیرا به شما امکان می دهد با یک نصب جدید شروع کنید. اما در این مثال به احتمال زیاد می خواهید پیکربندی کار و محیط خود را بین جلسات ذخیره کنید.
user@host> docker stop container_name
وقتی دوباره آماده اجرا شدید، کانتینر را راه اندازی کنید و یک پنجره ترمینال را باز کنید:
user@host> docker start container_name
user@host> docker exec -it container_name /bin/bash
میتوانید جلسات ترمینال دیگری را به کانتینر خود باز کنید:
user@host> docker exec -it container_name /bin/bash
یا یک جلسه روت با استفاده از:
user@host> docker exec -u 0 -it container_name /bin/bash
در ظرف، Matter SDK و متغیرهای محیطی را برای زنجیره ابزار Nordic nRF52 مقداردهی اولیه کنید. مقداردهی اولیه Matter SDK اغلب چند دقیقه طول می کشد.
$ cd /workspace
$ git submodule update --init --recursive
$ source ./scripts/bootstrap.sh
$ source ./scripts/activate.sh
$ export ZEPHYR_BASE=/opt/NordicSemiconductor/nrfconnect/zephyr
$ export GNUARMEMB_TOOLCHAIN_PATH="$PW_ARM_CIPD_INSTALL_DIR"
$ scripts/run_in_build_env.sh "python3 scripts/setup/nrfconnect/update_ncs.py --update --shallow"
$ source /opt/NordicSemiconductor/nrfconnect/zephyr/zephyr-env.sh
VID و PID دستگاه را پیکربندی کنید:
$ cd examples/lighting-app/nrfconnect
$ west build -b nrf52840dk_nrf52840 -t menuconfig
در گزینه های منوی تعاملی:
Modules --->
connectedhomeip --->
[*] Connected Home over IP protocol stack --->
Device vendor ID
(VID) وDevice product ID
(PID) را در قالب عدد صحیح پایه 10 وارد کنید.مطمئن شوید که پرچم
[*] Enable OTA requestor
انتخاب شده است.s را برای ذخیره پیکربندی فشار دهید، Enter را برای تأیید فشار دهید، سپس q را برای خروج از
menuconfig
فشار دهید.
برای ایجاد گواهینامه های CD، DAC و PAI مراحل موجود در گواهینامه های تست دستگاه Create Matter را دنبال کنید.
$ west build -b nrf52840dk_nrf52840
این کار در رایانه میزبان انجام می شود، نه در ظرف Docker.
اگر از قبل ابزارهای خط فرمان nRFConnect را ندارید، آنها را دانلود و نصب کنید .
user@host> nrfjprog --program build/zephyr/merged.hex --chiperase -f NRF52
یک اتصال ترمینال را به دستگاه خود در میزبان یا کانتینر باز کنید. از ابزار ترمینال مورد علاقه خود مانند minicom
یا screen
گنو استفاده کنید.
user@host> minicom -c on -D /dev/ttyACM0 115200
user@host> screen /dev/ttyACM0 115200
هنگامی که دستگاه خود را فلش کردید، یک بار دیگر تنظیمات ساخت را تغییر دهید تا یک تصویر OTA با نسخه نرم افزار دستگاه افزایش یافته ایجاد کنید.
menuconfig
Zephyr را اجرا کنید:
$ west build -b nrf52840dk_nrf52840 -t menuconfig
در گزینه های منوی تعاملی:
Modules -->
connectedhomeip -->
Connected Home over IP protocol stack -->
Device Software Version
را به2
تغییر دهید.Device Software Version String
بهprerelease-2
تغییر دهید.s را برای ذخیره پیکربندی فشار دهید، Enter را برای تأیید فشار دهید، سپس q را برای خروج از
menuconfig
فشار دهید.
فایل جدید Matter OTA را بسازید. خروجی در build/zephyr/zephyr.bin
قرار می گیرد.
$ /workspace/src/app/ota_image_tool.py create -v hex_VID -p hex_PID -vn version_no -vs version_string path_to_binary -da digest_algorithm path_to_ota_file
ویژگی های فایل بسته Matter OTA تولید شده خود را تأیید کنید:
/workspace/examples/lighting-app/nrfconnect# /workspace/src/app/ota_image_tool.py show firmware-ota-update-test.bin
Magic: 1beef11e
Total Size: 951784
Header Size: 72
Header TLV:
[0] Vendor Id: XXXXX (0xXXXX)
[1] Product Id: 32768 (0x8000)
[2] Version: 2 (0x2)
[3] Version String: prerelease-2
[4] Payload Size: 951696 (0xe8590)
[8] Digest Type: 1 (0x1)
[9] Digest: 75f2e8b0c8e922b8bb3841504190bcdd83533e936a284c7254d29327d605c930
از آنجایی که Matter SDK از میزبان کانتینر شما نصب شده است، تصویر OTA نیز در میزبان کانتینر شما موجود است. با دنبال کردن دستورالعملهای آپلود OTA، تصویر OTA را در Google Home Developer Console آپلود کنید.
دستگاه را راه اندازی کنید و فرآیند OTA را مشاهده کنید.
یک اتصال ترمینال به دستگاه یا در میزبان یا روی ظرف باز کنید. از ترمینال مورد علاقه خود مانند screen
minicom
یا گنو استفاده کنید:
$ minicom -c on -D /dev/ttyACM0 115200
دکمه ریست دستگاه را فشار دهید تا گزارش های مربوط به بوت را مشاهده کنید.
در خروجی دستگاه، باید VID و PID را که تنظیم کردهاید، و همچنین نشانی اینترنتی کد QR راهاندازی را ببینید:
I: nRF5 802154 radio initialized
I: 4 Sectors of 4096 bytes
(...)
I: 681 [SVR]Server Listening...
I: 684 [DL]Device Configuration:
I: 687 [DL] Serial Number: 11223344556677889900
I: 692 [DL] Vendor Id: XXXXX (0xXXXX)
I: 695 [DL] Product Id: XXXXX (0xXXXX)
I: 699 [DL] Hardware Version: 0
I: 702 [DL] Setup Pin Code (0 for UNKNOWN/ERROR): 20202021
I: 708 [DL] Setup Discriminator (0xFFFF for UNKNOWN/ERROR): 3840 (0xF00)
I: 714 [DL] Manufacturing Date: (not set)
I: 718 [DL] Device Type: 65535 (0xFFFF)
I: 723 [SVR]SetupQRCode: [MT:6FCJ142C00KA0648G00]
I: 727 [SVR]Copy/paste the below URL in a browser to see the QR Code:
I: 733 [SVR]https://project-chip.github.io/connectedhomeip/qrcode.html?data=MT%000000000000000000000
I: 742 [SVR]Manual pairing code: [30900112302]
I: 747 [DL]CHIP task running
I: 752 [DL]CHIPoBLE advertising started
I: 757 [DL]NFC Tag emulation started
مطمئن شوید که هاب شما آنلاین است و دستگاه را با Google Home app (GHA) با استفاده از کد QR از پیوند موجود در گزارش راه اندازی کنید.
پس از راه اندازی دستگاه را رها کنید تا فعالیت های خود را ثبت کند.
شما باید متن زیر را در گزارش دستگاه مشاهده کنید:
/* Hub OTA provider identification */
I: 69642 [SWU]OTA Requestor received AnnounceOTAProvider
D: 69647 [SWU] FabricIndex: 1
D: 69649 [SWU] ProviderNodeID: 0x00000000XXXXXXXX
D: 69654 [SWU] VendorID: 0x6006
D: 69657 [SWU] AnnouncementReason: 0
D: 69660 [SWU] Endpoint: 2
...
D: 69799 [SWU]Establishing session to provider node ID 0x00000000FC843D94 on fabric index 1
...
D: 262265 [SWU]QueryImageResponse:
D: 262268 [SWU] status: 0
D: 262271 [SWU] imageURI: bdx://00000000FC843D94/37f09fd6-0000-0000-0000-000000000000
D: 262278 [SWU] softwareVersion: 2
D: 262281 [SWU] softwareVersionString: 2
D: 262285 [SWU] updateToken: 36
D: 262288 [SWU] userConsentNeeded: 0
D: 262292 [SWU]Update available from version 0 to 2
...
D: 262372 [SWU]Establishing session to provider node ID 0x00000000FC843D94 on fabric index 1
...
D: 262409 [SWU]BDX::SendMessage
پس از اعمال تصویر، دستگاه راه اندازی مجدد می شود. پس از راه اندازی مجدد، زمان کامپایل تصویر باید با زمان آپلود شده در Developer Console مطابقت داشته باشد.
نسخه نرم افزار دستگاه را می توان با استفاده از برنامه Google Home (GHA) بررسی کرد. پس از راه اندازی دستگاه، مراحل زیر را دنبال کنید:
- کاشی دستگاه را روی صفحه اصلی GHA فشار دهید
- روی نماد در بالا سمت راست ضربه بزنید
- روی اطلاعات فنی ضربه بزنید
- قسمت Software version را بررسی کنید