Logitech Harmony 기기별 컨트롤을 위한 SmartApp~~~(Updated 18/02/08)

Logitech Harmony Ultimate Hub와 리모트컨트롤러 세트를,
영국 아마존에서 싸게 구입하였었다.(지금도 그 가격은 오지 않았다 ^^v 10만)

BT나 IrDA 를 사용하는 제품은 웬만해선 컨트롤 가능하다.
학습기능도 있어서 리모콘을 이용하는 제품은 거의 다 컨트롤 가능하다고 볼 수 있다.

나는 아래 제품을 등록하여 사용중이다.
– TV & U+ G TV
– PS4
– 발뮤다 그린팬S
– LG 에어컨
– 로보킹

Logitech에서 공식 SmartApp을 제공해줘서 스마트싱스에 연동하여 자동화도 가능하다.
하지만 문제는 ‘Activity’라는 개념이다.

이게 TV 보는 Activity를 On하면, U+ G TV 전원과 TV 전원을 켜줘서 티비를 볼 수 있게 해준다.
하지만 이 때 선풍기 Activity를 On하게 되면 기존 On되어 있던 TV Activity가 Off된다.
즉, TV가 꺼지고 선풍기 Activity가 실행 된다.

선풍기 Activity 안에 TV 켜기를 같이 넣어주면 되지만,
항상 선풍기 Activity On 시 TV도 같이 켜지게 되는 문제가 발생한다.

물론, Harmony Ultimate Kit에 있는 전용 리모콘을 통해서 기기들을 따로 조절가능하지만
스마트싱스에서는 Activity들만 연동해 주고 있어서 불편함을 느끼게 되었다.

그래서 스마트싱스에서는 직접 DTH와 SmartApp 개발하여 해결 할 수있는
환경을 제공해주고 있어서 한번 도전해보았다.

Logitech Harmony API를 검색하다보니 어느 개발자가 쉽게
HTTP/MQTT를 이용하여 Harmony에 접근하고 컨트롤 할 수 있는 서버를 만들어 놓았다.
그것은 바로 ‘Harmony-API’
이것을 이용하면 작업이 반은 줄 것 같아서 ‘Harmony-API’를 이용하는
DTH와 SmartApp을 개발하기 시작하였다.

 

사용중에 심각하지는 않지만 버그가 있을 수 있습니다!!!

< 설치 방법 >

1. Harmony-API Server 설치

[X86서버] ‘Harmony-API’ github을 참조하여 설치방법
https://github.com/maddox/harmony-api

[시놀로지서버] ‘Harmony-API’ Synology에 설치방법

https://github.com/maddox/harmony-api

 

여기서는 라즈베리파이에 설치하는 방법을 설명하겠다.

1-1) Raspberry용 Docker 설치(설치 안되어 있으신 분)

아래 사이트에서 Docker가 설치 된 Raspberry 이미지를 받거나
Raspberry에 Docker 설치 위한 deb 파일을 이용하는 방법이 있다.
https://blog.hypriot.com/downloads/

여기서는 deb파일을 통해서 Docker만 설치하는 것을 설명하겠다.

아래 쪽에 ‘Hypriot Docker Debian Packages for Raspberry Pi’ 부분에
원하는 버전 링크를 눌러 들어가면 아래와 같은 설치 커맨드가 보이고 복붙하면 된다.

# curl -s https://packagecloud.io/install/repositories/Hypriot/Schatzkiste/script.deb.sh | sudo bash
# sudo apt-get install docker-hypriot=1.11.1-1

1-2) 내가 만들어 놓은 ‘turlvo/harmony-api’ docker image를 다운로드

# docker search turlvo/harmony-api
# docker pull turlvo/harmony-api

1-3) 다운로드 한 docker image를 docker를 통해 ‘Harmony-API’ Server 실행

아래 command를 통해 harmony-api container 생성 및 실행

# docker run -ti --net=host --name harmony-api turlvo/harmony-api:latest /home/harmony-api/harmony-api/script/server

 

아래 command를 통해서 harmony-api를 부팅시에 자동으로 실행하도록 설정

# cd /etc/systemd/system/
# vi harmony-api.service

[harmony-api.service]

[Unit]
Description=Harmony-API container
Requires=docker.service
After=docker.service

 

[Service]
Restart=always
ExecStart=/usr/bin/docker start -a harmony-api
ExecStop=/usr/bin/docker stop -t 2 harmony-api

 

[Install]
WantedBy=multi-user.target

 

# systemctl enable [원하는 service name].service

 

 

1-4) ‘Postman’이라는 프로그램을 통한 서버 동작 확인

사용하던 설정파일을 아래에 첨부하였으니 Import하여서 사용 하면 됨

Harmony.postman_collection.json

2. SmartThings IDE사이트에서 DTH/SmartApp 설치

https://github.com/turlvo/KuKuHarmony

2-1) Repository 추가

SmartThings IDE 사이트에서 DTH/SmartApp Menu에서 Settings -> KuKu Harmony 추가

2-2) ‘KuKu Harmony’ DTH를 ‘Update from Repo’를 통해 설치

2-3) ‘KuKu Harmony’ SmartApp을 ‘Update from Repo’를 통해 설치

3. SmartThings 앱에서 SmartApp 설치 및 설정

SmartThings 앱에서 ‘Automation’ 탭에 ‘+ Add a SmartApp’을 통해
2번 과정에서 ‘Publish’ 한 SmartApp을 선택

 

1번과정에서 설치 한 서버의 로컬 IP:PORT를 넣어주고,
‘SAVE’를 하면 ‘KuKu Harmony’ SmartApp설치가 된다.

 

다음은 설치 된 ‘KuKu Harmony’ SmartApp 세부 설정 진행이다.
SmartThings -> Automation -> SmartApp탭에 이전에 설치 한 ‘KuKu Harmony’앱을
선택하면 내부 설정하면이 보인다.
Harmony Hub에 등록되어 있는 Device를 Thing으로 등록하기 위해  ‘Add a device…’를 선택
‘Select Hub’를 선택

 

Hub List에서 자신의 Harmony Hub 선택
Things으로 추가 하고 싶은  Device를 선택한다.

 

‘Select Device Type’ 선택 후 원하는 Type 선택
(Type에 따라 Thing Button 지원 유무 및 Layout이 다름)

 


Device Type 선택 후 ‘Commands’에서
추가 하고 싶은 Command에 Harmony Command 맵핑
필수 이외에 추가 맵핑도 끝났으면 ‘Save’하면 완료

 

Harmony Hub에 등록 되어 있는 TV Device가 SmartThings에 Thing으로 등록 되어 있는 모습
On/Off 버튼 동작에 따라 실제로 TV가 On/Off된다.
이젠 해당 Thing을 자동화 과정에 넣어 이용하면 된다.

 

4. 더 변경해보고 싶은 것

– Harmony-API가 하는 일을 자체 SmartApp에서 하도록 하기
– On/Off외 다른 기능들 추가하기
– SmartApp Connect/Child 하나로 합치기

댓글 남기기

126 thoughts on “Logitech Harmony 기기별 컨트롤을 위한 SmartApp~~~(Updated 18/02/08)”