Hướng dẫn sau đây sử dụng ví dụ về ứng dụng chiếu sáng từ SDK Matter cùng với bảng phát triển Nordic nRF52840.
Thiết lập môi trường
Các hướng dẫn này dựa trên quá trình cài đặt dựa trên Docker của chuỗi công cụ nRF Connect. Nếu bạn không muốn sử dụng Docker, hướng dẫn cài đặt nRF Connect gốc trên máy chủ sẽ có trên trang web của Nordic.
Khám phá SDK Matter
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
Kiểm tra hình ảnh Docker chính xác cần sử dụng. Sử dụng một trong các hình ảnh được tạo cho quá trình tích hợp liên tục SDK Matter.
user@host> cat .github/workflows/examples-nrfconnect.yaml | grep chip-build
image: connectedhomeip/chip-build-nrf-platform:0.5.99
Kết nối bảng Nordic với máy tính. Kiểm tra quá trình liệt kê USB của giao diện nối tiếp:
Trên macOS:
user@host> ls /dev/tty.usbmodem*
/dev/tty.usbmodem0123456789000
Trên Linux, hãy làm theo một trong hai cách sau:
user@host> ls /dev/tty*AC*
/dev/ttyACM0
hoặc
user@host> ls /dev/tty*USB*
/dev/ttyUSB0
Chạy một vùng chứa bằng thông tin thu thập được trên lệnh trước. Truyền cờ để gắn thư mục SDK Matter của máy chủ và giao diện nối tiếp USB vào vùng chứa.
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
Dừng và khởi động vùng chứa Matter Docker
Bất cứ khi nào chạy lệnh docker run
, bạn sẽ tạo một vùng chứa mới với hình ảnh đã chỉ định. Khi bạn làm việc này, dữ liệu cũ (đã lưu trên một thực thể vùng chứa trước đó) sẽ bị mất. Đôi khi, đây là điều bạn muốn xảy ra vì cho phép bạn bắt đầu bằng một quá trình cài đặt mới. Tuy nhiên, trong ví dụ này, bạn rất có thể muốn lưu công việc và cấu hình môi trường giữa các phiên.
user@host> docker stop container_name
Khi bạn đã sẵn sàng chạy lại, hãy khởi động vùng chứa và mở cửa sổ dòng lệnh:
user@host> docker start container_name
user@host> docker exec -it container_name /bin/bash
Bạn có thể mở thêm các phiên dòng lệnh vào vùng chứa bằng:
user@host> docker exec -it container_name /bin/bash
Hoặc bắt đầu một phiên gốc bằng:
user@host> docker exec -u 0 -it container_name /bin/bash
Khởi chạy SDK
Trong vùng chứa, hãy khởi chạy SDK Matter và các biến môi trường cho chuỗi công cụ Nordic nRF52. Quá trình khởi chạy SDK Matter thường mất vài phút.
$ 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
Tạo bản dựng và cài đặt ROM
Định cấu hình VID và PID cho thiết bị:
$ cd examples/lighting-app/nrfconnect
$ west build -b nrf52840dk_nrf52840 -t menuconfig
Trong các tuỳ chọn trình đơn tương tác:
Modules --->
connectedhomeip --->
[*] Connected Home over IP protocol stack --->
Nhập
Device vendor ID
(VID) vàDevice product ID
(PID) ở định dạng số nguyên cơ số 10.Đảm bảo bạn đã chọn cờ
[*] Enable OTA requestor
.Nhấn s để lưu cấu hình, nhấn Enter để xác nhận, sau đó nhấn q để thoát khỏi
menuconfig
.
Thiết lập chứng chỉ thử nghiệm
Làm theo các bước trong bài viết Tạo chứng chỉ kiểm thử thiết bị Matter để tạo chứng chỉ CD, DAC và PAI.
Tạo thiết bị
$ west build -b nrf52840dk_nrf52840
Cài đặt ROM cho thiết bị
Thao tác này được thực hiện trên máy tính lưu trữ, không phải trong vùng chứa Docker.
Nếu bạn chưa có các công cụ dòng lệnh nRFConnect, hãy tải xuống và cài đặt các công cụ đó.
user@host> nrfjprog --program build/zephyr/merged.hex --chiperase -f NRF52
Mở kết nối dòng lệnh đến thiết bị của bạn trên máy chủ hoặc trên vùng chứa. Sử dụng công cụ dòng lệnh mà bạn yêu thích, chẳng hạn như minicom
hoặc GNU screen
.
user@host> minicom -c on -D /dev/ttyACM0 115200
user@host> screen /dev/ttyACM0 115200
Tạo và tải hình ảnh OTA lên
Sau khi bạn cài đặt ROM cho thiết bị, hãy thay đổi chế độ cài đặt bản dựng một lần nữa để tạo hình ảnh OTA có phiên bản phần mềm thiết bị tăng lên.
Chạy Zephyr menuconfig
:
$ west build -b nrf52840dk_nrf52840 -t menuconfig
Trong các tuỳ chọn trình đơn tương tác:
Modules -->
connectedhomeip -->
Connected Home over IP protocol stack -->
Thay đổi
Device Software Version
thành2
.Thay đổi
Device Software Version String
thànhprerelease-2
.Nhấn s để lưu cấu hình, nhấn Enter để xác nhận, sau đó nhấn q để thoát khỏi
menuconfig
.
Tạo tệp gói OTA Matter mới. Kết quả được đặt trong 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
Xác nhận các thuộc tính của tệp gói OTA Matter đã tạo:
/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
Vì SDK Matter được gắn từ máy chủ vùng chứa, nên Hình ảnh OTA cũng có trên máy chủ vùng chứa. Tải hình ảnh OTA lên Google Home Developer Console bằng cách làm theo hướng dẫn tải OTA lên.
Uỷ quyền cho thiết bị và quan sát quy trình OTA.
Mở kết nối dòng lệnh đến thiết bị trên máy chủ hoặc trên vùng chứa. Sử dụng thiết bị đầu cuối mà bạn yêu thích, chẳng hạn như minicom
hoặc GNU screen
:
$ minicom -c on -D /dev/ttyACM0 115200
Nhấn nút đặt lại của thiết bị để xem nhật ký khởi động.
Trong kết quả đầu ra của thiết bị, bạn sẽ thấy VID và PID mà bạn đã đặt, cũng như URL cho mã QR uỷ quyền:
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
Đảm bảo Trung tâm của bạn đang trực tuyến và uỷ quyền thiết bị bằng Google Home app (GHA) bằng cách sử dụng mã QR trong đường liên kết có trong nhật ký.
Để thiết bị ghi lại các hoạt động của nó sau khi đưa vào hoạt động.
Bạn sẽ thấy văn bản sau trong nhật ký thiết bị:
/* 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
Sau khi áp dụng hình ảnh, thiết bị sẽ khởi động lại. Sau khi khởi động lại, thời gian biên dịch của hình ảnh phải khớp với thời gian biên dịch của hình ảnh được tải lên Developer Console.
Xác thực bản cập nhật phần mềm qua mạng không dây
Bạn có thể kiểm tra phiên bản phần mềm của thiết bị bằng ứng dụng Google Home (GHA). Sau khi thiết bị được uỷ quyền, hãy làm theo các quy trình sau:
- Nhấn và giữ ô thiết bị trên màn hình chính GHA
- Nhấn vào biểu tượng ở trên cùng bên phải
- Nhấn vào Thông tin kỹ thuật
- Kiểm tra trường Phiên bản phần mềm