1. 소개
Matter는 스마트 기기 개발에 흥미로운 기회를 제공하는 연결 프로토콜입니다. 이 Codelab에서는 첫 번째 Matter 기기를 빌드합니다. Matter에 대해 자세히 알아보려면 Google Home 개발자 센터: Matter 또는 Connectivity Standards Alliance 웹사이트를 참고하세요.
학습할 내용
- 실제 기기를 Matter와 통합하는 방법
- Google Home으로 Matter 기기를 커미셔닝하고 제어하는 방법
필요한 항목
- 허브: Matter를 지원하는 Google Nest 기기(예: Nest Hub(2세대))
- 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 개발자 콘솔은 Google Home과의 Matter 통합을 관리하는 웹 애플리케이션입니다.
Connectivity Standards Alliance (Alliance) Matter 인증을 통과한 모든 Matter 기기는 Google Home 생태계에서 작동합니다. 인증을 받지 않은 개발 중인 기기는 특정 조건에서 Google Home 생태계에서 커미셔닝할 수 있습니다. 자세한 내용은 페어링 제한을 참고하세요.
개발자 프로젝트 만들기
먼저 Google Home Developer Console로 이동합니다.
- 프로젝트 만들기를 클릭합니다.
- 고유한 프로젝트 이름을 입력한 다음 프로젝트 만들기를 클릭합니다.

- + 통합 추가를 클릭하면 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 저장소의 examples 폴더에 있습니다. 사용 가능한 샘플이 여러 개 있지만 이 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-appESP32 빌드 디렉터리로 이동하여 타겟 아키텍처를 설정합니다.$ 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 - 콘솔이 비어 있으면 RESET 버튼을 눌러 기기 부팅 프로세스를 시작합니다.
6. 기기 설정
참고: 이 단계는 Google Home 개발자 콘솔에서 프로젝트를 이미 설정한 경우에만 성공합니다.
Nest Hub
Matter 패브릭에서 기기를 커미셔닝하려면 허브가 필요합니다. Nest Hub (2세대)과 같은 Google Nest 기기로, Matter를 지원하며 스레드 지원 기기의 보더 라우터와 스마트 홈 인텐트를 라우팅하는 로컬 처리 경로 역할을 합니다.
이 목록에서 Matter를 지원하는 허브를 확인하세요.
커미셔닝 프로세스를 시작하기 전에 다음 사항을 확인하세요.
- 허브가 Google Home Console에 로그인할 때 사용한 것과 동일한 Google 계정과 페어링되어 있습니다.
- 허브가 가상 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 입문서에서 Matter 프로토콜의 중요한 개념과 원칙을 알아봅니다.
- 커넥티드 표준 얼라이언스에서 게시한 Matter 사양, Matter 기기 라이브러리, Matter 애플리케이션 클러스터 라이브러리
- Matter GitHub 저장소