HomeAssistant로 로지텍 하모니 허브 (Harmony Hub) 제어하기

Posted by JiYiNo
2018. 12. 6. 12:30 지이노/ReView & Using






예전에 Logitech (이하 로지텍) Harmony Hub(이하 하모니)에 대해 포스팅 한 적이 있다.


[설치] 로지텍 하모니 허브 (Harmony Hub) 설치하기


사실 별로 사용하지 않게 되더라.


그동안은 ST를 사용하기도 했고 쿠쿠 하모니를 사용하기도 했지만 아무래도 리모컨이 편하다.


물론 혼자 살 때에는 에어컨도 온도에 맞게 제어하고 나름 서큘레이터도 돌리고 했지만


결혼하니 이게 다 어렵다.


난 열이 많고 와이프는 열이 없어서...


일단 에어컨 제어는 뒤로 미뤄둔다.


우선 만들어 둔 것은 TV의 ON/OFF.


최종 목표는 HA에 연동해서 리모콘을 만들고 그 다음은 구글홈을 통한 음성제어로 넘어갈 계획이다.


그 첫 걸음으로 이번 포스팅은 하모니 HA에 연동하기 이다.


시작한다.






1. HA 연동


하모니는 HA에서 공식으로 지원하는 컴포넌트가 있다.



내가 하모니를 HA에 연동하기 위해 사용 할 것도 바로 이 컴포넌트이다.


연동방식은 아주 간단하다.


첫 번째로 하모니의 IP 주소를 확인해야 한다.


IP 주소를 확인하는 방법은 각자 해결.


내 경우 luna  WIFI 장비를 사용하기 때문에 해당 어플에서 손쉽게 IP를 확인 할 수 있었다.


(사실 처음 등록할 때에 맥 어드레스마다 고정IP를 할당해버렸기 때문에 IP는 고정이다.)


이제 이 간단한 연동을 위해 설정을 해준다.


Configuration.yaml 파일에 아래와 같은 구문을 추가해 주자.


remote:

- platform: harmony

  name: xxxxxx

  host: xxx.xxx.xxx.xxx


HA의 공식지원 컴포넌트는 대부분 설정이 매우 간편하다.


각각의 설명은 아래 와 같다.


platform

사용할 컴포넌트의 종류이다.


name

entity의 이름을 설정한다. 사용자가 원하는 이름을 정하면 된다.


host

사용할 하모니의 IP를 입력한다.

앞서 확인한 IP를 적어두면 OK


remote도 include를 사용 할 수 있다.


예를 들면


remote: !include remotes.yaml

이라고 적어두고 그 아래 내용을 remotes.yaml 파일을 생성해서 적어주면 된다.


물론 나는 정리가 편한 include 방식을 좋아한다.


설정을 마치고 yaml 파일을 저장한 뒤 HA를 재시작 해주자.



정상적으로 연동되었다면 위처럼 Remote에 카드가 표시된다.


하모니가 정상적으로 연결되었다.






2. 제어


설치를 완료하고 잘 보면 아무리 보아도 하모니를 제어하는 버튼 같은 것이 없다.


물론 이대로는 제어 할 수가 없다.


HA는 하모니에 Service 형식으로 명령을 날린다.


그럼 하나하나 사용할 때 마다 Json 형식으로 서비스를 날려줘야 하나?


아니다.


스크립트를 만들어 놓으면 각 버튼을 동작 시킬 수 있다.


귀찮지만 확실하다.


1) 우선 각 커맨드를 알아 내야 한다.


하모니와 HA가 정상적으로 연동되었다면 Config 폴더(Hass.io 기준, 타 방식으로 설치한 경우 configuration.yaml이 있는 경로)를


찾아보면 'harmony_xxxx.conf' 라는 파일이 생성된 것을 확인 할 수 있다.


xxxx는 앞서 등록 할 때 name에 등록한 하모니가 부여받은 이름이다.


이녀석을 오픈하자.


나는 putty를 사용해서 열어보았다. 



위 이미지를 보면 내가 만들어 둔 액티비티와 등록된 디바이스가 가지고 있는 커맨드가 전부 표시된다.


여기서 주의 깊게 확인해야 할 것은 디바이스의 아이디와 내가 사용할 커맨드이다.


예제로 내가 제어 하려는 Samsung TV의 아이디는 58998558 이다.


On/Off를 위한 커맨드는 PowerOn 과 PowerOff 이다.


PowerToggle 도 있지만 테스트를 위해 위 커맨드를 사용해 본다.


2) scripts.yaml 파일을 열자.


앞서 확인한 내용을 토대로 스크립트를 만들어서 사용할 때 마다 액티브 하는 방식으로 제어할 예정이다.


우선 TV를 켜는 스크립트를 만든다.


turnon_tv:

  sequence:

  - service: remote.send_command

    entity_id: remote.livingroom_harmony

    data:

      device: 58998558

      command: PowerOn



이 스크립트를 하나하나 설명하자면


turnon_tv:  # 스크립트의 이름

  sequence: # 시퀀스 구문의 구분

  - service: remote.send_command # 사용할 서비스

    entity_id: remote.livingroom_harmony #사용할 장비의 엔티티

    data: # 데이터 구문의 구분

      device: 58998558 # 디바이스의 하모니 아이디

      command: PowerOn # 전달할 명령


위와 똑같이 해서 스크립트의 이름, 사용할 장비의 엔티티, 디바이스의 하모니 아이디, 전달할 명령 만 바꿔서 사용하면 된다.


간단한 설명을 덧붙이자면


A. 스크립트의 이름은 이 스크립트가 HA내에서 갖게 될 엔티티 이름이다.


B. 사용할 서비스는 이 스크립트가 최종적으로 사용할 서비스 방식이다.


하모니는 remote.send.command 의 서비스를 통해 제어명령을 단독으로 전달해서 사용 할 수 있다.


다른 서비스들도 존재하지만 나중에 지금 당장 쓸 일이 없으므로 나중에 시간이 나면 따로 포스팅하기로 한다.


C. 사용할 장비의 엔티티는 HA내에서 이 장치가 갖는 이름이다. Status 페이지에서 확인 할 수 있다.


D. 디바이스의 하모니 아이디는 이전에 확인한 .conf 파일에 적혀있는 제어할 장비의 아이디이다.


E. 전달할 명령은 이전에 확인한 .conf 파일에 적혀있던 디바이스가 사용가능한 명령을 적어두면 된다.


일단 하나를 만들어 두면 다른 명령들은 그대로 복사해서 스크립트의 이름과 커맨드만 변경하면 원하는 만큼 스크립트를 늘릴 수 있다.


scripts.yaml 파일을 저장하고 스크립트를 재시작 해준다.



스크립트만 수정하였을 때에는 HA를 재시작 하지 않아도 된다.


위 이미지를 보면 group과 automation 파일도 수정 후 개별 재시작이 가능하다는 것을 확인 할 수 있다.


3) 사용


테스트 삼아 몇 개의 스크립트를 더 만들어 보았다.



각각의 스크립트는 EXECUTE 하는 것으로 동작을 실행 할 수 있다.


각각의 기능을 EXECUTE 하면 하모니는 그 명령을 전달 받아 TV를 제어하게 된다.


반응 속도도 꽤 빠르다.


이후 Automation을 통해 자동화 하는 것도 가능 할 것 같다.


이 이후의 일은 다음에 포스팅할 예정이다.






3. 마치며


ST를 사용할 때에는 쿠쿠하모니를 라즈베리파이에 설치하여 전달받아 사용하는 형식이었다.


HA에서는 공식지원을 통해 (ST도 물론 공식지원이지만 제어가 별로 안좋아 쿠쿠하모니를 사용한다.) 각각의 커맨드를 전송할 수 있다.


간단하다.


추가로 무언가를 설치할 필요도 없으며 내가 원하는대로 편집도 가능하다.


이제 목표는 리모컨 UI 만들기와 음성제어이다.


음성제어는 구글홈만 연결하면 되는 문제이고 현재 ST에 연결된 구글홈을 HA로 옮기자마자 포스팅 하기로 한다.


끝.

이 댓글을 비밀 댓글로