ロボ図鑑

RoborockをAIから動かす — Home Assistant MCPで安全に接続する

公開: 2026-08-17 / 更新: 2026-08-20

このガイドの目的は、Roborockを直接リバースエンジニアリングすることではない。Home Assistantの公式Roborock統合と公式MCP Serverを間に置き、AIへ見せる範囲を自分で制御しながら、まず状態確認・掃除開始・ドック帰還まで通す。

本稿は2026年8月17日に公式文書を突き合わせた手順で、ロボ図鑑ではまだ実機確認を終えていない。画面名や対応機能はHome Assistantと機種の更新で変わり得る。実測済みの印は、実機で往復確認するまで付けない。

先に結論: いちばん保守しやすい配線

AIクライアント
  └─ MCP (Streamable HTTP)
       └─ Home Assistant /api/mcp/assist
            └─ Assistに公開した vacuum エンティティ
                 └─ Home Assistant公式Roborock統合
                      └─ Roborock S8など

Roborockの公開済み開発者API文書を前提にせず、Home Assistant公式統合へ寄せる。公式統合は機種差・認証・ローカル通信とクラウドフォールバックを一段吸収してくれる。AI側はRoborock専用の非公式MCPを直接抱えず、照明や空調と同じHome Assistantの口で扱える。

0. 接続前の安全確認

掃除ロボットは画面内のデータではなく、床の上を動く機械だ。最初のAI操作は必ず人が見ている場所で行う。電源コード、細いひも、液体、段差付近、ペットの食器を片付け、停止とドック帰還を手元のRoborockアプリまたはHome Assistant画面から実行できる状態にしておく。

AIへ公開するのは、最初は対象の掃除機だけにする。Home Assistantも、Assistへ公開するエンティティを必要最小限にするよう案内している。鍵・ガレージ・警報などを同じ勢いで公開しない。

1. RoborockをHome Assistantへ登録する

前提は、掃除機が公式Roborockアプリへ登録済みであること。Mi Homeへだけ登録した古い機種は経路が異なる。Home Assistantで次の順に進む。

  1. 設定 → デバイスとサービス → 統合を追加 を開く。
  2. Roborock を選ぶ。
  3. Roborockアプリで使うメールアドレスを入力する。
  4. メールへ届く確認コードを入力する。リージョンは、問題がなければ Auto のままにする。
  5. vacuum.* エンティティが作られ、Home Assistantの画面から掃除開始とドック帰還が通ることを先に確かめる。

公式文書ではS・QV・Qrevo・Sarosシリーズを完全対応としている。ロボット掃除機はコマンドと定期取得でローカル通信を優先する一方、初期設定、フォールバック、マップやルーチンにはクラウドを使う。インターネットを遮断した完全ローカル運用にはならない。 Home Assistantから機体のTCP 58867とUDP 58866へ到達できるようにし、IPアドレスはDHCP予約で固定するのが公式の推奨である。

2. Home Assistant側だけで動作を切り分ける

MCPを足す前に、Home Assistant内で次の4点を確認する。ここで失敗するならAI側を触っても直らない。

部屋指定を使う場合は、掃除機エンティティの設定から Map vacuum segments to areas を開き、Roborockのマップ上の部屋をHome Assistantのエリアへ割り当てる。公式文書の Cleaning by area がHome Assistant内で動くところまでを先に確かめる。Roborockは部屋を指定した清掃には対応するが、部屋を任意の順番で清掃する指定には対応しない。

3. 対象の掃除機だけをAssistへ公開する

設定 → 音声アシスタント → 公開 を開き、対象の vacuum.* エンティティをAssistへ公開する。MCP統合のLLM API選択でも Assist を選ぶ。以後はAssist APIを明示する /api/mcp/assist を使う。ここで公開していない機器は操作対象にならない。

名前とエリアは曖昧にしない。たとえばエンティティ名を「掃除機」、エリアを「リビング」と設定し、同じ名前の機器を複数作らない。AIへ見せる機器が増えるほど選択ミスとコンテキスト量が増える。

4. 公式MCP Serverを追加する

設定 → デバイスとサービス → 統合を追加 から Model Context Protocol Server を追加し、Home Assistantの制御を許可する。Assist APIを直接指定するエンドポイントは次の形になる。

https://<Home Assistantの外部URL>/api/mcp/assist

公式MCP ServerはStreamable HTTPを使う。外部から接続するクライアントでHome Assistantをインターネット公開する場合はOAuthを優先し、クライアントIDにはHome Assistantではなく接続元アプリのベースURLを指定する。Home AssistantをLANまたはVPN内だけで使う場合は、公式文書が示すようにローカルMCPプロキシと長期アクセストークンを使う経路がある。長期トークンを記事、チャット、リポジトリへ貼らない。

接続後、AIクライアントから次を1件ずつ試す。

  1. 「リビングの掃除機の状態を教えて」
  2. 「リビングの掃除機で掃除を開始して」
  3. 「リビングの掃除機をドックへ戻して」

各操作の後にHome Assistantの状態と実機の両方を見る。AIの返答だけを成功判定にしない。標準Assistには掃除機の停止intentがないため、停止はRoborockアプリまたはHome Assistant画面から行う。

5. 部屋指定と停止は『見えているツール』を確認してから

Home AssistantのRoborock統合には、マップと部屋IDを返す roborock.get_maps や、画面上の Cleaning by area がある。ただし、Home Assistant内に存在するすべての統合固有アクションが、そのままMCPのAssist APIへ自動公開されるとは限らない。 一般的な掃除開始が通ったことを、部屋指定や停止まで通った証拠にしない。

部屋指定がMCPから直接見えない場合は、Home Assistant側に「キッチンを掃除する」のような引数なしスクリプトを作る。UIでは Clean area with vacuum cleaner を選び、対象の掃除機と Areas の両方を指定する。YAMLでは target.entity_id と必須の cleaning_area_id を省略しない。

action: vacuum.clean_area
target:
  entity_id: vacuum.<対象の掃除機>
cleaning_area_id:
  - kitchen

MCPから停止も必要なら、別の専用スクリプトで vacuum.stop を呼ぶ。こちらも target.entity_id を対象機へ固定し、省略しない。対象を省略すると接続中の全掃除機へ作用し得る。

action: vacuum.stop
target:
  entity_id: vacuum.<対象の掃除機>

スクリプトの説明には対象と動作を短く明記し、スクリプトの設定からAssistへ公開する。Home Assistant公式文書では、公開したスクリプトはLLM向けの呼び出し可能なツールとして扱われる。

それでもMCPクライアントのツール一覧や実際のツール呼び出しに現れないなら、そのクライアントとHome Assistantの組み合わせでは未接続である。『AIが理解したはず』で押し切らず、Home AssistantのAssist Debugとクライアント側のツール呼び出し記録で確認する。

6. 運用上の限界

完了判定

次の5項目を実物で確認できれば、最初の接続は完了である。

機種の接続性評価と非公式経路の比較はRoborock S8の標本、Home Assistant自体の接続性はHome Assistantの標本を参照。

出典(2026-08-17確認)

他のガイド