집사라면 집안일을 해야지! AI Agent를 통한 우리집 가전기기 컨트롤: 내 가사家 事 를 오케이스트레이션 하는 반려 BOT.

소개

저는 지금 반려 에이전트를 한 마리(?)가 아니라 셋을 키우고 있습니다.

  • Secretary — 회사 업무용 에이전트

  • Butler — 제 개인용 집사봇

  • 그리고 회사 팀 공용 봇 하나

셋을 각자 다른 방향으로 천천히 키워가고 있는데, 오늘 이야기의 주인공은 그중 개인용 집사봇 Butler입니다.

이번에 시도한 건 단순합니다. "Butler가 우리집 가전을 직접 제어하는 게 가능할까?"

진정한 집사형 반려봇이라면 이 정도는 해줘야 하지 않나, 하는 생각에서 출발했습니다. 그래서 일단 Butler에게 인터넷부터 뒤져보게 했어요. 거창한 계획이 있었다기보다는, 늘 그렇듯 "어떻게든 되게만 해보자"는 마음이었습니다.

문제는, 우리집 가전들이 사이좋게 한 브랜드로 통일돼 있질 않다는 겁니다.

  • 세탁기·건조기, 에어컨, 공기청정기 → 삼성

  • 냉장고 → LG

  • 짭탠바이미 TV → 이름 모를 어느 회사 브랜드(아마도 중국산)

  • 동거견 차차가 잘 있나 밖에서 확인하려고 둔 홈캠 2대 → TAPO

제각각인 이 친구들을 어떻게 하나로 묶어서 관리할 수 있는가. 이게 이번 주의 진짜 질문이었습니다.


진행 방법

이번 작업은 대략 이런 흐름으로 흘러갔습니다.

  1. Butler에게 "우리집 가전 통합 제어가 가능한지" 인터넷 리서치 시키기

  2. 브랜드가 제각각이라는 문제를 정리 (삼성 / LG / 정체불명 / TAPO)

  3. 길 찾기 — 어려운 길 하나, 쉬운 길 하나

  4. 쉬운 길 발견 → "당장 해보자!!" → 명령 하나로 Butler에게 학습·설계·탑재까지

길 찾기 — 어려운 길과 쉬운 길

처음 나온 답은 공유기를 중심으로 홈네트워크를 직접 구성하는 길이었습니다. 무슨 무슨 알 수 없는 기술들을 동원해서요. 보자마자 알았습니다. 이건 시간 아주 오래 걸리고, 아주 험한 길이다.

그래서 "좀 더 쉬운 길은 없을까" 하고 더 파보다가 두 가지를 발견했습니다.

  • 발견 ① — 제가 이미 쓰고 있던 삼성 가전관리 앱 SmartThings에, 타사 가전을 등록해서 통합 관리할 수 있다는 사실

  • 발견 ② — 이 앱이 API를 제공하고, 개발자 페이지에서 제가 직접 토큰을 발행할 수 있게 해준다는 사실

📸

스마트싱스 홈페이지 스크린샷

먼저 간 사람의 글을 통째로 Butler에게

저는 이 분야 전문가가 아닙니다. 그래서 늘 쓰는 방법을 또 썼어요. 먼저 이 길을 가본 분의 글을 찾아서, 그걸 Butler에게 통째로 던지는 것. 이번에 참고한 건 SmartThings API를 다룬 블로그 글이었고, 링크를 그대로 Butler에게 건네며 시작했습니다.

네이버 한국뉴스 - 스크린샷

"당장 해보자!!" — 사용한 프롬프트 전문

쉬운 길을 찾고 나니 방법은 정말 간단했습니다. 명령은 사실상 하나였어요.

방금 준 링크를 한번 읽어봐 나는 너를 삼성 스마트싱스에 연결할거야.
삼성 스마트싱스 api 를 사용하고 토큰을 통해 0auth를 얻은 다음에
너를 통해 내가 집에 가진 전자 기기들을 조종하는거지.
네가 다 세팅을 해줘 나는 토큰을 받아올게
그리고 내가 토큰만 네게 주면 모든게 바로 다 가능하도록 준비해놔

요지는 "무엇을 원하는지"만 말하고, "어떻게"는 네가 알아서 해라였습니다. 토큰은 내가 받아올 테니, 너는 내가 토큰만 끼우면 굴러가도록 구조를 설계해서 네 자신에게 탑재해라.

📸

한국어로 된 문자 메시지의 스크린샷

Butler는 받자마자 스스로 판을 정리했습니다. 개인용·빠른 테스트라면 PAT, 앱처럼 계속 쓸 거면 OAuth 2.0, 기기 조회·제어는 SmartThings Devices API. 제가 알려준 게 아니라, 던져준 가이드를 읽고 자기가 알아서 그렇게 결론을 냈습니다.

Butler가 직접 설계한 역할 분담

특히 마음에 들었던 건, 제가 시키지도 않았는데 Butler가 보안 구조부터 알아서 잡았다는 점입니다.

📸

휴대전화에 있는 한국어 문자 스크린샷

Butler가 정리한 역할 분담은 이랬습니다.

  • 마스터(나)가 SmartThings에서 토큰을 발급한다

  • 마스터가 그 토큰을 로컬 자동화 서버/스크립트에 저장한다

  • Butler는 그 구조를 기준으로 기기 목록 조회, 상태 확인, 전원/모드 제어 로직을 설계한다

  • 중요: 토큰을 채팅창에 직접 붙여넣지 않는다. 대신 환경변수나 비밀 저장소에 넣는 방식으로 가야 안전하다

토큰은 내가 들고, 구조는 AI가 짠다. 민감정보는 채팅이 아니라 로컬에. 이걸 제가 강조하지 않았는데도 알아서 챙겨준 게 인상적이었습니다.

"준비 끝냈다" — 자가 탑재 완료

그리고 잠시 후, Butler가 세팅을 끝냈다고 보고했습니다.

📸

스마트 사물 액세스 토큰 - 스크린샷
  • SMARTTHINGS_ACCESS_TOKEN 하나로 기기 조회/상태/전원 제어가 가능한 클라이언트를 추가

  • 자연어 라우팅까지 연결해서 "거실등 켜", "에어컨 상태", "콘센트 목록" 같은 요청을 받을 수 있게 함

  • .env.example, connectors.yaml, router.md, README.md까지 스스로 반영 완료

그리고 자기가 만들어낸 핵심 함수들은 이런 모양이었습니다.

listSmartThingsDevices()
getSmartThingsDeviceStatus(deviceId)
setSmartThingsSwitch(deviceId, true/false)
handleSmartThingsMessage(text, context)

저는 이 함수들이 정확히 어떻게 돌아가는지 다 알지는 못합니다. 다만 한 발 떨어져서 보면, 제가 "원하는 결과"만 말했더니 AI가 저 "외국어"를 스스로 만들어 자기 몸에 이식했다는 거잖아요. 그 과정이 참 묘하게 효율적입니다.

연결된 기기 확인

토큰을 넣자 Butler가 곧바로 집에 있는 기기 목록을 읽어왔습니다.

📸

삼성 스마트싱스 - 스크린샷

캡처에 잡힌 기기들은 이렇습니다.

  • TP-Link(TAPO) 홈캠 2대 — c2c-tplink-camera-webrtc (차차 감시용)

  • 삼성 세탁기 — [washer] Samsung

  • 삼성 건조기 — [dryer] Samsung

  • 삼성 에어컨 — Samsung Room A/C

딱 하나, LG 냉장고만 빠졌습니다. 이건 SmartThings 자체에서도 연결이 왔다 갔다 하는 녀석이라, 쿨하게 포기했습니다. 나머지는 브랜드가 제각각이어도 한 줄로 깔끔하게 잡혔어요. (그리고 티비는 중국산이라 아무래도 불안해서 그냥 제가 안넣었습니다.)


결과와 배운 점

결과 — 10초 뒤, 세탁기가 진짜로 켜졌습니다

그래서, 됐을까요? 됐습니다.

검증 방법은 좀 유치하지만 확실했습니다. Butler에게 "정확히 10초 뒤에 세탁기 전원을 켜줘"라고 시켜놓고, 저는 세탁기 앞에 서서 휴대폰으로 동영상을 찍으며 기다렸습니다. 마치 마술쇼 기다리듯이요.

그리고 10초 뒤, 세탁기가 혼자 켜졌습니다. 🟢

📸

'제조업체의 스마트한 것들'이라는 단어가 포함된 한국 앱 스크린샷

단순한 테스트가 아니라, 자연어 명령 한 줄이 실제 가전의 전원으로 이어진 순간이었습니다.

배운 점 / 나만의 꿀팁

  1. 험한 길이 보이면, 일단 샛길부터 찾자. 공유기로 홈네트워크를 직접 구성하는 길로 직진했으면 한참 헤맸을 겁니다. "이미 쓰는 앱(SmartThings)에 타사 가전을 얹는다"는 우회로 하나가 판을 통째로 바꿨습니다.

  2. 먼저 간 사람의 글을, 요약하지 말고 통째로 AI에게 줘라. 제가 SmartThings API를 이해해서 설명한 게 아닙니다. 먼저 가본 분의 블로그 글 링크를 Butler에게 그대로 던졌더니, 읽고 알아서 PAT/OAuth/Devices API로 길을 정리하고 구조까지 짰습니다. 결국 이게 스터디의 본질 아닐까요. 누군가 먼저 가본 길을 받아서, 그걸 AI에게 넘기는 것.

  3. 토큰은 내가, 구조는 AI에게. "토큰은 내가 받아온다 / 너는 그걸 넣을 자리만 설계해라"로 역할을 나눈 게 깔끔했습니다. 게다가 민감정보를 채팅에 붙이지 말고 로컬 .env에 두라는 보안 원칙을, 제가 시키기도 전에 Butler가 알아서 챙겼습니다.

  4. 좋은 도구를 만나면 시행착오가 사라진다. 지난번 SRT 결제 때는 "검증번호가 사실은 생일이었다" 같은 걸로 한참 싸웠는데, 이번엔 그런 게 거의 없었습니다. 이유는 단순합니다. SmartThings API가 생각보다 너무 잘 만들어져 있었기 때문이에요. 잘 설계된 API + 좋은 참고 글 + 명확한 역할 분담이 만나면, 막힐 일이 별로 없더군요.

시행착오

솔직히 이번엔 거의 없었습니다. 그게 이번 작업의 가장 큰 발견이기도 했어요. 도구(API)가 잘 만들어져 있으면, 사용자가 전문가가 아니어도 "해줘" 한 마디로 여기까지 온다는 것. 굳이 꼽자면 LG 냉장고가 안 잡힌 정도인데, 그건 SmartThings 단에서도 불안정한 부분이라 깔끔하게 보내줬습니다.

도움이 필요한 부분 / 더 해보고 싶은 것

한 번 만들어두니 재사용성이 좋습니다. 다음엔 이런 걸 더 다듬어보려 합니다.

  • 외출 중 차차 상태를 홈캠으로 자동 체크하고 이상하면 알려주는 흐름 (글을 쓰는 시점에 완료 했습니다)

  • 스마트싱스에서 연결할 수 없는 (와이파이 지원기능이 있는) 기타 기기를 제어하기

앞으로의 계획

세 에이전트(Secretary · Butler · 팀 공용 봇)를 각자의 자리에서 계속 키워나갈 생각입니다. 특히 Butler는 일상 전반을 대신 챙겨주는 집사로, 이번 가전 제어를 발판 삼아 한 걸음씩 키워보려 합니다.


도움 받은 글 (옵션)

  • 참고한 외부 글: SmartThings API 사용법을 다룬 네이버 블로그 — https://m.blog.naver.com/nanotoly/223466087209

  • 그리고 늘 그렇듯, 반려 에이전트 만들기 스터디를 이끌어주시는 Doctor 박승현님께 감사드립니다.

3
1개의 답글

뉴스레터 무료 구독