다음 안내에서는 조명 앱 M5Stack ESP32 및 Matter SDK의 예 개발 보드입니다.
빌드 환경 설정
먼저 Matter SDK를 클론합니다.
이 예에서는 Google Home의 최소 지원 약정을 확인하여 Matter 출시 5:
$ 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
그런 다음 ESP32 GitHub 워크플로에서 사용된 버전을 확인하여 우리 빌드에 가장 적합한 Docker 이미지를 선택합니다.
$ cat .github/workflows/examples-esp32.yaml | grep chip-build | head -n 1
image: connectedhomeip/chip-build-esp32:0.5.99
Docker 이미지에서 컨테이너를 실행하고 플래그를 전달하여 이미지를 Matter SDK를 설치하고 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
Matter Docker 컨테이너 중지 및 시작
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 및 ESP IDF를 초기화합니다.
cd /workspace
git submodule update --init --recursive
source ./scripts/activate.sh
source /opt/espressif/esp-idf/export.sh
빌드 및 플래시
다음 작업은 이미지를 빌드하고 개발 키트를 플래시하여 Matter OTA 펌웨어 업데이트
이렇게 하려면 이미지를 만들어야 합니다.
먼저 ESP IDF의 menuconfig
유틸리티를 사용하여 빌드를 구성합니다.
cd examples/lighting-app/esp32
idf.py menuconfig
대화형 메뉴에서 다음 설정을 구성합니다.
Component config --->
CHIP Device Layer --->
Device Identification Options --->
Vendor ID
를 Connectivity Standards Alliance (Alliance)에서 할당한 VID로 설정합니다.Product ID
를 Matter에서 설정한 PID로 설정합니다. Google Home Developer Console에 통합되어 있습니다.
OTA 요청자 플래그를 사용 설정합니다.
Component config -->
CHIP Core -->
System options --->
OTA 요청자 플래그
[*] Enable OTA Requestor
사용 설정ESC를 두 번 눌러 최상위 메뉴로 돌아갑니다.
Matter OTA 이미지 생성 플래그를 사용 설정합니다.
Component config -->
CHIP Device Layer --->
Matter OTA Image --->
[*] Generate OTA IMAGE
버전 번호를 설정합니다.
Application manager --->
[*] Get the project version from Kconfig
선택Project version (NEW)
을1.0
로 설정합니다.s를 눌러 구성을 저장하고 Enter 키를 두 번 누른 후 q를 눌러 확인합니다.
menuconfig
종료
테스트 인증서 설정
다음의 단계를 따르세요. 만들려는 Matter 기기 테스트 인증서를 만듭니다. CD, DAC, PAI 인증서
나만의 기기 만들기
이제 빌드를 실행하고 기기를 플래시합니다.
idf.py build
idf.py -p /dev/ttyUSB0 erase_flash
idf.py -p /dev/ttyUSB0 flash
OTA 이미지 생성 및 업로드
이제 빌드 설정을 다시 변경하여 OTA 이미지를 만듭니다. 사용 버전 번호가 올라갑니다
menuconfig
을 실행합니다.
idf.py menuconfig
대화형 메뉴에서 다음을 업데이트합니다.
Application manager --->
[*] Get the project version from Kconfig
선택Project version (NEW)
을2.0
로 설정합니다.- s를 눌러 구성을 저장하고 Enter 키를 두 번 누른 후 키를 누릅니다.
q를 사용하여
menuconfig
를 종료합니다.
이미지를 빌드하고 가져옵니다. 아래 예는 다음 두 가지 위치를 보여줍니다.
ota_image_tool.py
로 파싱할 때 OTA 및 출력의 이미지.
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
Matter SDK는 컨테이너 호스트에서 마운트되므로 OTA 이미지를 컨테이너 호스트에서 사용할 수 있습니다.
다음 단계에 따라 OTA 이미지를 Developer Console에 업로드합니다. OTA 업로드 안내.
Google Home 커미션 및 OTA 관찰
기기가 USB를 통해 호스트 Linux 시스템에 연결되어 있는지 확인합니다. 이
다음 예는 GNU screen
를 사용하여 기기 로그를 읽는 방법을 보여줍니다.
screen -L /dev/ttyUSB0 115200
그러면 기기의 출력이 터미널에 표시되고
screenlog.0
라는 기본 화면 로그 파일에 동일한 출력을 생성합니다.
screenlog.0
파일을 다른 텍스트 편집기에서 열거나
cat
, tail
, more
또는 grep
가 있는 다른 셸입니다.
기기 측면에 있는 빨간색 재설정 버튼을 눌러 부팅 로그를 확인합니다.
기기 출력에 앞서 설정한 VID 및 PID가 표시됩니다. 기기를 커미셔닝하는 데 사용할 QR 코드 이미지의 URL로 사용합니다.
[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
집에서 Hub가 온라인 상태인지 확인하세요.
다음에서 QR 코드를 사용하여 Google Home app (GHA)에 기기 커미셔닝 로그 파일에 표시되는 링크를 클릭합니다.
커미셔닝 후 몇 분 동안 기기를 중단 없이 실행합니다.
OTA 요청자, OTA 이미지 다운로드,
및 OTAImageProcessor
.
이미지가 설치된 후 이미지의 컴파일 시간이
콘솔에 업로드된 파일과 일치하고
보고되었습니다. 다음을 사용하여 grep
실행:
screenlog.0
의 정규식 모드에서 다음 패턴을 사용하면 OTA를
process:
$ 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
초기 실행 후 이 섹션의 단계를 반복할 수 있습니다.
새 이미지를 업로드하지 않고 OTA 이미지를 생성하고 업로드합니다. 이번에는
버전을 1
로 다시 설정합니다.
menuconfig
를 실행하고 대화형 메뉴 옵션에서 다음을 실행합니다.
Component config -->
CHIP Device Layer --->
Device Identification Options
Version String
를v1.0
로 설정합니다.Device Software Version Number
를1
로 설정합니다.s를 눌러 구성을 저장한 다음 q를 눌러
menuconfig
를 종료합니다.
GHA에서 홈에서 기기를 삭제합니다.
이미지를 아직 빌드하지 않은 경우 이미지를 빌드합니다.
idf.py build
플래시:
idf.py -p /dev/ttyUSB0 erase_flash
idf.py -p /dev/ttyUSB0 flash
필요에 따라 Google Home에 커밋하고 OTA를 관찰의 단계를 반복합니다.
OTA 소프트웨어 업데이트 유효성 검사
기기 소프트웨어 버전은 Google Home 앱 (GHA)을 사용하여 확인할 수 있습니다. 기기가 커미셔닝되면 다음 절차를 따르세요.
- GHA 기본 화면에서 기기 타일 길게 누르기
- 오른쪽 상단의 아이콘을 탭합니다.
- 기술 정보를 탭합니다.
- 소프트웨어 버전 필드를 확인합니다.