SmartThings와 빅스비로 에어컨 IR 리모컨 조작하기

TL; DR: Moes Zigbee 리모컨으로 SmartThings에서 에어컨을 조작할 수 있게 해 주는 IR 리모컨 드라이버를 만들었습니다. 여기에서 설치할 수 있어요.

먼 옛날, 갤럭시 홈미니라는 물건이 있었습니다. 빅스비가 탑재된 스피커인데, IR 블라스터가 내장되어 있어 어떤 에어컨이든지 스마트싱스와 빅스비로 조작할 수 있는 신비한 능력이 있었죠. 하지만 갤럭시 홈미니는 갤럭시 S20 시리즈의 한국 사전판매 사은품으로만 제공된 뒤 정식 출시되지 않았고, 후속작도 나오지 않은 채로 6년이 흘렀습니다.

6년이면 일반적인 스마트 전자제품의 평균적인 교체 주기를 진작에 넘었지만 사실 이 녀석을 대체할 방법이 딱히 없습니다. Tapo, 미니빅, 헤이홈 등에서 유사한 기능을 제공하는 IR 리모컨을 판매하지만 이들은 자체 앱에서만 제대로 된 리모컨 기능을 제공하고, SmartThings에는 전원 버튼 정도만 연동됩니다.

한편 Tuya 생태계용으로 판매되는 저렴한 IR 리모컨을 SmartThings에 연동하려는 시도도 있었습니다. 스페인의 otivax님이 만든 Moes Smart IR Remote Control 엣지 드라이버는 IR 신호를 학습하여 어떤 리모컨이든지 SmartThings로 사용할 수 있게 해 주었습니다. 에어컨만 빼고요. 왜 에어컨은 안 되냐고요? 에어컨 리모컨의 버튼은 사실 IR 신호와 일대일 대응되지 않거든요. 에어컨 리모컨은 온도, 풍량, 모드 같은 설정을 기억해 두었다가 한 번에 전송합니다. 예를 들어, 온도를 20도로 낮추기 위해 '온도 낮춤' 버튼을 한 번 누르면 에어컨에는 실제로 '온도 낮춤'이라는 신호가 전달되는 것이 아니라 '전원 켜짐, 냉방 모드, 온도 20도, 풍량 보통' 식의 정보가 하나의 신호로 묶여 전달됩니다. 똑같은 버튼을 한 번 더 누르면 '전원 켜짐, 냉방 모드, 온도 19도, 풍량 보통'이라는 정보를 담은 신호가 새롭게 전달되고요. 이러니 실제로 사용되는 신호의 조합은 수백 가지에 달하고, 수백 가지 신호를 하나하나 학습해서 사용하는 건 현실적으로 어렵습니다. 그래서 미니빅이나 헤이홈 등에서 나오는 스마트 리모컨은 설정 시에 먼저 에어컨 제조사와 모델을 물어보고 자체적으로 신호를 조합해서 쏘는 방식입니다.

그러면 이 신호 조합을 SmartThings 드라이버에 미리 넣어 두면 되지 않을까요? 그래서 만들었습니다.

준비물

이 글에 나와 있는 도구를 사용하려면 아래와 같은 준비물이 필요합니다.

SmartThings 드라이버 설치

SmartThings Channel and Drivers

이건 사용자들이 직접 만든 SmartThings 드라이버를 집에 설치할 수 있게 해 주는 Channel이라는 건데, SmartThings를 꾸준히 사용하고 있다면 이미 익숙하실 거예요. 그래도 간단히 설명하자면 다음과 같습니다.

  1. 삼성 계정으로 로그인하고,
  2. 집에 있는 SmartThings Hub에 Enroll을 누르고,
  3. Available Drivers에서 “SmartThings Generic IR Remote”를 선택해 주면 끝!

기기 화면의 드라이버 메뉴

Zigbee 리모컨을 미리 Hub에 등록해둔 상태라면, 리모컨의 디바이스 화면에서 오른쪽 상단 케밥 메뉴의 '드라이버'를 선택하고, '다른 드라이버 선택'을 눌렀을 때 'SmartThings Generic IR Remote'가 보일 거예요.

이 다음부터는 아래와 같은 순서로 진행할 수 있습니다.

에어컨 리모컨

에어컨 리모컨 생성 화면

  1. '리모컨 종류'에서 추가할 리모컨의 종류를 선택해 주세요.

웬만하면 '에어컨 – 프로토콜' 옵션을 선택해 주세요. 나머지 두 개는 위에서 언급한 '수백 가지 신호를 하나하나 학습'하는 뻘짓을 굳이 해야 하는 불가피한 상황에 사용합니다.

  1. '리모컨 이름'에서 리모컨 이름을 정해 주세요.
  2. '리모컨 만들기'에 있는 버튼을 눌러 주세요.

조금 기다리면 방에 새로운 에어컨 리모컨이 추가된 걸 확인할 수 있습니다.

에어컨 리모컨 기기 목록 예

에어컨 기기 제어와 프로토콜 선택 화면

4. 프로토콜 선택

새 리모컨을 연 다음, 아래로 내리면 프로토콜 선택 화면이 있습니다. 제조사에 따라 적당히 뭐가 될 때까지(...) 이것저것 옵션을 선택해 주세요. 원래 에어컨에 딸려 온 리모컨을 가지고 있다면 해당 리모컨의 모델명을 참고하면 좋습니다. 가끔 LG라고 적혀 있는데 사실 TCL OEM 제품이라던가 하는 경우도 있으니 모델명을 잘 확인해 주세요.

기타 리모컨 (학습 필요)

1~3은 에어컨 리모컨과 동일합니다.

  1. '리모컨 종류'에서 추가할 리모컨의 종류를 선택해 주세요.

    • TV: 키패드가 달린 테레비 리모컨.
    • 선풍기: 사실 지금은 전원 버튼밖에 없습니다. 언젠가 다른 버튼도 추가해 볼게요...
    • 일반 IR 스위치: 대충 아무거나 껐다 켜는 신호를 학습할 수 있음.
    • 일반 IR 버튼: 대충 아무거나 신호를 하나 학습할 수 있음.
  2. '리모컨 이름'에서 리모컨 이름을 정해 주세요.

  3. '리모컨 만들기'에 있는 버튼을 눌러 주세요.

조금 기다리면 방에 새로운 리모컨이 추가된 걸 확인할 수 있습니다.

TV 리모컨의 키패드와 신호 학습 화면

4. 신호 학습

4-1. '학습할 신호'를 선택해 주세요.

TV 리모컨의 경우 UI에 표시되지 않는 버튼이 신호 목록에는 표시되는 이슈가 있습니다. 이것도 언젠가 수정할게요...

4-2. '신호 학습 시작' 버튼을 눌러 주세요.

4-3. 실물 리모컨에서 학습시킬 버튼을 눌러 주세요.

4-4. 상단의 'IR 신호 학습'에서 '학습 상태'가 '저장됨'으로 바뀌면 '저장된 신호 테스트'를 눌러 정상 작동하는지 확인해 주세요.

저장소

버그, 이슈 제보, 소스코드 열람 등은 깃헙 레포지토리에서 하실 수 있습니다.

Heartade/smartthings-edge: Generic IR remote capabilities for Moes IR remote and compatible Zigbee remotes on SmartThings


Dani Soohan Park (@heartade)

Follow this blog at Fediverse: @heartade@blog.heartade.dev

Follow my shorter shoutouts at Fediverse: @heartade@social.silicon.moe

Follow me at Bluesky: @heartade.dev