Matter SDK를 설치하고, 빌드하는 방법에 대해 알아보겠습니다.
매터(Matter)란?
매터는 CSA(Connectivity Standards Alliance)에서 주도하는 IoT 기기 간 호환성을 보장하기 위한 개방형 표준 프로토콜 입니다. 기존에 스마트 홈 제조사마다 다른 통신 방식을 사용해 호환성이 떨어지는 문제를, 매터를 통해 브랜드와 상관없이 다양한 스마트홈 기기를 원할히 연결 및 제어할 수 있습니다.
참고 https://doyun98.tistory.com/82
매터(Matter) 프로토콜이란?
매터(Matter)란? 매터는 CSA(Connectivity Standards Alliance)에서 주도하는 IoT 기기 간 호환성을 보장하기 위한 개방형 표준 프로토콜 입니다. 기존에 스마트 홈 제조사마다 다른 통신 방식을 사용해 호환
doyun98.tistory.com
빌드 환경은 WSL(Ubuntu 22.04 LTS)에서 구성하겠습니다. bash창에 다음과 같이 입력하여 개발 환경을 구축합니다.
// 필수 의존성 설치
sudo apt-get install git gcc g++ python pkg-config libssl-dev libdbus-1-dev libglib2.0-dev ninja-build python3-venv python3-dev unzip
git clone --recurse-submodules https://github.com/project-chip/connectedhomeip.git
cd connetedhomeip
git submodule init
git submodule update
git submodule update --init --recursive
pip install -r requirements.txt
source ./gn_build.sh
// Matter SDK 최신화 필요시
source ./scripts/bootstrap.sh
source ./scripts/activate.sh

connectedhomeip/examples의 디렉터리 구성 요소들을 보면

Matter SDK에서 제공하는 다양한 예제 앱이 있습니다. 이 중 적당한 앱을 골라 빌드를 해주면 되겠습니다.
lighting-app을 기반으로 빌드를 해보겠습니다.
cp -r lighting-app custom-lighting-app
cd custom-lighting-app/lighting-common
lighting-common 디렉터리에 구성 요소를 살펴보겠습니다.

lighting-app.matter는 빌드할 매터 디바이스의 구성 정보와 프로비저닝 데이터를 갖고 있습니다.
lighting-app.zap은 클러스터 정의와 엔드포인트, 어트리뷰트와 커맨드 정보 등 즉 matter 디바이스의 기능을 정의하는 정보를 갖고 있습니다.
필요한 기능들을 추가하거나 삭제하기 위해서는 이러한 zap파일을 수정해야 합니다.
ZAP(ZCL Advanced Platform)
ZCL(Zigbee Cluster Library)
ZAP은 zigbee의 클러스터를 설정할 수 있는 Framework입니다.
zap파일을 직접 수정할 수 있지만, gui 기반의 zap 프레임워크를 사용해 더 간단히 수정할 수 있습니다. WSL 환경에서 gui 기반 앱을 실행시키기 위한 과정도 추가로 필요합니다. windows에서는 x 서버를 통해 wsl에 디스플레이 설정을 해줄 수 있습니다.
cd ~/connectedhomeip
//zap툴 설치
./scripts/tools/zap/zap_bootstrap.sh
./scripts/tools/zap/zap_bootstrap.sh examples/custom-lighting-app/lgihting-common/lighting-app.zap
이렇게 수행해주면

이렇게 생긴 zap 툴이 실행됩니다. 왼쪽에 엔드포인트를 열면

간단하게 클러스터를 추가할 수 있고, configure를 클릭하면

어트리뷰트와 커맨드들을 설정할 수 있습니다. zap 파일 설정을 모두 마쳤다면 include파일과 src파일을 수정하며 실제 on/off를 눌렀을 때 어떻게 동작시킬건지, 밝기 조절은 어떻게 조절시킬건지 등의 작업을 하드웨어 구성에 맞게 코드로 작성해주면 됩니다.
코드 수정까지 모두 마쳤다면 이제 빌드를 해주겠습니다. 타겟 보드를 예시로 라즈베리파이로 두고 빌드를 해보겠습니다.
cd connectedhomeip
//크로스 컴파일을 하기 위한 도커 환경
./scripts/run_in_build_env.sh bash
cd ./examples/custom-lighting-app/linux
gn gen out/debug --args='target_cpu="arm64" is_clang=true'
ninja -C out/debug
x86에서 arm64용으로 크로스 컴파일을 해주어야 하기 때문에 docker 환경에서 빌드를 해주었습니다.
out/debug/chip-lighting-app이란 실행 파일이 만들어졌습니다. 이것을 라즈베리파이로 옮겨 실행시켜 주면 됩니다.
마치며
Mattter SDK를 이용해 Matter를 빌드하는 방법을 다루는 블로그나 영상이 거의 없는 것 같습니다. 물론 있을 수 있지만 제가 찾아 본 바로는 그렇습니다. 부디 이 포스트가 Matter SDK를 사용해야 하는 사람들에게 도움이 되었으면 좋겠습니다.
다음 포스트에서는 이 내용을 기반으로 직접 실습하고, 삼성의 스마트싱스에 연결시켜 제어하는 것을 해보겠습니다.
'컴퓨터 과학(CS)' 카테고리의 다른 글
매터(Matter) 프로토콜이란? (3) | 2025.02.27 |
---|