내가 Home Assistant(이하 HA) 를 세팅하려고 했던 근본적인 이유는 Harmony(이하 하모니) 앱이 느려서 다른 제어 방법을 찾기 위해서였다.

하모니를 외부에서 제어할 수 있느 방법은 여러가지가 있지만 HA는 잘만 세팅해놓으면 여러가지 조절 수단을 제공 해 주기 때문에 HA로 연동하는것을 선택했다.

HA가 예전에는 하모니의 액티비티를 켜고 끄는것만 지원했던 것 같은데, 내가 세팅하던 시점에는 각 디바이스의 명령 하나하나를 제어할 수 있어서 더욱 좋았다.


HA를 설치하는 방법은 이전 글을 참조하면 되며, 하모니를 제어하기 위해 설정 파일을 수정해줘야 한다.

기본적으로 설정파일에 discovery: 항목이 있으면 HA가 켜질때 지원 기기를 자동으로 검색하기 때문에 기기 자체는 자동으로 추가될 수 있다. 다만 나는 이 방법을 좋아하지 않기 때문에 이 옵션을 꺼둔 상태이고, 이 문서를 참고해 설정파일을 직접 수정하였다.


우선 configuration.yaml 파일을 열어 아래 내용을 추가해준다.

remote:

  - platform: harmony

    name: Harmony Hub

    host: (하모니의 IP주소)

    activity: cool


각 값의 의미를 해석해보면 우선 name은 하모니 앱에서 인식되는 하모니의 실제 이름이다. 이건 이 설정에서 유일한 필수값이며 정확하게 입력해줘야 한다. 

두번째로 host는 물론 하모니의 IP를 입력해 주면 되는데 discovery 옵션을 사용하는 경우에는 생략이 가능하다고 되어있다.


activity 옵션을 설명하려면 HA에서 하모니를 어떻게 인식하고 있는지를 이해해야 하는데 하모니는 기본적으로 스위치처럼 인식된다. 즉 켜고 끌 수 있는 엔티티인데 어떤 액티비티가 활성화 되어 있을 경우 HA에서 이 스위치는 켜진것으로 인식되며 이걸 끌 경우 해당 액티비티를 종료하는 명령을 날리게 된다. 저 activity라는 옵션을 지정해 주지 않으면 액티비티가 아무것도 활성화 되어 있지 않을때는 이 스위치를 켤 수 없다. 나는 이걸 cool로 설정했는데 이 액티비티는 단순히 에어컨을 켜는 액티비티이고 이걸 이용하면 에어컨의 현재 상태를 알 수 있기 때문에 이 값을 지정했다.

당연하게도 하모니를 거치지 않고 에어컨을 켜거나 끄면 이 액티비티와 에어컨의 상태는 맞지 않기 때문에 주의해야 하며 난 에어컨 자체 리모콘은 현재 사용하고 있지 않으므로 임시로 이렇게 설정했고, 나중에 도어센서를 이용해 실제 에어컨의 상태를 확인할 수 있는 방법을 이용해 볼 예정이다.


저렇게 설정값을 추가해준 후 HA를 재시작하면 설정파일이 있는 디렉토리에 harmony_(하모니이름).conf 파일이 자동으로 생성된다. 이 안에는 각 액티비티와 장치의 device 번호가 들어있으며 이를 이용해 액티비티가 아닌 실제 디바이스별 액션을 실행하도록 할 수 있게 된다.


그룹 설정을 따로 만져주지 않았을 경우 둘러보기 메뉴에 자동으로 하모니가 스위치 형태로 보이기 시작 할 것이다.


리모트에 설정을 넣어서인지 엔티티 이름은 remote.(하모니 이름) 으로 잡히며 나의 경우는 remote.harmony_hub로 되어있다. 개발자도구의 상태 메뉴에서보면 아래와 같이 보이게 된다.


그럼 이제부터 제어를 할 수 있는데 제어하는 명령들은 아래와 같이 개발자도구의 서비스 메뉴에서 찾아볼 수 있다.


이 명령들을 스크립트 또는 템플릿 스위치를 이용해 제어할 수 있으며 각 서비스의 데이터로 줘야 하는 값들은 이 문서에서 확인해 볼 수 있다. 참고로 문서에 entity_id라고 되어있는 항목은 하모니 장치의 엔티티id이며 나의 경우는 remote.harmony_hub이다. 그리고 device라고 되어있는 항목에는 위에서 생성 된 harmony_(하모니이름).conf 파일을 열어 원하는 값을 확인하고 그대로 숫자 형태로 넣어주면 된다.


참고로 하모니에 등록한 내 에어컨의 기능들은 아래와 같으며


이걸 이용해서 다음과 같은 스크립트를 작성하였고


그룹에 추가하여 이런식으로 보이게 해두었다.


목표온도는 가상의 센서이며 내 에어컨은 켜질때 무조건 18도로 지정된다는 점을 이용해 관련 스크립트를 실행하거나 켜고 끄는 기능을 사용할 때 변경되도록 하여 현재 목표온도를 표시하도록 해두었다.




License
달리 정하지 않는 한, 이 저작물 크리에이티브 커먼즈 코리아 저작자표시-비영리-변경금지 2.0 대한민국 라이센스에 따라 이용하실 수 있습니다.
Except where otherwise noted, this content is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 2.0 Korea License

+ Recent posts