스마트홈을 꾸리다 보면 어느 순간 앱이 너무 많아진다는 걸 느끼게 된다. 샤오미는 Mi Home, 필립스 휴는 Hue 앱, 스위치봇은 또 따로, 구글 홈은 구글 홈대로. 거기에 Home Assistant까지 더하면 폰 홈 화면이 스마트홈 앱으로 가득 찬다. Home Assistant를 중심으로 기기를 통합하면 이 문제가 많이 줄어들긴 하는데, iPhone을 주로 쓰는 입장에서는 한 가지 욕심이 더 생겼다. 애플 홈 앱 하나로 전부 보고, Siri로 말 한마디에 조명 끄고 싶다는 거다. 이번 글은 Home Assistant와 Apple HomeKit을 연동하면서 직접 겪은 과정을 순서대로 정리한 것이다. 설정 자체는 어렵지 않은데, 중간에 막히는 지점이 몇 군데 있어서 그 부분을 중심으로 써봤다.

HomeKit 연동이 필요한 이유
Home Assistant에도 자체 앱이 있고, 구글 어시스턴트나 알렉사 연동도 된다. 그런데 Apple 기기를 주로 쓰는 사람이라면 HomeKit 연동이 주는 편의성이 다른 차원이라는 걸 느낄 수 있다. iPhone 잠금 화면에서 바로 홈 앱을 올려 조명을 끄거나, Apple Watch 손목에서 탭 한 번으로 에어컨을 켜거나, “시리야, 안방 불 꺼줘” 한마디로 끝내는 경험은 생각보다 꽤 자연스럽다.
더 중요한 건 외부 접속이다. HomePod, Apple TV(4세대 이상), 또는 iPad를 홈 허브로 설정해두면 집 밖에서도 HomeKit을 통해 기기를 제어할 수 있다. Home Assistant 자체의 외부 접속 설정 없이도 어느 정도 원격 제어가 가능해지는 셈이다. 물론 Home Assistant의 자동화나 세부 제어는 HA 앱을 써야 하지만, 간단한 켜고 끄기 수준은 홈 앱만으로도 충분하다.
HomeKit이 직접 지원하지 않는 기기가 훨씬 많다는 게 문제인데, Home Assistant가 그 중간 다리 역할을 해준다. HomeKit 인증을 받지 않은 샤오미 기기도, 지그비 센서도, 직접 만든 ESPHome 기기도 Home Assistant를 거치면 홈 앱에서 보인다. 이게 이번 연동의 핵심 가치다.
연동 전에 먼저 확인할 것들
설정을 시작하기 전에 아래 항목을 하나씩 점검하는 게 좋다. 이 중 하나라도 빠지면 페어링 단계에서 막히거나, 연동은 됐는데 기기가 안 보이는 상황이 생긴다.
- Home Assistant가 정상 실행 중인지 확인. Raspberry Pi든, VM이든, Docker든 상관없다. 웹 UI에 접속이 잘 되는 상태여야 한다.
- HA와 iPhone이 같은 네트워크에 있는지 확인. HomeKit 연동은 기본적으로 로컬 네트워크 기반이다. 같은 Wi-Fi에 연결되어 있어야 페어링이 된다. 게스트 네트워크나 VLAN으로 분리되어 있으면 안 된다.
- 멀티캐스트/mDNS가 막혀 있지 않은지 확인. HomeKit은 mDNS(멀티캐스트 DNS)라는 방식으로 기기를 찾는다. 공유기 설정에서 이게 막혀 있으면 페어링 화면에서 기기가 아예 안 잡힌다. 이 부분이 생각보다 자주 막히는 지점이다.
- Home Assistant 버전 확인. 너무 오래된 버전이면 HomeKit Bridge 관련 버그가 있을 수 있다. 가능하면 최근 몇 달 안의 버전을 쓰는 게 낫다.
- 홈 허브가 있는지 확인(외부 접속 원할 경우). 집 밖에서도 홈 앱으로 제어하려면 HomePod mini, Apple TV 4세대 이상, 또는 iPad 중 하나가 집에 상시 켜져 있어야 한다.
네트워크 분리 문제는 특히 유니파이(Ubiquiti) 같은 고급 공유기를 쓰는 분들이 자주 겪는다. IoT 기기를 별도 VLAN에 넣어뒀다가 HomeKit 페어링이 안 된다고 하는 경우가 꽤 있다. 이 경우 mDNS 리플렉터 설정이나 VLAN 간 통신 허용 설정이 필요하다.
HomeKit Bridge vs HomeKit Controller, 뭐가 다른가
Home Assistant에서 HomeKit 관련 통합을 추가하려고 검색하면 두 가지가 나온다. 이름이 비슷해서 처음엔 헷갈릴 수 있다.
- HomeKit Bridge — Home Assistant에 등록된 기기를 Apple 홈 앱으로 보내주는 것. HA가 브리지(다리) 역할을 한다. 이번 글에서 다루는 것이 바로 이것이다.
- HomeKit Controller — 반대 방향이다. 이미 HomeKit 인증을 받은 기기(예: 일부 스마트 플러그, 도어락 등)를 Home Assistant 안으로 가져올 때 쓴다.
이번 목적은 HA에 있는 기기들을 홈 앱에서 보이게 하는 것이니 HomeKit Bridge를 선택하면 된다.
HomeKit Bridge 추가하는 순서
설정 자체는 UI에서 몇 번 클릭으로 끝난다. 순서를 따라가면 된다.
- Home Assistant 사이드바에서 설정(Settings) → 기기 및 서비스(Devices & Services)로 이동한다.
- 오른쪽 하단의 통합 추가(+ Add Integration) 버튼을 누른다.
- 검색창에 HomeKit을 입력하고, 결과에서 HomeKit Bridge를 선택한다.
- 브리지 이름을 설정한다. 기본값 그대로 둬도 되고, 구분하기 쉬운 이름으로 바꿔도 된다.
- 포트 번호는 기본값 21063을 그대로 두는 게 편하다. 브리지를 여러 개 운영할 때만 다르게 설정한다.
- 노출할 도메인(조명, 스위치, 센서 등)을 선택하고 저장한다.
저장하고 나면 Home Assistant 알림 영역(벨 아이콘)에 QR 코드와 8자리 페어링 코드가 나타난다. 이걸 이제 iPhone에서 등록하면 된다.
iPhone 홈 앱에서 페어링하기
iPhone의 홈(Home) 앱을 열고 오른쪽 상단의 + 버튼을 누른다. ‘액세서리 추가’를 선택하면 카메라가 켜지는데, HA 알림에 표시된 QR 코드를 스캔하거나 ‘코드 없음 또는 스캔할 수 없음’을 눌러 8자리 코드를 직접 입력하면 된다.
이때 “인증되지 않은 액세서리입니다”라는 경고 문구가 나올 수 있다. 이건 Apple이 공식 인증하지 않은 서드파티 브리지라서 뜨는 것이다. 직접 구성한 Home Assistant 브리지이니 계속 진행해도 된다. 겁먹을 필요 없다.
페어링이 완료되면 Home Assistant에 등록된 기기들이 홈 앱에 하나씩 나타나기 시작한다. 기기 수가 많으면 처음 동기화에 1~2분 정도 걸리기도 한다. 바로 안 보인다고 뭔가 잘못된 게 아니니 조금 기다려보면 된다.
연동 후 자주 막히는 지점들
설정 자체는 쉬운 편인데, 막상 써보면 몇 가지 불편한 점이 생긴다. 직접 겪거나 커뮤니티에서 자주 보이는 것들을 정리했다.
- 기기가 홈 앱에서 응답 없음으로 뜨는 경우. HA를 재시작하거나 HomeKit Bridge 통합을 한 번 재로드하면 대부분 해결된다. 공유기의 mDNS 설정 문제일 수도 있다.
- 페어링 코드 화면이 사라진 경우. HA 알림 영역에서 다시 찾을 수 있다. 없으면 HomeKit Bridge 통합 → 설정 → 재설정(Reset)을 누르면 새 코드가 발급된다.
- 기기가 너무 많아서 홈 앱이 느려지는 경우. HomeKit은 액세서리 수에 실질적인 한계가 있다. 100개를 넘어가면 홈 앱 자체가 느려지는 현상이 생긴다. 아래 필터 설정을 꼭 활용하자.
- HA 재시작 후 홈 앱에서 기기가 전부 사라지는 경우. 브리지 통합이 제대로 로드되지 않은 것이다. 통합 페이지에서 HomeKit Bridge를 다시 활성화하거나 재로드하면 된다.
- 특정 기기 유형이 홈 앱에서 이상하게 보이는 경우. HA 도메인과 HomeKit 액세서리 유형이 맞지 않아서 생기는 일이다. 이 경우 HA에서 해당 엔티티의 설정을 조정하거나 노출에서 제외하는 게 낫다.
노출할 기기 선택하기 — 필터 설정
Home Assistant에 등록된 기기가 많다면 전부 HomeKit으로 노출하는 건 추천하지 않는다. 실제로 홈 앱에서 쓸 기기만 골라서 노출하는 게 훨씬 깔끔하고 안정적이다.
필터 설정은 두 가지 방법으로 할 수 있다.
UI에서 조정하는 방법: 설정 → 기기 및 서비스 → HomeKit Bridge 통합 → 옵션(Configure)으로 들어가면 포함/제외할 도메인이나 엔티티를 선택할 수 있다. 간단히 쓸 때는 이 방법으로 충분하다.
configuration.yaml로 조정하는 방법: 더 세밀하게 제어하고 싶다면 configuration.yaml 파일에 직접 필터를 작성한다. 특정 엔티티 ID만 포함하거나, 특정 도메인 전체를 제외하는 방식으로 쓸 수 있다. 처음이라면 UI 방식으로 먼저 써보고 필요하면 yaml로 넘어가는 걸 추천한다.
노출하지 않는 게 좋은 것들의 예시를 들면, 자동화 내부에서만 쓰는 가상 스위치, 테스트용 입력 헬퍼(input_boolean 등), 값이 계속 바뀌는 수치 센서(에너지 누적값 같은 것) 등이다. 이런 것들까지 홈 앱에 뜨면 오히려 관리하기 불편해진다.
주요 도메인별 HomeKit 지원 현황
어떤 기기가 홈 앱에서 어떻게 보이는지 간단하게 정리했다.
| HA 도메인 | 홈 앱 액세서리 유형 | Siri 제어 |
|---|---|---|
| light (조명) | 전구 / 조명 | 가능 (밝기, 색상 포함) |
| switch (스위치) | 스위치 / 콘센트 | 가능 |
| climate (에어컨/난방) | 온도 조절기 | 가능 (온도 설정 포함) |
| cover (블라인드/차고) | 창문 커버링 / 차고문 | 가능 |
| sensor (센서) | 온도, 습도, 동작 등 | 조회만 가능 |
| binary_sensor | 접촉 센서, 동작 감지 | 조회만 가능 |
| lock (도어락) | 잠금장치 | 가능 |
모든 도메인이 HomeKit에서 완벽하게 동작하는 건 아니다. HA에서는 잘 되는 기기인데 홈 앱에서는 지원 범위 밖인 경우도 있다. 예를 들어 HA에서 세밀하게 제어하던 기능이 홈 앱에서는 단순 켜기/끄기로만 보이는 경우가 있다. 이건 HomeKit 자체의 액세서리 스펙 제한이라 어쩔 수 없는 부분이다.
브리지 여러 개 운영하는 방법
기기가 많거나 도메인별로 분류해서 관리하고 싶다면 HomeKit Bridge를 여러 개 추가할 수 있다. 예를 들어 조명용 브리지 하나, 센서용 브리지 하나 이런 식으로 나눌 수 있다. 이때 각 브리지는 포트 번호를 다르게 설정해야 한다. 기본 21063 외에 21064, 21065 이런 식으로 순서대로 지정하면 된다.
다만 브리지를 너무 많이 나누면 관리가 복잡해지고, 홈 앱에서 홈 허브 연결 상태가 불안정해질 수 있다는 경험담도 있다. 처음엔 브리지 하나로 시작하고, 기기가 늘어나면 그때 분리를 고려하는 게 현실적이다.
연동 전 체크리스트 요약
- Home Assistant 웹 UI 정상 접속 가능 여부 확인
- HA 서버와 iPhone이 동일한 네트워크(같은 Wi-Fi)에 있는지 확인
- 공유기에서 mDNS/멀티캐스트가 허용되어 있는지 확인
- VLAN이나 네트워크 분리 설정이 있다면 mDNS 리플렉터 설정 여부 확인
- 외부 접속이 필요하다면 HomePod, Apple TV, iPad 중 홈 허브 역할 기기 있는지 확인
- HomeKit Bridge 추가 후 알림 영역에서 페어링 코드 확인
- 노출할 기기 범위 미리 정해두기 (전체 노출은 비추천)
마무리하며
HomeKit 연동 자체는 생각보다 간단하다. 설정 메뉴에서 통합 추가하고, 코드 스캔하면 끝이다. 다만 네트워크 환경이 조금 복잡하거나, 기기 수가 많거나, 브리지가 갑자기 응답 없음이 되는 상황에서 원인을 찾는 게 시간이 걸린다. 이 글에서 정리한 체크리스트와 막히는 지점들이 그 시간을 조금이라도 줄여줬으면 한다.
연동을 마치고 나서 “시리야, 거실 불 꺼줘”가 처음으로 작동했을 때의 느낌은 꽤 괜찮았다. HA 자체 앱도 잘 쓰고 있지만, 일상에서 습관적으로 쓰는 건 결국 홈 앱이 됐다. 둘을 같이 쓰는 게 지금으로선 가장 편한 방식이다.
외부 접속 설정이 아직 안 되어 있다면 [HA 구축기 06] HA 외부접속 안전 설정을 먼저 보는 것도 좋다. HomeKit 홈 허브 없이 외부에서 HA를 직접 쓰는 방법이 거기 정리되어 있다. 연동 후 자동화까지 이어서 구성하고 싶다면 [HA 구축기 08] 내가 쓰는 자동화 5가지도 참고해보자.
기기 연결 자체가 안 되는 상황이라면 Home Assistant 디바이스 연결이 안 될 때 해결 방법에서 원인별 점검 순서를 확인할 수 있다.
시리즈 글 모아보기
- 이전 편: 06. HA 외부접속 안전 설정
- 다음 편: 08. 내가 쓰는 자동화 5가지
- 전체 목차: Home Assistant 구축기 전체 목차
- 참고: Home Assistant 공식 문서