Self-host your own Roborock cloud without rooting or hardware modification
루팅·하드웨어 개조 없이 Roborock 클라우드를 로컬에서 운영하기
Roborock 로봇청소기의 클라우드 백엔드를 집 안의 서버로 대체하는 오픈소스 프로젝트입니다. 인터넷 연결 없이도 지도와 방별 청소를 이용할 수 있지만, 모델별 인증서 호환성과 펌웨어 업데이트 위험을 확인해야 합니다.
- 주제
AI 요약
Roborock 청소기는 로컬 프로토콜로 Home Assistant와 통신하지만, 지도 데이터가 제조사 클라우드에 묶여 있고 클라우드에 연결하지 못하면 네트워크 인터페이스를 반복해서 재시작하는 문제가 있습니다. 타사 연동도 Roborock의 인증 방식이 바뀔 때 자주 고장 납니다. Local Roborock Server는 이 백엔드를 집 안에서 운영해 청소기가 공식 클라우드 대신 로컬 서버에 연결되도록 합니다.
로컬 서버 구성
프로젝트는 HTTPS와 MQTT 서버를 제공합니다. 사용자는 제어하는 도메인의 DNS를 로컬 서버로 연결하고, 초기 페어링 절차를 마친 뒤 청소기를 등록합니다. 필요한 구성은 로컬 DNS 재작성 기능(Pi-hole, AdGuard Home 또는 라우터 DNS), Docker Compose나 Home Assistant 애드온을 실행할 장치, 유효한 SSL 인증서입니다. 초기 등록에는 Wi-Fi를 지원하는 보조 컴퓨터도 필요합니다. 인증서는 Cloudflare DNS-01로 자동 관리하거나 직접 준비할 수 있습니다. 모델에 따라 신뢰하는 인증서 체인이 다르므로 지원 기기 목록을 확인해야 하며, 대부분은 ZeroSSL을 먼저 권장하고 구형 기기 등에는 Actalis가 더 잘 맞을 수 있다고 안내합니다.
기능과 제한
지도 실시간 스트리밍과 방별 청소를 인터넷 없이 사용할 수 있으며, 청소기를 분해하거나 납땜하거나 부트로더를 해제할 필요가 없습니다. 새 기기를 기존 Roborock 클라우드 계정에 등록하지 않고 설정하는 절차도 지원합니다. Home Assistant 애드온, 오픈소스 모바일 앱 LocalRock, 패치한 Android 앱 또는 iOS MITM 프로필을 활용할 수 있습니다. 대부분의 Roborock 기기와 최신 v2 프로토콜 모델을 지원하지만, Q7 같은 보급형 Q 시리즈는 인증서 검증 방식 차이로 현재 지원하지 않습니다. Dreame와 Eufy 지원 여부도 댓글에서 질문이 나왔지만, 작성자는 Dreame는 지원하지 않는다고 답했습니다.
현재 펌웨어 업데이트는 지원하지 않습니다. 댓글에서 프로젝트 작성자는 펌웨어 업데이트가 진입에 활용한 취약점을 막을 가능성이 있어 당분간 업데이트를 보류한다고 설명했습니다. 로컬 서버 설정을 마친 뒤 공식 클라우드로 잠시 돌아가 업데이트하는 방법은 있지만, 업데이트 후 로컬 서버에 다시 연결하지 못할 위험이 있다고 덧붙였습니다. 프로젝트는 MIT 라이선스로 공개됐으며, 실행에 따른 기기 손상이나 네트워크 노출은 사용자가 감수해야 한다고 명시합니다.
Reddit 반응
- @u/headinthesky — 제 청소기는 시간 초과가 자주 발생합니다. 네트워크에서 차단한 원격 호출 때문인 것 같습니다.
- @u/DivergingDog — 네, 청소기가 집으로 보내는 호출이 많아서 사용자 네트워크 설정에 따라 작동이 깨지거나 느려질 때가 있습니다.
- @u/tismo74 — 오늘 오후에 뭘 할지 정했습니다. 공유해 주셔서 감사합니다. 제 Q5 Pro는 카메라나 마이크가 없다고 생각하지만, Home Assistant 연동에서 지도가 자꾸 끊겼습니다. 이 방법으로 해결되면 좋겠습니다.
- @u/LEpigeon888 — 이 프로젝트는 제가 전에 찾은 roborock-offline과 비교하면 어떤가요? 코드는 훨씬 짧아 감사하기 쉬워 보이지만, 둘 다 자세히 살펴보지는 않았습니다. 멋진 프로젝트네요.
- @u/DivergingDog — 그 프로젝트는 본 적이 없습니다. 구형 청소기에는 잘 맞을 수 있다고 생각합니다. 최신 모델은 지도 관리, 루틴, 예약 같은 기능을 클라우드에 많이 의존합니다. 다만 로컬 지도 요청도 청소기가 클라우드에서 볼 수 있는 MQTT 토픽으로 응답하는 구조라서, 실제로 작동할지는 확신하기 어렵습니다.
- @u/Mondo-Shawan — 클라우드에서는 어떤 작업을 처리하나요?
- @u/Patriark — 확실히 아는 곳은 Roborock뿐입니다.
- @u/DivergingDog — 최소한 대부분의 데이터가 클라우드를 거칩니다. 루틴과 예약 같은 기능도 클라우드가 관리합니다.
- @u/Sob312 — 업데이트는 어떻게 하나요? 오류가 생겼을 때만 업데이트하나요?
- @u/DivergingDog — 청소기 펌웨어 업데이트라면 현재는 지원하지 않습니다. 펌웨어 업데이트가 취약점을 막을 수 있어서 일단 보류하는 편이 낫습니다.
- @u/AeroelasticCowboy — 펌웨어를 업데이트할 수 없다는 건가요? 문제가 있어 보이는데요.
- @u/DivergingDog — 원하면 공식 클라우드로 잠시 돌아갈 수 있습니다. 설정 후 전환은 쉽지만, 그 과정에서 로컬 서버에 다시 연결하지 못하게 될 위험은 있습니다.
- @u/Equivalent_Glove_664 — 초기 설정 과정에서 취약점을 이용해 청소기의 연결을 돌리는 방식이 꽤 영리하네요.
- @u/DivergingDog — 감사합니다. 다른 분들의 작업을 많이 바탕으로 삼았습니다. Dennis Giese와 rovo89의 도움 없이는 만들기 어려웠을 겁니다.
- @u/Hobofan94 — 제 배우자는 Roborock 앱 때문에 자주 불만을 말했습니다. 기능을 잃거나 Roborock이 서버 쪽을 바꿔 문제가 생길까 봐 클라우드 연결을 끊지 못했는데, 호환 앱까지 포함해 전체 스택을 직접 운영할 수 있다면 이제 바꿀 때인 것 같습니다.
- @u/elboyoloco1 — 그러면 Roborock 앱은 못 쓰나요? 구역이나 방은 어떻게 설정하나요?
- @u/DivergingDog — 사용할 수 있습니다. 공식 앱을 작동시키거나, 서버에 연결하는 별도 앱 LocalRock을 사용할 수 있습니다.
원문: GitHub 프로젝트 / 번역·요약: Trawling