Logitech Harmony 기기별 컨트롤을 위한 SmartApp~~~

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 설치

1) ‘Harmony-API’ github을 참조하여 각자 서버에 설치
https://github.com/maddox/harmony-api

2) 1번 작업을 나의 Raspberry-pie에 설치하고 만들어 놓는 docker image 이용
– Raspberry용 Docker 설치필요시
아래 사이트에서 Docker가 설치 된 Raspberry 이미지 또는 Raspberry에 Docker 설치 위한 deb 파일과 방법이 공유되어 있다.
https://blog.hypriot.com/downloads/
아래 쪽에 ‘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

– Docker hub에서 내가 만들어 놓은 ‘turlvo/harmony-api’ docker image를 다운로드

– 다운로드 한 docker image를 docker를 통해 ‘Harmony-API’ Server 실행(-d 옵션 추가시 daemon으로 실행)

– ‘Postman’이라는 프로그램을 통한 서버 동작 확인
사용하던 설정파일을 아래에 첨부하였으니 Import하여서 사용 하면 됨
Harmony.postman_collection.json

 

2. SmartThings IDE사이트에서 DTH/SmartApp 설치
https://github.com/turlvo/KuKuHarmony
– SmartThings IDE 사이트에서 DTH/SmartApp Menu에서 Settings -> KuKu Harmony 추가

 

– ‘KuKu Harmony’ DTH를 ‘Update from Repo’를 통해 설치

 

– ‘KuKu Harmony’ SmartApp을 ‘Update from Repo’를 통해 설치
꼭 ‘Connect’먼저 설치 후 ‘Child’ 설치 필요하며 ‘Child’는 Publish 안해도 됨

 

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

 

1번과정에서 설치 한 서버의 로컬 IP:PORT를 넣어주고,
‘Next’를 하면 동일 네트워크상에 있는 Harmony Hub를 검색해 준다.

 

검색 된 Harmony Hub에서 설치를 진행 할 Hub를 선택하고 ‘Done’을 선택하면
SmartApp 설치가 완료 된다.

 

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

 

Things으로 추가 하고 싶은  Device를 선택한다.
그리고 아직은 On/Off만 지원하므로 선택 한 Device가 지원하는 Commnd 리스트 중에
On/Off에 의미하는 Command를 선택한다.
(다른 것 선택 시 DTH에서 On/Off시 해당 Command가 수행 됨)

 

On/Off Command를 선택하고, ‘Done’을 선택하면
해당 Device를 Thing으로 등록하는 과정이 완료 된다.
(다른 Device를 추가하려면 ‘Add a device…’부터 반복하면 된다.)

 

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

 

<더 변경해보고 싶은 것>
– Harmony-API가 하는 일을 자체 SmartApp에서 하도록 하기
– On/Off외 다른 기능들 추가하기
– SmartApp Connect/Child 하나로 합치기

9 comments on “Logitech Harmony 기기별 컨트롤을 위한 SmartApp~~~”

  1. 아…조금만 더 빨리 알았더라면 ㅎㅎ
    저는 전원설정에서 디바이스 항시 ON 유지 설정을 사용하고 있었습니다.
    주말에 한번 차근차근 해봐야 겠네요
    좋은 자료 감사합니다

    1. 헛 그런기능이 있었군요 ㅠㅠ activity는 꺼지지만 제품전원은 유지된다는 makelism님 업데이트 내용도 있네요. 제가 만든것도 반쪽짜리겠네요 activity는 그나마 harmony hub에서 상태 관리를 해주지만 디바이스별 커맨드는 리모콘과같이 신호를 쏘고 켜지던지 말던지 아~몰랑 상태거든요 ㅎㅎ

  2. 이거 빨리 설정하고 싶은데 현재 제 스마트싱스가 업데이트 후 상태가 안 좋아서 입맛만 다시고 있습니다.
    선생님이 생각하시는 것처럼 반쪽 자리는 아닌 것 같습니다.
    원래는 다른 엑티비티 실행을 하면 OFF로 나오는데 공유해주신 방법은 버튼 기반으로 작동을 해서 다른 엑티비티가 실행되어도 버튼이 ON 상태 유지를 하지 않나요? 만약 유지를 하고 다른 버튼까지 작동이 가능하면 거실 에어컨 2대는 하모니 하나로 각각 자동화를 실행할 수 있습니다.
    빨리 설정해보고 싶습니다.

    1. Makelism님께서는 습득/활용 능력이 좋으셔서 금방 적용 하실 수 있을 것 같습니다.
      하지만 테스터가 저 뿐이라서, 서버도 한대뿐이라 변수가 있을지 걱정되네요 ^^;;

      Harmony 리모콘에 각 device 별 리모콘과 같이 SmartThings Thing을 통해서 동일하게 제어가능합니다.
      이전에 Activity가 On상태인 것이 없다면 기존에 On해 놓은 장비는 Off되지 않고 유지합니다.
      ex) TV&STB On(TV Activity사용 하지않고), Aircon Activity On해도 TV&STB Off되지 않음

      하지만 Harmony 공식 SmartApp이 불편한 이유인
      이전에 Activity로 on되어 있는 디바이스는 추후 다른 Activity 실행 시 off됩니다.
      ex) Aircon 1 SmartThings로 On후 Aircon 2 Activity 실행시 Aircon 1/2 On 유지
      하지만 이 상태에서 TV Activity On시에 Aircon 1은 On 유지하지만 Aircon 2는 Off 될 것으로 보입니다.
      => Activity 실행 시 기존 state가 on이 되어 있으면 그 Activity를 off시키고 아니면 아무것도 않하는 것 같습니다.

      그리고 이게 단방향 컨트롤이다보니 on/off 상태 표시가 애매하네요
      이전 상태가 Activity에 의해 바뀔수도있고, 일반 리모콘에 바뀔수도 있고…
      상태표시를 없앨까도 생각중입니다 ㅎㅎ

      그리고 조금 더 업데이트를 해서,
      TV(STB도 가능)/로봇청소기/선풍기/에어컨 Device Type별로 DTH를 나누어서
      On/Off 이외의 버튼을 추가하였습니다.
      (혹 필요한 Devity Type과 버튼 레이아웃이 있으시면 별도나 common하게 만들어보겠습니다.
      요건 적용해 보시고 잘 동작하는 것 확인 후 필요하시면 말씀해주세요)

      1. 최근 포스트부터 읽고 이 댓글을 읽었습니다.

        제 환경에서는 ON, OFF 표시가 제일 중요하다고 생각합니다.
        어차피 일반 리모컨은 ON, OFF 상태 통일을 위해 전부 치워놓은 상황이고.
        엑티비티가 가진 단점 때문에.
        새로운 DTH 사용을 한다면 전 전부 스마트싱스로 엑티비티를 만들 생각입니다.

        감사합니다.

        1. 네.
          어차피 액티비티도 실행되고 자체적으로 켜지던 말던 On상태로
          바뀌듯이 이것도 쏘면 상태변화시키는 것으로 해야겠네요

  3. 점심 먹고 느긋하게 시작했는데.
    지금까지 1번 검색하느라 아무것도 못 했습니다.
    초보자에게 도움될만한 검색어나 링크가 있을까요?

    1. 엇 너무 돌아가시는 것 같은데요
      이전에 라즈베리파이쓰시는 것을 보았기때문에,
      제가 만들어 놓은 이미지를 다운 받아 실행만 하시면 됩니다.

      즉 1-2) 부터 하시면 될 것 같습니다.
      (라즈베리파이 백업해두세요 ^^;;)

      다운로드 링크에 가보시면 라즈베리파이용 debian package파일 링크가 있고 원하시는 버전 링크 누르시면 설치 커맨드가 나옵니다


      제가 harmony-api 설치 해 놓은 이미지를 다운받아 실행하시면 라즈베리파이에 자동으로 harmony-api가 실행된 상태가 됩니다.

      그 뒤 postman같은 툴로 커맨드 날려보시거나 바로 제 스마트앱으로 실행해보시면 됩니다.

    2. 혹시 1-1)하시느라 고생하신건가요? ㅠㅠ 그렇다면 제가 설명이 부족했나보네요
      둘중 하나로 하시면 되는데 Makelism님은 라즈베리파이 이용하시니 1-2)만 하시면 됩니다

댓글 남기기