내가 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

Home Assistant(이하 HA) 를 설치하는 많은 방법이 있는데 이중 제일 간단한 방법은 docker를 사용하는 것이다.

docker는 쉽게말하면 반 가상화 플랫폼인데 자세한건 각자 공부하기로 하자.


보톤 HA 설치는 라즈베리파이나 시놀로지NAS에서 설치하는 것에 관련된 문서들이 대부분인데 나는 ESXI가 설치된 개인 서버를 사용하고 있기 때문에 UBUNTU 16.04 에서 설치를 해 봤다. 사실 라즈베리파이용 설치문서 중 라즈비안에서 설치하는 방법을 그대로 따라하면 큰 문제 없이 설치가 가능하며 나는 관리 및 버전 변경에 용이한 docker를 이용해 설치해 봤다.


docker를 이용해 설치하기 위해선 당연히 docker가 설치되어야 한다.

우분투에서는 api-get을 이용하여 간단하게 설치할 수 있다.

$ sudo apt-get install docker.io


이 문서를 보면 간단하게 설명이 되어있는데 명령어를 보면 설정 디렉토리를 하나 만들어준 뒤 docker에 /config에 연결하도록 되어 있다. 참고로 docker를 이용해 설치하게 되면 설정파일은 root권한으로 생성되기 때문에 본인이 root권한을 가질 수 있는 환경일때 사용해야 한다. 아니면 docker를 이용해 컨테이너 쉘에 접근해 수정하는것도 가능하긴 하지만 대충 시도해본 결과 안에는 vi조차 없더라.


나는 내 홈에 setting/home-assistant 디렉토리를 만들어 연결하였고. 해당 서버가 재부팅되도 다시 실행 할 수 있도록 reset 옵션을 추가해서 아래와 같은 명령으로 실행했다.

$ mkdir -p ~/setting/home-assistant

$ $ docker run -d --name="home-assistant" -v /home/widyou/setting/home-assistant:/config -v /etc/localtime:/etc/localtime:ro --net=host --restart=always homeassistant/home-assistant


그 후 http://서버IP:8123 에 접속해보면 기본적인 제어판 형태의 둘러보기 화면이 뜨게 되며 자동으로 인지 가능한 장치들은 이 화면에 자동으로 뜨게 된다. 하모니의 경우에도 자동으로 인지가 되기 때문에 장치 자체는 바로 보이게 된다. 다만 설정이 없어 현재 켜져있는 액티비티를 끌 수만 있다.


서버가 한번 켜지고 나면 위에서 생성한 설정파일 경로에 기본적인 설정파일들이 자동으로 생성되며 configuration.yaml 파일을 열어보면 기본적인 서버 세팅이 되어 있음을 알 수 있다.

HA는 이 디렉토리에 모든 설정이 들어가게 되기 때문에 버전업을 하거나 삭제하고 재설치를 하더라도 이 디렉토리만 연결해주면 모든 설정이 유지되니 설정파일만 잘 백업하면 날아갈 걱정이 없다.





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

자취를 시작한 후로 TV, 에어컨 등 리모컨이 점점 늘어 불편하던 찰나 로지텍의 하모니 라는 제품이 저렴하게 세일하는것을 발견하여 약 1년정도 전에 구매하여 잘 쓰고 있었다.


하모니의 장점은 목록에 없는 장비여도 리모콘 신호를 직접 학습시켜 사용할 수 있고 전용 앱을 이용하면 집 밖에서도 제어가 가능하기에 주로 퇴근 전에 에어컨을 켜두는 용도로 사용하고 있었다.


그런데 이 앱이라는 놈이 UI가 구린건 둘째 치고 처음 켜고 인증을 하고 액티비티/디바이스 목록이 뜨고 눌러서 실행하면 빙글빙글 돌다가 딱 켜지는데 이 시간이 무척이나 길어서 쓸맛이 뚝 떨어지게 만들고 있었다.


그래서 더더욱 에어컨 켜고 끌때만 사용하고 그외에는 거의 손대지 않았나 싶다.


그러다 우연히 Home Assistant(이하 HA)라는 프로젝트를 알게 되었다.

api가 공개된 다양한 플랫폼을 하나의 제어판 형태로 관리할 수 있는 기능이 마음에 들었고, 대부분 이런 솔루션들은 하모니의 액티비티만 지원하는데 HA는 각 디바이스의 기능도 직접 실행 가능해서 더 마음에 들었다.


보통 인터넷에서 HA에 대한 정보를 찾아보면 대부분 ST라고 하는 스마트싱스와의 연동을 전제로 하는 글이 대부분이다. ST는 각종 센서들이 지원하는 지그비나 지그웨이브등을 모두 지원하며 다른 허브 플랫폼과는 다르게 개발자가 직접 만든 기능들도 마음껏 붙일 수 있어서 홈 오토메이션계의 끝판왕인데 나는 단순히 하모니의 기능 몇개를 통제하고 싶은 것 뿐이라서 ST까지는 필요가 없는 상태였다.


하지난 나는 개발자이기 때문에 프로젝트에서 제공해주는 문서와 구글링만 있으면 세팅에 문제는 없을것이라 생각하고 HA를 세팅하기 시작했고 약 이틀정도의 시간을 투자해서 에어컨을 제어하는 간단한 제어판을 완성할 수 있었다.


HA로 세팅을 하고나니 너무 좋은 것이 앱으로 할때는 위에 적은대로 한세월 걸려서 켜고 끌 수 있고 하모니와 같이 있는 리모콘은 하모니 허브랑 처음에 접속하는 시간 때문에 딜레이가 발생했는데 HA는 허브랑 빠르게 와이파이로 연결되어있어서인지 스위치를 조정하는 즉시 반응하였고 이는 외부에서 웹으로 접근할때도 마찬가지였다.


HA를 설정하면서 삽질하며 얻은 팁들이 많아 앞으로 이를 블로그에 기록해 보려고 한다.

나처럼 맨땅에서 HA를 세팅하는 분들에게 도움이 되기를...



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

+ Recent posts