คำแนะนำต่อไปนี้ใช้ แอปหลอดไฟ ตัวอย่างจาก Matter SDK พร้อมด้วย Nordic nRF52840 บอร์ดการพัฒนา
การตั้งค่าสภาพแวดล้อม
คำแนะนำเหล่านี้อิงจากการติดตั้งจาก Docker การเชื่อมต่อ nRF Toolchain หากคุณไม่ต้องการใช้ Docker โปรดดูคำแนะนำในการติดตั้ง nRF การเชื่อมต่อตั้งแต่ต้นบนคอมพิวเตอร์โฮสต์ ในเว็บไซต์นอร์ดิก
ดู Matter SDK
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 ที่ถูกต้องที่จะใช้ ใช้รูปภาพที่สร้างขึ้นสำหรับ การผสานรวมอย่างต่อเนื่องของ SDK Matter
user@host> cat .github/workflows/examples-nrfconnect.yaml | grep chip-build
image: connectedhomeip/chip-build-nrf-platform:0.5.99
เชื่อมต่อกระดานนอร์ดิกเข้ากับคอมพิวเตอร์ ตรวจสอบการแจงนับ USB ของ อินเทอร์เฟซแบบอนุกรม:
ใน MacOS ให้ทำดังนี้
user@host> ls /dev/tty.usbmodem*
/dev/tty.usbmodem0123456789000
ใน Linux ให้ทำอย่างใดอย่างหนึ่งต่อไปนี้
user@host> ls /dev/tty*AC*
/dev/ttyACM0
หรือ
user@host> ls /dev/tty*USB*
/dev/ttyUSB0
เรียกใช้คอนเทนเนอร์โดยใช้ข้อมูลที่รวบรวมในคำสั่งก่อนหน้า บัตร ธงเพื่อต่อเชื่อมโฟลเดอร์ SDK Matter ของโฮสต์และ 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 ของ Matter
เมื่อใดก็ตามที่คุณเรียกใช้คำสั่ง 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
เริ่มต้น SDK
ในคอนเทนเนอร์ ให้เริ่มต้น Matter SDK และ ตัวแปรสภาพแวดล้อมสําหรับเครื่องมือเชน Nordic nRF52 การเริ่มต้น SDK Matter มักจะใช้เวลาหลายนาที
$ 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
สร้างและใช้ Flash
กำหนดค่า 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) ใน base-10 รูปแบบจำนวนเต็มตรวจสอบว่าได้เลือกแฟล็ก
[*] Enable OTA requestor
แล้วกด s เพื่อบันทึกการกําหนดค่า แล้วกด Enter เพื่อยืนยัน q เพื่อออกจาก
menuconfig
ตั้งค่าใบรับรองทดสอบ
ทำตามขั้นตอนในหัวข้อสร้างใบรับรองการทดสอบอุปกรณ์ Matter เพื่อสร้างใบรับรอง CD, DAC และ PAI
สร้างอุปกรณ์ของคุณ
$ west build -b nrf52840dk_nrf52840
แฟลชอุปกรณ์
ขั้นตอนนี้ทำในคอมพิวเตอร์โฮสต์ ไม่ใช่ในคอนเทนเนอร์ Docker
หากคุณยังไม่มีเครื่องมือบรรทัดคำสั่ง nRFConnect โปรดดาวน์โหลดและ ติดตั้งแอปเหล่านั้น
user@host> nrfjprog --program build/zephyr/merged.hex --chiperase -f NRF52
เปิดการเชื่อมต่อเทอร์มินัลไปยังอุปกรณ์ของคุณ ไม่ว่าจะบนโฮสต์หรือบน
คอนเทนเนอร์ ใช้เครื่องมือเทอร์มินัลที่คุณชื่นชอบ เช่น minicom
หรือ GNU screen
user@host> minicom -c on -D /dev/ttyACM0 115200
user@host> screen /dev/ttyACM0 115200
สร้างและอัปโหลดรูปภาพ OTA
เมื่อคุณแฟลชอุปกรณ์แล้ว ให้เปลี่ยนการตั้งค่าบิลด์อีกครั้งเพื่อสร้าง รูปภาพ OTA ที่มีซอฟต์แวร์เวอร์ชันเพิ่มขึ้น
เปิด Zephyr menuconfig
:
$ 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
ยืนยันพร็อพเพอร์ตี้ของแพ็กเกจ OTA ของ Matter ที่สร้างขึ้น ไฟล์:
/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 ไปยัง Google Home Developer Consoleโดยทำตามการอัปโหลดของ OTA วิธีการ
จัดเตรียมอุปกรณ์และสังเกตกระบวนการ OTA
เปิดการเชื่อมต่อเทอร์มินัลไปยังอุปกรณ์ทั้งบนโฮสต์หรือบน
คอนเทนเนอร์ ใช้เทอร์มินัลที่คุณชื่นชอบ เช่น minicom
หรือ GNU screen
:
$ minicom -c on -D /dev/ttyACM0 115200
กดปุ่มรีเซ็ตของอุปกรณ์เพื่อดูบันทึกจากการเปิดเครื่อง
ในเอาต์พุตของอุปกรณ์ คุณควรเห็น VID และ PID ที่ตั้งค่าไว้ รวมถึง URL สำหรับคิวอาร์โค้ดที่ติดตั้งใช้งาน
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) โดยใช้คิวอาร์โค้ดจากลิงก์ในบันทึก
ปล่อยให้อุปกรณ์บันทึกกิจกรรมไว้หลังจากเริ่มทำงาน
คุณควรเห็นข้อความต่อไปนี้ในบันทึกของอุปกรณ์
/* 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
ตรวจสอบการอัปเดตซอฟต์แวร์ OTA
คุณตรวจสอบเวอร์ชันของซอฟต์แวร์ของอุปกรณ์ได้โดยใช้แอป Google Home (GHA) เมื่อมีการมอบหมายอุปกรณ์แล้ว ให้ทำตามขั้นตอนต่อไปนี้
- กดการ์ดของอุปกรณ์ในหน้าจอหลักของ GHA ค้างไว้
- แตะไอคอน ที่ด้านขวาบน
- แตะข้อมูลทางเทคนิค
- ตรวจสอบช่องเวอร์ชันของซอฟต์แวร์