모든 스마트 장치를 HomeKit에 연결하는 방법(Raspberry Pi 사용)

시중에는 Apple HomeKit을 지원하지 않고 Alexa, Google 등의 플랫폼과만 연동되는 스마트 기기가 많습니다. 하지만, 라즈베리 파이를 활용하여 오픈 소스 Homebridge 소프트웨어를 사용하면 이러한 기기들도 HomeKit과 연결하여 사용할 수 있습니다.

HomeKit을 위한 스마트 기기 확장

HomeKit 시스템을 사용하는 사용자에게 가장 큰 어려움 중 하나는 HomeKit을 지원하는 스마트 기기가 제한적이라는 점입니다. 예를 들어, 가성비 좋은 스마트 전구를 찾을 때, HomeKit 지원 부재가 구매를 망설이게 하는 주요 요인이 됩니다. Amazon에서 판매하는 TECKIN 4개 묶음과 같은 제품은 현재 시점에서 40달러 정도로, 단일 LIFX 전구보다 저렴합니다.

물론, LIFX 제품만큼 고급스럽지는 않습니다. 색상의 생동감이나 욕실에서 들리는 소음 문제도 있지만, 10달러라는 가격을 고려하면 매우 훌륭한 가성비를 제공합니다.

하지만 가장 큰 단점은 HomeKit을 지원하지 않는다는 것입니다. Google Home, Alexa, IFTTT, 제조사 앱과 연동되지만, HomeKit에서는 접근할 수 없어 홈 앱, 제어 센터 위젯, Siri를 통한 제어가 불가능합니다. 또한, 다른 브랜드의 전구들과 함께 장면을 설정하거나 자동화 기능에 활용할 수 없습니다. 이미 HomeKit 생태계에 투자한 사용자라면 이러한 제약은 큰 단점으로 느껴질 것입니다.

Homebridge 소개

다행히도 이러한 문제를 해결하여 스마트 전구를 더 유용하게 만들어 줄 수 있는 방법이 있습니다. HomeKit API는 브릿지라는 장치를 통해 다른 프로토콜을 사용하는 하위 장치를 연결할 수 있도록 허용합니다. 예를 들어, Philips Hue 브릿지를 HomeKit에 추가하면, 브릿지에 연결된 각 조명이 HomeKit에 등록됩니다. 조명 업데이트 요청 시, 스마트폰은 브릿지와 통신하고 브릿지는 조명과 통신하는 방식입니다.

브릿지는 서로 다른 API 사이에서 정보를 중계하는 역할을 합니다. TECKIN 전구는 인터넷을 통해 제어할 수 있으므로, 소프트웨어를 사용하여 HomeKit에 연결하는 것이 가능합니다. 별도의 하드웨어가 필요하지 않습니다.

만약 집에 라즈베리 파이 (5달러짜리 파이 제로도 가능)가 있다면, Homebridge라는 프레임워크를 활용하여 브릿지로 설정할 수 있습니다. 이 가벼운 NodeJS 애플리케이션은 HomeKit API를 에뮬레이트하고, HomeKit을 지원하지 않는 스마트 기기에 요청을 전달합니다.

기본적으로 라즈베리 파이에서 실행하면, 각 ‘멍청한’ 장치가 홈 앱에 추가됩니다. 홈 앱이나 Siri를 통해 전구를 제어하면, Homebridge가 기기와 통신합니다. 설정이 완료되면, 마치 기기가 처음부터 HomeKit을 지원했던 것처럼 작동합니다.

Homebridge는 항상 실행되어야 하므로, 노트북에는 설치할 수 없습니다. 라즈베리 파이가 가장 적합하지만, 사용하지 않는 서버나 데스크톱 PC를 활용할 수도 있습니다.

Homebridge는 프레임워크이며, 플러그인을 통해 기능을 확장할 수 있습니다. 활발한 커뮤니티 지원을 바탕으로, 다양한 스마트 기기를 위한 Homebridge 플러그인이 개발되어 있습니다. 만약 원하는 기기의 플러그인이 없다면, API가 존재하고 기술적인 지식이 있다면 직접 개발할 수도 있습니다.

대부분의 경우, Homebridge와 사용하려는 기기의 플러그인을 설치하고 약간의 설정만 하면 됩니다. 명령어 줄 사용에 익숙하고 약간의 시간을 투자할 수 있다면 어렵지 않게 설정할 수 있습니다.

Homebridge 설치 및 설정

Homebridge는 NodeJS 앱이므로, 사용하려면 node와 npm을 설치해야 합니다. Linux를 사용하는 경우 패키지 관리자를 통해 설치할 수 있습니다.

Ubuntu에서는 다음 명령어를 사용하여 node 저장소를 수동으로 설정하고 nodejs를 설치해야 합니다:

curl -sL https://deb.nodesource.com/setup_13.x | sudo -E bash -
sudo apt-get install -y nodejs

다른 운영체제의 경우, Node.js 다운로드 페이지에서 자세한 설치 방법을 참고할 수 있습니다.

Linux 사용자라면 아래 명령어를 통해 몇 가지 추가 종속성도 설치해야 합니다:

sudo apt-get install libavahi-compat-libdnssd-dev

다음으로, npm을 사용하여 Homebridge를 전역으로 설치합니다:

sudo npm install -g --unsafe-perm homebridge

Homebridge는 프레임워크이므로, 사용하려는 기기 브랜드의 플러그인도 함께 설치해야 합니다. 예를 들어, TECKIN 전구의 경우 homebridge-tuya-web 플러그인을 전역으로 설치합니다:

npm i homebridge-tuya-web -g

설치가 완료되면, Homebridge를 실행하여 초기 설정을 진행합니다:

homebridge

초기 설정 시에는 설정 파일이 없다는 오류 메시지가 나타납니다. 기본 설정 파일 경로는 ~/.homebridge/이며, -U 파라미터를 사용하여 변경할 수 있습니다.

다음 명령어를 사용하여 JSON 형식의 설정 파일을 생성합니다:

nano ~/.homebridge/config.json

사용하는 플러그인에 관계없이, 다음과 같은 기본 설정이 필요합니다:

{
  "bridge": {
    "name": "Homebridge",
    "username": "CC:22:3D:E3:CE:30",
    "port": 51826,
    "pin": "031-45-154"
  },

  "description": "Custom HomeBridge Server",

  "ports": {
    "start": 52100,
    "end": 52150,
  },

  "platforms": [

  ]
}

이 설정은 Homebridge의 기본 포트, 이름, PIN, 다른 장치에 할당할 수 있는 포트 범위를 지정합니다.

빈 “platforms” 배열 안에 각 플러그인에 대한 설정을 추가합니다. 각 플러그인의 GitHub 페이지에서 자세한 사용법과 예제를 확인할 수 있습니다.

아래 예시는 TECKIN 전구용 homebridge-tuya-web 플러그인 설정입니다. 전구 앱 API 연동을 위해 사용자 이름, 비밀번호 및 기타 몇 가지 설정이 필요합니다:

  "platforms": [
     {
       "platform": "TuyaWebPlatform",
       "name": "TuyaWebPlatform",
       "options":
         {
           "username": "username",
           "password": "password",
           "countryCode": "1",
           "platform": "smart_life",
           "pollingInterval": 10
         }
     }
   ]

설정이 완료되면, Homebridge를 실행할 준비가 되었습니다. 실행 시 터미널에 QR 코드가 표시됩니다. Home 앱으로 이 코드를 스캔하여 HomeKit에 연결된 모든 장치를 추가할 수 있습니다.

Homebridge는 플러그인을 로드하고, 인식된 각 장치에 대한 정보를 화면에 출력합니다. 장치가 추가되면 HomeKit에서 정상적으로 작동하는 것을 확인할 수 있습니다.

LIFX 전구에 비해 약간의 지연이 있을 수 있습니다. 이는 전구가 직접 제어되지 않고 API를 통해 제어되기 때문일 수 있습니다. 처음에는 전구가 일부 흰색 계열의 색상을 올바르게 표현하지 못했지만, 설정을 약간 조정한 후에는 원하는 장면을 설정할 수 있었습니다.

먼저 각 기기의 전용 앱에서 설정을 완료한 후, Home 앱에서 업데이트될 때까지 기다린 다음, 미리 설정된 값으로 HomeKit 장면을 설정하는 것이 좋습니다.

Homebridge를 다시 추가해야 하는 경우, 설정 폴더의 지속/ 폴더를 삭제한 후, HomeKit에 연결된 기기 설정에서 브릿지를 제거하면 됩니다.

Homebridge를 서비스로 추가

Homebridge를 항상 실행하려면, 시스템 충돌이나 라즈베리 파이 재시작 시 자동으로 다시 시작되도록 설정하는 것이 좋습니다. Unix 서비스를 통해 이 기능을 설정할 수 있습니다. Homebridge가 정상적으로 작동하는 것을 확인한 후에 설정하는 것이 좋습니다.

먼저, homebridge라는 이름의 서비스 사용자를 생성합니다:

sudo useradd -M --system homebridge

비밀번호를 설정합니다:

sudo passwd homebridge

다음으로, homebridge 설정 파일을 개인 홈 디렉토리 외부로 이동합니다. /var/lib/homebridge/ 경로가 적절합니다:

sudo mv ~/.homebridge /var/lib/homebridge/

homebridge 사용자가 해당 디렉토리와 모든 하위 폴더에 대한 소유권을 갖도록 설정합니다:

sudo chown -R homebridge /var/lib/homebridge/

이제 서비스를 생성할 수 있습니다. /etc/systemd/system/ 경로에 homebridge.service라는 새 파일을 생성합니다:

sudo nano /etc/systemd/system/homebridge.service

다음 설정을 파일에 붙여넣습니다:

[Unit]
Description=Homebridge service
After=syslog.target network-online.target

[Service]
Type=simple
User=homebridge
ExecStart=/usr/bin/homebridge -U /var/lib/homebridge
Restart=on-failure
RestartSec=10
KillMode=process


[Install]
WantedBy=multi-user.target

서비스 데몬을 다시 로드하여 변경 사항을 반영합니다:

sudo systemctl daemon-reload

이제 서비스를 활성화하고 (부팅 시 자동 실행되도록 설정):

sudo systemctl enable homebridge

서비스를 시작합니다:

sudo systemctl start homebridge

서비스 구성에서 오류가 발생하는 경우, 다음 명령어를 사용하여 서비스 로그를 확인할 수 있습니다:

journalctl -fn 50 -u homebridge