Home Assistant 어플을 사용하는 것도 편리하지만, 사실 아이폰 사용자에게 있어서 가장 편한 방법은 iOS 홈을 사용하는 것이다.
특히 이번 iOS 14 업데이트로 인하여, 제어센터(xs 기준 우측 상단 드래그 다운시 뜨는 화면)에서 바로 홈 스위치를 사용할 수 있게 되면서 iOS 홈과 연동을 고려하게 되었다.
그래서 아래와 같은 설정을 configuration.yaml 파일에 넣어주었다.
homekit:
다른 옵션은 Homekit 설정 설명에서 볼 수 있다.
이렇게 설정을 하고 서버 재시작을 통해 적용한 뒤, 홈 액세서리를 연결했는데 몇 가지 센서가 붙지 않는 것을 확인했다. 몇 번의 재시도 끝에 확인한 바에 의하면, esphome을 통해서 연결되는 일부 센서가 정상적으로 붙지 않는 문제였다.
이건 bluetooth 장비 때문에 어쩔 수 없이 esphome을 이용하여 게이트웨이를 만들어 Bluetooth -> WiFi로 데이터를 받고 있는 부분이었는데, 꼭! 하나는 올라오지만 나머지는 올라오지 않는 문제가 있었다. 그래서! 아래와 같이 별도의 센서를 생성해주었다.
먼저 configuration.yaml에는
sensor:
- platform: template
sensors:
!include_dir_merge_named sensor.config
라고 설정해두었다. 해당 설정은 homekit 사용전에도 만들어 둔 설정인데 sensor.config 안에 있는 모든 yaml 파일을 불러와서 sensor > platform: template 아래로 넣어주라는 뜻이다.
이렇게 세팅한 이유는 configuration.yaml 파일 정리가 쉽도록 해둔 부분이다.
그리고 sensor.config 폴더 아래에 homekit.yaml 파일을 만들고 아래와 같이 적용해주었다.
# bedroom_sensor for homekit
hk_bedroom_temp:
friendly_name: "침실 온도"
value_template: "{{ states('sensor.bedroom_temperature') }}"
unit_of_measurement: "°C"
device_class: temperature
.
.
.
# livingroom_sensor for homekit
hk_livingroom_temp:
friendly_name: "거실 온도"
value_template: "{{ states('sensor.livingroom_temperature') }}"
unit_of_measurement: "°C"
device_class: temperature
.
.
.
# dressroom_sensor for homekit
hk_workroom_temp:
friendly_name: "서재 온도"
value_template: "{{ states('sensor.workroom_temperature') }}"
unit_of_measurement: "°C"
device_class: temperature
.
.
.
주석을 기준으로 각 실별로 센서를 hk로 시작하게 다시 선언해주었다. 사실 모든 센서는 기존의 센서에서 값을 읽어서 복제하는 역할만 한다.
이렇게 설정을 해주고, 다시 configuration.yaml 파일로 돌아가서 homekit 세팅을 해준다.
homekit:
- filter:
include_entity_globs:
- sensor.hk_*
위의 설정은 다른 모든 센서나 스위치 등을 배제하고 sensor.hk_로 시작하는 모든 센서를 homekit에서 사용한다는 의미이다.
여기서 주의 사항이 있는데 -filter 다음에 써줄 때, 2개의 스페이스가 아니라 4개의 스페이스가 들어가야 한다는 점이다. 두개로 넣었더니 오류가 발생하였다.
이렇게 작성해주고 저장을 한다. 그리고 만약 이번이 homekit 설정이 처음이 아니라면 혹시 모르니 아래와 같은 절차를 거친다.
1. 설정 -> 통합 구성요소 -> Homekit 브리지 삭제
2. 재부팅
위와 같이 실행 후, 다시 연결!
모든 센서가 정상적으로 들어오는 것을 확인했다. 성공!
덧 1. 모든 센서와 스위치를 iOS 홈에 등록했지만, 아마도 밖으로 나가면 아무것도 동작하지 않을 것이다. 그건 바로 애플 티비 혹은 아이패드를 질러야 한다는 것을 의미한다!
덧 2. 아마 나는 못살거야 아마….