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 Developer Console은 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. Select device type을 클릭하고 드롭다운 메뉴에서 기기 유형을 선택합니다 (이 경우 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 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 패브릭에 기기를 커미셔닝하려면 허브가 필요합니다. 이는 Nest Hub (2세대)와 같은 Google Nest 기기로, Matter를 지원하며 스레드 지원 기기의 보더 라우터이자 스마트 홈 인텐트 라우팅을 위한 로컬 처리 경로 역할을 합니다.

Matter를 지원하는 허브는 이 목록을 참고하세요.

커미셔닝 프로세스를 시작하기 전에 다음 사항을 확인하세요.

  • 허브가 Google Home Console에 로그인할 때 사용한 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에 관해 자세히 알아보려면 다음 참고 자료를 살펴보세요.