1. 소개
Matter는 스마트 기기 개발을 위한 흥미로운 기회를 제공하는 연결 프로토콜입니다. 이 Codelab에서는 첫 번째 Matter 기기를 빌드합니다. Matter에 관해 자세히 알아보려면 Google Home 개발자 센터: Matter 또는 Connectivity Standards Alliance 웹사이트를 방문하세요.
학습할 내용
- 실제 기기를 Matter와 통합하는 방법
- Google Home으로 Matter 기기를 커미셔닝하고 제어하는 방법
필요한 항목
- Nest Hub (2세대)와 같이 Matter를 지원하는 Google Nest 기기를 의미하는 허브
- Espressif Systems ESP32-DevkitC 또는 ESP32 M5STACK Matter 평가 보드입니다.
- Linux를 실행하는 PC
- Linux에 관한 기본 지식
2. 환경 설정
직렬 기기 식별
개발 환경을 설정하는 첫 번째 단계는 기기가 연결된 직렬 포트를 결정하는 것입니다. 이 정보를 사용하여 개발자 보드를 프로그래밍하고 상호작용할 수 있습니다.
- USB 케이블을 사용하여 개발자 보드를 컴퓨터에 연결합니다.
/dev
파일 시스템에서 개발자 보드 기기를 찾습니다. 개발자 보드의 기기 접두어를 지정하여 검색 범위를 좁힐 수 있습니다. Espressif의 ESP32는/dev/ttyUSBx
:
을 사용합니다.user@host $ ls /dev/ttyUSB* /dev/ttyUSB0
허브 설정
이 Codelab에 사용하려는 것과 동일한 Google 계정을 사용하여 허브를 설정합니다.
개발 환경 설정
기본 요건
이 안내는 Debian Linux에서 테스트되었으며 Ubuntu를 포함한 대부분의 Debian 기반 Linux 배포판에서 작동합니다. 다른 Linux 배포판을 사용하는 경우 종속 항목 설정 절차는 다음과 다를 수 있습니다.
종속 항목 설치
다음 명령어를 실행하여 아직 설치되지 않았을 수 있는 Linux 패키지 바이너리를 설치합니다.
$ sudo apt-get install git gcc g++ pkg-config libssl-dev libdbus-1-dev \ libglib2.0-dev libavahi-client-dev ninja-build python3-venv python3-dev \ python3-pip unzip libgirepository1.0-dev libcairo2-dev libreadline-dev screen
SDK 설정
이 Codelab을 계속하려면 Espressif SDK (Espressif IoT 개발 프레임워크 또는'ESP-IDF')가 필요합니다.
- ESP-IDF를 포함할 디렉터리를 만듭니다.
$ mkdir ~/esp-idf_tools
- GitHub에서 ESP-IDF를 다음 디렉터리로 클론합니다.
$ cd ~/esp-idf_tools $ git clone -b v4.4.3 --recursive https://github.com/espressif/esp-idf.git
- 도구 모음 설치를 완료합니다.
$ cd ./esp-idf $ ./install.sh $ cd ~/
Matter SDK 설정하기
- 오픈소스 Matter 저장소를 클론합니다.
$ git clone https://github.com/project-chip/connectedhomeip.git $ cd ./connectedhomeip $ git fetch origin v1.0-branch $ git checkout FETCH_HEAD
- 저장소 하위 모듈을 가져옵니다.
$ ./scripts/checkout_submodules.py --shallow --platform esp32
- Matter 개발 환경을 부트스트랩 처리:
$ source ./scripts/bootstrap.sh
3. Google Home 개발자 콘솔
Google Home 개발자 콘솔은 Matter와 Google Home의 통합을 관리하는 웹 애플리케이션입니다.
Connectivity Standards Alliance (Alliance) Matter 인증을 통과한 모든 Matter 기기는 Google Home 생태계에서 작동합니다. 인증을 받지 않은 개발 중인 기기는 특정 조건에서 Google Home 생태계에 시사할 수 있습니다. 자세한 내용은 페어링 제한사항을 참고하세요.
개발자 프로젝트 만들기
먼저 Google Home 개발자 콘솔로 이동합니다.
- 프로젝트 만들기를 클릭합니다.
- 고유한 프로젝트 이름을 입력한 후 프로젝트 만들기를 클릭합니다.
- + 통합 추가를 클릭합니다. 그러면 Matter 리소스 화면으로 이동하여 Matter 개발 문서를 보고 일부 도구에 관해 알아볼 수 있습니다.
- 계속할 준비가 되면 다음: 개발을 클릭하여 Matter 체크리스트 페이지를 표시합니다.
- 다음: 설정을 클릭합니다.
- 설정 페이지에서 제품 이름을 입력합니다.
- 기기 유형 선택을 클릭하고 드롭다운 메뉴에서 기기 유형을 선택합니다 (이 경우
Light
). - 공급업체 ID (VID)에서 VID 테스트를 선택한 다음 VID 드롭다운 메뉴에서 0xFFF1을 선택합니다. 제품 ID (PID)에 0x8000을 입력하고 저장하고 계속하기를 클릭한 후 다음 페이지에서 저장을 클릭합니다. 이 정확한 VID/PID 값을 사용하세요. 이후 Codelab 단계는 이 값에 따라 달라집니다.
- 이제 Matter 통합 아래에 통합이 표시됩니다.
- 허브를 재부팅하여 최신 Matter 통합 프로젝트 구성을 수신하도록 합니다. 나중에 VID 또는 PID를 변경해야 하는 경우 변경사항을 적용하려면 프로젝트를 저장한 후 재부팅해야 합니다. 단계별 재부팅 안내는 Google Nest 또는 Google Wifi 기기 다시 시작하기를 참고하세요.
4. 기기 빌드
Matter의 모든 예시는 GitHub 저장소의 예시 폴더에 있습니다. 여러 샘플이 있지만 이 Codelab에서는 lighting-app에 중점을 둡니다.
이 예는 Google Home에 켜기/끄기 명령에 응답하여 켜기/끄기 표시등으로 표시되는 간단한 기기입니다. 실제 전기 조명을 제어하도록 만드는 것은 이 Codelab의 범위를 벗어납니다.
빌드 구성
- Matter SDK를 구성하고 Matter 빌드 환경을 활성화합니다.
$ cd ~/esp-idf_tools/esp-idf $ source export.sh $ cd ~/connectedhomeip $ source ./scripts/activate.sh
- 빌드 프로세스를 가속화하는 Ccache를 사용 설정합니다.
$ export IDF_CCACHE_ENABLE=1
lighting-app
ESP32 빌드 디렉터리로 이동하여 타겟 아키텍처를 설정합니다.$ cd ./examples/lighting-app/esp32 $ idf.py set-target esp32
- 구성 유틸리티를 실행합니다.
$ idf.py menuconfig
Demo -> Device Type
를 선택하고Device Type
를ESP32-DevKitC
로 설정합니다.- 왼쪽 화살표 키를 눌러 최상위 메뉴로 돌아갑니다.
Component config --->
를 선택합니다.CHIP Device Layer --->
를 선택합니다.Device Identification Options --->
를 선택합니다.Vendor ID
를 Alliance에서 할당한 VID 또는 테스트 VID로 설정합니다.Product ID
를 Google Home Developer Console의 Matter 통합에서 설정한 PID로 설정합니다.- S를 눌러 저장합니다.
- Return 키를 눌러 구성이 저장될 기본 경로를 수락합니다.
- Return 키를 눌러 저장 확인 대화상자를 닫습니다.
- Q를 눌러 구성 유틸리티를 종료합니다.
- 구성 유틸리티를 실행합니다.
빌드 실행
빌드 스크립트를 호출합니다.
idf.py build
빌드가 오류 없이 완료되어야 합니다.
기기 프로그래밍
- USB 케이블을 사용하여 개발자 보드를 컴퓨터에 연결합니다.
- 기기에서 이전 펌웨어를 모두 삭제합니다 (컴퓨터에 연결된 개발자 보드가 하나만 있는 경우 기기가 자동으로 감지되므로
-p {device}
옵션을 선택하지 않아도 됩니다).idf.py -p {device} erase-flash
idf.py -p {device} flash
를 사용하여 새 애플리케이션을 개발자 보드에 복사합니다.
플래시 옵션에 관한 자세한 내용은 Espressif esptool.py
문서 페이지에서 확인할 수 있습니다.
5. 기기에 연결
- 터미널 창을 엽니다.
- 현재 디렉터리를 기록해 둔 다음 GNU
screen
를 사용하여 새 Matter 기기에 연결합니다.$ screen -L {device} 115200
- 빈 콘솔이 표시되면 리셋 버튼을 눌러 기기 부팅 프로세스를 시작합니다.
6. 기기 커미셔닝
참고: 이 단계는 Google Home 개발자 콘솔에서 이미 프로젝트를 설정한 경우에만 성공합니다.
Nest Hub
Matter 패브릭에 기기를 커미셔닝하려면 허브가 필요합니다. Matter를 지원하는 Nest Hub (2세대)와 같이 스레드 지원 기기의 보더 라우터와 스마트 홈 인텐트 라우팅을 위한 로컬 처리 경로의 역할을 하는 Google Nest 기기입니다.
Matter를 지원하는 허브는 이 목록을 참고하세요.
커미셔닝 프로세스를 시작하기 전에 다음 사항을 확인하세요.
- 허브는 Google Home 콘솔에 로그인할 때 사용한 Google 계정과 페어링되어 있습니다.
- 허브는 Virtual Matter 기기를 실행하는 데 사용 중인 컴퓨터와 동일한 Wi-Fi 네트워크에 연결되어 있습니다.
- 허브는 Google Home 앱에서 사용하는 것과 동일한 구조로 되어 있습니다. Google Home 그래프의 '집'은 사용자의 구조를 나타냅니다.
기기 페어링
ESP32 페어링 안내에 따라 기기를 페어링합니다.
참고: M5STACK을 사용 중인 경우 플래시된 후에도 화면이 비어 있으므로 콘솔에 표시되는 URL을 사용하여 QR 코드를 확인해야 합니다. 또는 수동 페어링 코드를 직접 입력해도 됩니다.
QR 코드 URL을 보여주는 콘솔 출력의 예:
I (1926) chip[DL]: Done driving station state, nothing else to do...
I (1936) chip[SVR]: SetupQRCode: [MT:X.XXXXXXXXXXXXXXXXX]
I (1936) chip[SVR]: Copy/paste the below URL in a browser to see the QR Code:
I (1946) chip[SVR]: https://project-chip.github.io/connectedhomeip/qrcode.html?data=MT%3XX.KXXXXXXXXXXXXXXXX
I (1956) chip[SVR]: Manual pairing code: [XXXXXXXXXXX]]
문제 해결
커미셔닝 실패
- Google Home 콘솔에서 올바른 VID/PID 조합으로 프로젝트를 생성했는지 확인합니다.
- 빌드 구성에 올바른 VID 및 PID를 입력했는지 확인합니다.
- 빌드 구성에서 올바른
Device Type
를 선택했는지 확인합니다.
자세한 문제 해결 도움말은 Matter 문제 해결 페이지를 참조하세요.
7. 기기 제어
Matter 호환 기기가 시운전되어 Google Home 앱에 전구로 표시되면 Google 어시스턴트, Google Home 앱 또는 VS Code용 Google Home 확장 프로그램의 Google 어시스턴트 시뮬레이터를 사용하여 기기를 제어할 수 있습니다.
Google 어시스턴트
휴대전화 또는 허브에서 Google 어시스턴트를 사용하여 "Hey Google, 조명 전환해 줘"와 같은 음성 명령에서 기기 상태를 전환하세요.
더 많은 명령어 예시를 보려면 Google Home 앱에 추가된 스마트 홈 기기 제어하기의 음성 명령으로 스마트 홈 기기 제어하기 섹션을 참고하세요.
Google Home 앱
Google Home 앱에 표시된 전구 아이콘 옆의 켜기 또는 끄기 라벨을 탭할 수 있습니다.
자세한 내용은 Google Home 앱으로 기기 제어를 참조하세요.
Google 어시스턴트 시뮬레이터
VS Code용 Google Home 확장 프로그램에서 Google 어시스턴트 시뮬레이터를 사용하면 채팅과 유사한 인터페이스로 기기에 음성을 전달할 수 있습니다.
8. 수고하셨습니다
첫 번째 Matter 기기를 만들고 커미셔닝했습니다. 사용하든,
이 Codelab을 통해 학습한 내용은 다음과 같습니다.
- 요구사항에서 작동 상태로 Matter 개발 환경을 설치합니다.
- Matter 기기를 빌드하고 실행합니다.
- Google Home을 통해 기기를 커미셔닝하고 제어하세요.
Matter에 관해 자세히 알아보려면 다음 참고 자료를 확인하세요.
- Google Home의 Matter Primer에서 Matter 프로토콜의 중요한 개념과 원칙을 알아볼 수 있습니다.
- Matter 사양, Matter 기기 라이브러리, Matter 애플리케이션 클러스터 라이브러리(Connected Standard Alliance에서 게시함)
- Matter GitHub 저장소