Matter 기기 빌드

1. 소개

Matter는 스마트 기기 개발을 위한 흥미로운 기회를 제공하는 연결 프로토콜입니다. 이 Codelab에서는 첫 번째 Matter 기기를 빌드합니다. Matter에 관해 자세히 알아보려면 Google Home 개발자 센터: Matter 또는 Connectivity Standards Alliance 웹사이트를 방문하세요.

학습할 내용

  • 실제 기기를 Matter와 통합하는 방법
  • Google Home으로 Matter 기기를 커미셔닝하고 제어하는 방법

필요한 항목

2. 환경 설정

직렬 기기 식별

개발 환경을 설정하는 첫 번째 단계는 기기가 연결된 직렬 포트를 결정하는 것입니다. 이 정보를 사용하여 개발자 보드를 프로그래밍하고 상호작용할 수 있습니다.

  1. USB 케이블을 사용하여 개발자 보드를 컴퓨터에 연결합니다.
  2. /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')가 필요합니다.

  1. ESP-IDF를 포함할 디렉터리를 만듭니다.
    $ mkdir ~/esp-idf_tools
    
  2. GitHub에서 ESP-IDF를 다음 디렉터리로 클론합니다.
    $ cd ~/esp-idf_tools
    $ git clone -b v4.4.3 --recursive https://github.com/espressif/esp-idf.git
    
  3. 도구 모음 설치를 완료합니다.
    $ cd ./esp-idf
    $ ./install.sh
    $ cd ~/
    

Matter SDK 설정하기

  1. 오픈소스 Matter 저장소를 클론합니다.
    $ git clone https://github.com/project-chip/connectedhomeip.git
    $ cd ./connectedhomeip
    $ git fetch origin v1.0-branch
    $ git checkout FETCH_HEAD
    
  2. 저장소 하위 모듈을 가져옵니다.
    $ ./scripts/checkout_submodules.py --shallow --platform esp32
    
  3. 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 개발자 콘솔로 이동합니다.

  1. 프로젝트 만들기를 클릭합니다.
  2. 고유한 프로젝트 이름을 입력한 후 프로젝트 만들기를 클릭합니다. 새 프로젝트 만들기 대화상자
  3. + 통합 추가를 클릭합니다. 그러면 Matter 리소스 화면으로 이동하여 Matter 개발 문서를 보고 일부 도구에 관해 알아볼 수 있습니다.
  4. 계속할 준비가 되면 다음: 개발을 클릭하여 Matter 체크리스트 페이지를 표시합니다.
  5. 다음: 설정을 클릭합니다.
  6. 설정 페이지에서 제품 이름을 입력합니다.
  7. 기기 유형 선택을 클릭하고 드롭다운 메뉴에서 기기 유형을 선택합니다 (이 경우 Light).
  8. 공급업체 ID (VID)에서 VID 테스트를 선택한 다음 VID 드롭다운 메뉴에서 0xFFF1을 선택합니다. 제품 ID (PID)에 0x8000을 입력하고 저장하고 계속하기를 클릭한 후 다음 페이지에서 저장을 클릭합니다. 이 정확한 VID/PID 값을 사용하세요. 이후 Codelab 단계는 이 값에 따라 달라집니다.
    프로젝트 설정
  9. 이제 Matter 통합 아래에 통합이 표시됩니다.
  10. 허브를 재부팅하여 최신 Matter 통합 프로젝트 구성을 수신하도록 합니다. 나중에 VID 또는 PID를 변경해야 하는 경우 변경사항을 적용하려면 프로젝트를 저장한 후 재부팅해야 합니다. 단계별 재부팅 안내는 Google Nest 또는 Google Wifi 기기 다시 시작하기를 참고하세요.

4. 기기 빌드

Matter의 모든 예시는 GitHub 저장소의 예시 폴더에 있습니다. 여러 샘플이 있지만 이 Codelab에서는 lighting-app에 중점을 둡니다.

이 예는 Google Home에 켜기/끄기 명령에 응답하여 켜기/끄기 표시등으로 표시되는 간단한 기기입니다. 실제 전기 조명을 제어하도록 만드는 것은 이 Codelab의 범위를 벗어납니다.

빌드 구성

  1. Matter SDK를 구성하고 Matter 빌드 환경을 활성화합니다.
    $ cd ~/esp-idf_tools/esp-idf
    $ source export.sh
    $ cd ~/connectedhomeip
    $ source ./scripts/activate.sh
    
  2. 빌드 프로세스를 가속화하는 Ccache를 사용 설정합니다.
    $ export IDF_CCACHE_ENABLE=1
    
  3. lighting-app ESP32 빌드 디렉터리로 이동하여 타겟 아키텍처를 설정합니다.
    $ cd ./examples/lighting-app/esp32
    $ idf.py set-target esp32
    
    1. 구성 유틸리티를 실행합니다.
      $ idf.py menuconfig
      
    2. Demo -> Device Type를 선택하고 Device TypeESP32-DevKitC로 설정합니다.
    3. 왼쪽 화살표 키를 눌러 최상위 메뉴로 돌아갑니다.
    4. Component config --->를 선택합니다.
    5. CHIP Device Layer --->를 선택합니다.
    6. Device Identification Options --->를 선택합니다.
    7. Vendor ID를 Alliance에서 할당한 VID 또는 테스트 VID로 설정합니다.
    8. Product ID를 Google Home Developer Console의 Matter 통합에서 설정한 PID로 설정합니다.
    9. S를 눌러 저장합니다.
    10. Return 키를 눌러 구성이 저장될 기본 경로를 수락합니다.
    11. Return 키를 눌러 저장 확인 대화상자를 닫습니다.
    12. Q를 눌러 구성 유틸리티를 종료합니다.

빌드 실행

빌드 스크립트를 호출합니다.

idf.py build

빌드가 오류 없이 완료되어야 합니다.

기기 프로그래밍

  1. USB 케이블을 사용하여 개발자 보드를 컴퓨터에 연결합니다.
  2. 기기에서 이전 펌웨어를 모두 삭제합니다 (컴퓨터에 연결된 개발자 보드가 하나만 있는 경우 기기가 자동으로 감지되므로 -p {device} 옵션을 선택하지 않아도 됩니다).
    idf.py -p {device} erase-flash
    
  3. idf.py -p {device} flash
    
    를 사용하여 새 애플리케이션을 개발자 보드에 복사합니다.

플래시 옵션에 관한 자세한 내용은 Espressif esptool.py 문서 페이지에서 확인할 수 있습니다.

5. 기기에 연결

  1. 터미널 창을 엽니다.
  2. 현재 디렉터리를 기록해 둔 다음 GNU screen를 사용하여 새 Matter 기기에 연결합니다.
    $ screen -L {device} 115200
    
  3. 빈 콘솔이 표시되면 리셋 버튼을 눌러 기기 부팅 프로세스를 시작합니다.

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]]

문제 해결

커미셔닝 실패

자세한 문제 해결 도움말은 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에 관해 자세히 알아보려면 다음 참고 자료를 확인하세요.