SmartThings AI 연동 소개
같은 스터디를 진행중인 차차오빠님이 AI로 SmartThings 가전을 연결한 사례게시글을 보고 너무 재미있어 보였어요. 바로 링크를 AI 에이전트(설기)한테 읽게 했고, "나도 이거 해보자!"가 시작이었습니다.
평소에 "세탁기 다 됐나?", "로봇청소기 켜야 하는데 귀찮다" 같은 생각을 자주 했는데, 텔레그램 채팅 한 줄로 집 가전을 제어할 수 있다면 너무 편하겠다 싶었어요.
───
진행 방법
사용 도구
• OpenClaw (AI 에이전트 플랫폼)
• SmartThings API — 세탁기·건조기·냉장고 연동
• Python roborock 라이브러리 — 로보락 Q Revo 연동
• 텔레그램 봇 — 제어 인터페이스
───
1단계: SmartThings 가전 연동
차차오빠님 사례를 참고해서 SmartThings 연결은 비교적 쉽게 진행했어요. Samsung 계정에 연결된 세탁기·건조기·냉장고를 SmartThings API로 등록하고, 세탁/건조 완료 시 텔레그램으로 자동 알림이 오도록 설정했습니다.
# SmartThings 기기 상태 확인
import requests
def get_device_status(token, device_id):
url = f"https://api.smartthings.com/v1/devices/{device_id}/status"
headers = {"Authorization": f"Bearer {token}"}
r = requests.get(url, headers=headers)
return r.json()2단계: 로보락 연결 (다른 방법 탐색)
문제가 생겼습니다. 우리 집 로보락은 SmartThings에 연결이 안 됐어요. 😅
그래서 설기와 함께 다른 방법을 찾아봤고, Python roborock 라이브러리를 발견했습니다. 이 라이브러리를 이용해 로보락 계정으로 직접 로그인하고 기기를 제어하는 방식으로 해결했어요.
# roborock_login.py — 최초 1회만 실행 (기기 정보 저장)
import asyncio
from roborock.api import RoborockApiClient
async def main():
client = RoborockApiClient('이메일@naver.com')
await client.request_code() # 이메일로 인증코드 발송
code = input("인증코드: ").strip()
login = await client.code_login(code)
data = await client.get_home_data(login)
for d in data.devices:
print(f"기기: {d.name} / duid: {d.duid}")
asyncio.run(main())
# roborock_control.py — 실제 제어
from roborock.roborock_typing import RoborockCommand
COMMANDS = {
"start": RoborockCommand.APP_START, # 청소 시작
"stop": RoborockCommand.APP_STOP, # 청소 정지
"dock": RoborockCommand.APP_CHARGE, # 충전대 복귀
}
# 사용법: python3 roborock_control.py start───
3단계: 텔레그램 AI 에이전트 연동
OpenClaw AI 에이전트(설기)가 텔레그램 메시지를 인식해서 스크립트를 실행해요.
실제 대화:
언니: 바닥청소 시작
설기: 🤖 로보락 Q Revo — start → 로보락 청소 시작했어! ✅
언니: 청소 취소해줘
설기: 🤖 stop + dock 실행 → 충전대로 복귀 중 🐾
───
결과와 배운 점
결과:
• 텔레그램에서 "바닥청소 시작" 한 마디로 로봇청소기 즉시 출발 ✅
• 세탁·건조 완료 시 자동 알림 ✅
• 앱을 열 필요 없이 채팅 한 줄로 가전 제어 ✅
시행착오:
• 로보락 rate limit이 가장 큰 장벽이었어요. 인증코드를 여러 번 요청하면 로보락 서버가 몇 시간 동안 차단해요. 첫 시도에서 한 번에 성공하는 게 핵심!
• HomeDataProduct.devices 속성 오류 → HomeData.devices로 접근해야 함 (라이브러리 구조 파악 필요)
• RoborockMqttClient에 duid를 직접 전달하면 안 되고, DeviceData 객체로 감싸서 넘겨야 함
나만의 꿀팁:
• SmartThings에 연결 안 되는 기기도 포기하지 말 것! Python 라이브러리를 찾아보면 대부분 방법이 있어요
• AI 에이전트에게 레퍼런스 링크를 읽혀주면 세팅 속도가 훨씬 빨라짐
앞으로의 계획:
• 특정 시간에 자동 청소 스케줄 설정
• 세탁 완료 후 건조기 자동 이어서 돌리기 자동화
───