Các 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 M5Stack ESP32.
Thiết lập môi trường
Trước tiên, hãy sao chép SDK Matter.
Trong ví dụ này, chúng tôi kiểm tra mức cam kết tối thiểu được hỗ trợ cho bản phát hành Matter 5 của Google Home:
$ mkdir otaprep
$ cd otaprep
git clone https://github.com/project-chip/connectedhomeip.git
cd connectedhomeip
git fetch origin v1.0-branch
git checkout FETCH_HEAD
git submodule update --init --recursive
source ./scripts/activate.sh
Tiếp theo, chúng tôi kiểm tra phiên bản dùng trong Luồng công việc GitHub ESP32 để xác định hình ảnh Docker nào phù hợp nhất với bản dựng của chúng tôi:
$ cat .github/workflows/examples-esp32.yaml | grep chip-build | head -n 1
image: connectedhomeip/chip-build-esp32:0.5.99
Chúng tôi chạy một vùng chứa từ hình ảnh Docker, truyền cờ để gắn SDK Matter vào vùng chứa và cấp quyền truy cập vào thiết bị ESP32.
$ docker run --name container_name -it --user $(id -u):$(id -g) --mount source=$(pwd),target=/workspace,type=bind --device=/dev/ttyUSB0 connectedhomeip/chip-build-esp32:0.5.99 /bin/bash
Dừng và khởi động vùng chứa Matter Docker
Mỗi khi chạy một lệnh docker run
, bạn sẽ tạo một vùng chứa mới với hình ảnh được chỉ định. Khi bạn làm điều này, dữ liệu cũ của bạn, được lưu trên
phiên bản vùng chứa trước đó, sẽ bị mất. Đôi khi, đây là điều bạn muốn xảy ra bởi vì nó cho phép bạn bắt đầu với cài đặt mới. Nhưng trong ví dụ này, có thể bạn sẽ muốn lưu cấu hình công việc và môi trường của mình 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ở các phiên hoạt động đầu cuối bổ sung cho vùng chứa của mình bằng:
user@host> docker exec -it container_name /bin/bash
Hoặc bắt đầu phiên gốc bằng cách sử dụng:
user@host> docker exec -u 0 -it container_name /bin/bash
Khởi chạy SDK
Trong vùng chứa, chúng ta khởi chạy Matter SDK và ESP IDF:
cd /workspace
git submodule update --init --recursive
source ./scripts/activate.sh
source /opt/espressif/esp-idf/export.sh
Tạo và flash
Nhiệm vụ tiếp theo là tạo hình ảnh và cài đặt bộ phát triển để nhận bản cập nhật chương trình cơ sở Matter OTA.
Để làm điều này, bạn phải tạo một hình ảnh.
Trước tiên, hãy định cấu hình bản dựng bằng cách sử dụng tiện ích menuconfig
từ ESP IDF.
cd examples/lighting-app/esp32
idf.py menuconfig
Trong trình đơn tương tác, hãy định cấu hình các chế độ cài đặt sau:
Component config --->
CHIP Device Layer --->
Device Identification Options --->
Đặt
Vendor ID
thành VID do Connectivity Standards Alliance (Alliance) chỉ định.Đặt
Product ID
thành PID mà bạn đặt khi tích hợp Matter trong Google Home Developer Console.
Bật cờ Yêu cầu OTA:
Component config -->
CHIP Core -->
System options --->
Bật cờ Người yêu cầu OTA
[*] Enable OTA Requestor
Nhấn ESC hai lần để quay lại menu cấp cao nhất.
Bật cờ tạo hình ảnh Matter OTA:
Component config -->
CHIP Device Layer --->
Matter OTA Image --->
[*] Generate OTA IMAGE
Đặt số phiên bản:
Application manager --->
Chọn
[*] Get the project version from Kconfig
Đặt
Project version (NEW)
thành1.0
Nhấn s để lưu cấu hình, nhấn Enter 2 lần, sau đó nhấn q để thoát
menuconfig
.
Thiết lập chứng chỉ kiểm tra
Làm theo các bước trong bài viết Tạo chứng chỉ kiểm tra thiết bị theo chuẩn Matter để tạo chứng chỉ CD, DAC và PAI.
Xây dựng thiết bị
Bây giờ, hãy chạy bản dựng và cài đặt ROM cho thiết bị:
idf.py build
idf.py -p /dev/ttyUSB0 erase_flash
idf.py -p /dev/ttyUSB0 flash
Tạo và tải hình ảnh OTA lên
Giờ hãy thay đổi lại cài đặt bản dựng để tạo hình ảnh OTA. Sử dụng cùng một hình ảnh, nhưng với số phiên bản tăng dần.
Chạy menuconfig
.
idf.py menuconfig
Trong trình đơn tương tác, hãy cập nhật các nội dung sau:
Application manager --->
- Chọn
[*] Get the project version from Kconfig
- Đặt
Project version (NEW)
thành2.0
- Nhấn s để lưu cấu hình, nhấn Enter 2 lần, sau đó nhấn q để thoát
menuconfig
.
Tạo và truy xuất hình ảnh. Ví dụ bên dưới minh hoạ cả vị trí hình ảnh cho OTA và đầu ra khi phân tích cú pháp với ota_image_tool.py
.
cd build
/workspace/src/app/ota_image_tool.py show ./chip-lighting-app-ota.bin
Magic: 1beef11e
Total Size: 1243360
Header Size: 64
Header TLV:
[0] Vendor Id: XXXXX (0x000)
[1] Product Id: XXXXX (0x000)
[2] Version: 2 (0x2)
[3] Version String: v2.0
[4] Payload Size: 1243280 (0x12f890)
[8] Digest Type: 1 (0x1)
[9] Digest: e367f4d71e2ccd554b9a399c864abbf2c039382ef1def1b986fb2f59a99923a8
Vì SDK Matter được gắn từ máy chủ vùng chứa, nên hình ảnh OTA sẽ có trên máy chủ vùng chứa của bạn.
Tải hình ảnh OTA lên Developer Console bằng cách làm theo hướng dẫn tải lên OTA.
Ủy quyền truy cập vào Google Home và quan sát OTA
Đảm bảo thiết bị của bạn được kết nối với máy chủ Linux bằng USB. Ví dụ sau đây cho thấy việc sử dụng GNU screen
để đọc nhật ký thiết bị:
screen -L /dev/ttyUSB0 115200
Thao tác này sẽ hiển thị đầu ra từ thiết bị đến thiết bị đầu cuối và ghi cùng một đầu ra vào tệp nhật ký màn hình mặc định có tên là screenlog.0
.
Bạn có thể mở tệp screenlog.0
trong một trình chỉnh sửa văn bản khác hoặc hiển thị tệp đó trong một shell khác có cat
, tail
, more
hoặc grep
.
Nhấn nút đặt lại màu đỏ ở cạnh bên của thiết bị để xem nhật ký khi khởi động.
Trong đầu ra thiết bị, bạn sẽ thấy VID và PID mà bạn đã đặt trước đó, cũng như URL tới hình ảnh mã QR mà bạn sẽ dùng để đưa vào thiết bị.
[0;32mI (2388) chip[DIS]: Advertise commission parameter vendorID=XXXXX productID=XXXX discriminator=3840/15 cm=1[0m
[0;32mI (1928) chip[SVR]: SetupQRCode: [MT:E59-000000000000000][0m
https://project-chip.github.io/connectedhomeip/qrcode.html?data=MT%3AE59-000000000000000
Đảm bảo thiết bị trung tâm của bạn có kết nối mạng trong nhà.
Sử dụng mã QR trên đường liên kết xuất hiện trong tệp nhật ký để đưa thiết bị vào Google Home app (GHA).
Để thiết bị chạy liên tục trong vài phút sau khi vận hành.
Bạn nên quan sát kết quả nhật ký liên quan đến Yêu cầu OTA, tải hình ảnh OTA xuống và OTAImageProcessor
.
Sau khi cài đặt hình ảnh, hãy quan sát thấy thời gian biên dịch của hình ảnh khớp với thời gian biên dịch của hình ảnh được tải lên bảng điều khiển và muộn hơn thời gian biên dịch được báo cáo ở lần khởi động đầu tiên. Việc thực thi grep
với mẫu sau trong chế độ biểu thức chính quy trên screenlog.0
có thể minh hoạ quy trình OTA:
$ grep -E "(Compile time|OTA)" screenlog.0
I (76) boot: 1 otadata OTA data 01 00 0000f000 00002000
I (91) boot: 3 ota_0 OTA app 00 10 00020000 00177000
I (99) boot: 4 ota_1 OTA app 00 11 001a0000 00177000
I (645) cpu_start: Compile time: Oct 15 2022 06:21:59
I (135558) chip[SWU]: OTA Requestor received AnnounceOTAProvider
I (540658) chip[SWU]: OTA image downloaded to offset 0x1a0000
I (541348) OTAImageProcessor: Applying, Boot partition set offset:0x1a0000
I (76) boot: 1 otadata OTA data 01 00 0000f000 00002000
I (91) boot: 3 ota_0 OTA app 00 10 00020000 00177000
I (99) boot: 4 ota_1 OTA app 00 11 001a0000 00177000
I (645) cpu_start: Compile time: Oct 15 2022 07:35:31
I (76) boot: 1 otadata OTA data 01 00 0000f000 00002000
I (91) boot: 3 ota_0 OTA app 00 10 00020000 00177000
I (99) boot: 4 ota_1 OTA app 00 11 001a0000 00177000
I (645) cpu_start: Compile time: Oct 15 2022 07:35:31
Sau khi thực thi ban đầu, bạn có thể lặp lại các bước trong phần Tạo và tải hình ảnh OTA lên mà không cần tải hình ảnh mới lên. Lần này, hãy đặt lại các phiên bản thành 1
.
Chạy menuconfig
và trong các tuỳ chọn trình đơn tương tác:
Component config -->
CHIP Device Layer --->
Device Identification Options
Đặt
Version String
thànhv1.0
.Đặt
Device Software Version Number
thành1
.Nhấn s để lưu cấu hình rồi nhấn q để thoát
menuconfig
.
Xóa thiết bị này khỏi nhà của bạn trong GHA.
Tạo hình ảnh nếu hình ảnh chưa được tạo:
idf.py build
Flash:
idf.py -p /dev/ttyUSB0 erase_flash
idf.py -p /dev/ttyUSB0 flash
Lặp lại các bước trong bài viết Phí hoa hồng cho Google Home và quan sát OTA nếu cần.
Xác thực bản cập nhật phần mềm OTA
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 đưa thiết bị vào hoạt động, hãy làm theo các bước sau:
- Nhấn và giữ ô thiết bị trên màn hình chính của 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