SmartThings, 로보락 AI 연동 (Feat. 차차오빠님)

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 에이전트에게 레퍼런스 링크를 읽혀주면 세팅 속도가 훨씬 빨라짐

앞으로의 계획:

• 특정 시간에 자동 청소 스케줄 설정

• 세탁 완료 후 건조기 자동 이어서 돌리기 자동화

───

도움 받은 글

차차오빠님 사례게시글

python-roborock GitHub

1
1개의 답글

뉴스레터 무료 구독