Tapo C200をHome Assistantへ入れるときは、映像を見る口と首を振る口を同じ成功判定にしない。TP-Link日本のRTSP/ONVIF FAQは対象製品欄にC200を含め、非バッテリー式Tapoカメラの多くがONVIF Profile Sへ対応すると案内する。ただし同じページは、対象製品欄への掲載が機能対応の約束ではないとも明記している。C200個体とHome Assistantの互換性は、実機で映像が出るまで確定しない。
本稿は2026年9月2日に公式文書を確認した手順で、ロボ図鑑ではC200実機との往復確認を終えていない。Home Assistantにはonvif.ptzアクションがある一方、TP-Link日本は専用アプリ以外のパン・チルトを非対応と明記する。映像が出てもPTZまで保証されたことにはならない。
最初に分ける3つの口
- 映像: TapoのカメラアカウントとONVIF Profile Sを使い、Home Assistantに
cameraエンティティを作れるか試す。 - PTZ: Home Assistantの
onvif.ptzを小さい移動量で試す。日本向けC200では、TP-Linkが第三者互換性を保証していない前提で扱う。専用アプリ以外のパン・チルトは日本公式FAQで非対応とされている。 - AI: PTZが実機で通った場合だけ、確認済みの小さなHome Assistantスクリプトに包む。AssistのLLM会話経路とMCP経路は別々に設定・検証する。
Home Assistantの「TP-Link Smart Home」統合はTapoカメラに対応しているが、2026年9月2日の公式対応カメラ一覧にC200は載っていない。未掲載機種も動く可能性はあると公式は注記するものの、確認済み経路とは数えない。本稿では、TP-Link日本FAQがC200を対象製品欄に含めるONVIF経路を試験する。
先に用意するもの
- 初期設定済みのTapo C200
- C200と同じ信頼できるLANにいるHome Assistant
- Home Assistantの
ffmpeg統合 - Tapoアプリの
高度な設定 → カメラのアカウントで作る専用ユーザー名・パスワード - C200の固定IPアドレス(ルーターのDHCP予約を推奨)
TP-Link日本はカメラアカウントを6〜32文字で作るよう案内している。この資格情報は他サービスと使い回さず、Home Assistantの統合設定だけへ保存する。ONVIFのサービスポートは2020、RTSPは554である。Home AssistantとC200が同じLANにいる構成では、ルーターでこれらのポートをインターネットへ開けない。
また、Tapo Care・microSD・NVR/NAS/ONVIFソフトウェアは同時に3系統すべてを使えないという公式制約がある。すでにmicroSDとTapo Careを併用している場合は、ONVIFを疑う前にこの組み合わせを切り分ける。
1. まず映像だけをONVIFへ追加する
- Home Assistantで
設定 → デバイスとサービス → 統合を追加 → ONVIFを開く。自動検出されたC200があれば選ぶ。 - 検出されない場合は、C200の固定IP、ONVIFポート
2020、カメラアカウントを手動で入力する。 - 追加後、作成された
cameraエンティティでライブ映像を確認する。複数プロファイルが出たら、不要なものは無効化する。
Home AssistantのONVIF統合はProfile S機器を対象にし、ffmpeg統合を前提とする。No usable cameras were foundが出る場合、Home Assistant公式は少なくとも1本の映像プロファイルをH.264にするよう案内している。ここでの完了条件はライブ映像が出ることだけで、PTZの成否はまだ判定しない。
2. PTZは小さい移動を1回だけ試す
Home Assistantで設定 → 開発者ツール → アクションを開き、onvif.ptzを対象のC200へ実行する。最初は低速・小移動にする。
action: onvif.ptz
target:
entity_id: camera.tapo_c200
data:
pan: RIGHT
distance: 0.1
speed: 0.1
move_mode: RelativeMove
camera.tapo_c200は実際に作られたエンティティIDへ置き換える。カメラが少し右へ動いたら、その個体・ファーム・Home Assistant構成ではPTZが成立した記録になる。動かない場合は距離や速度を上げて乱打せず、映像専用のONVIF接続として使う。
公式文書は対象範囲が異なる。Home Assistant公式はPTZ対応ONVIFカメラ向けにonvif.ptzを提供する。TP-Link日本の一般FAQはProfile Sの基本機能にPTZを含め、PTZできない場合の切り分けも案内する。一方、C200を対象製品欄に含む設定ガイドは、専用アプリ以外のパン・チルトを非対応と明記する。したがって、アクションの存在やProfile Sの一般仕様をC200の動作保証へ読み替えず、実機で動いた個体だけを成功とする。動いてもTP-Linkの第三者互換性保証を得たことにはならない。
3. AIには確認済みスクリプトだけを渡す
PTZが実機で通った場合だけ、方向ごとに小さなHome Assistantスクリプトを作る。最初から任意方向・任意速度を受け取る汎用ツールにしない。
alias: Tapo C200を少し右へ向ける
description: 室内のTapo C200へ低速の右向きPTZ命令を1回送る。実行前に撮影範囲を人が確認する。
sequence:
- action: onvif.ptz
target:
entity_id: camera.tapo_c200
data:
pan: RIGHT
distance: 0.1
speed: 0.1
move_mode: RelativeMove
- stop: PTZ命令を送信しました。カメラが実際に動いたことは確認していません。
この説明文は人の確認を強制する仕組みではない。実行前に操作する人が撮影範囲を確認できる運用だけで使う。人物検知などの決定的なゲートを別に持たない構成では、無人確認済みとは扱わない。
AssistのLLM会話経路
LLM会話統合をAssistモードで設定し、スクリプト画面の設定 → 音声アシスタントから、そのスクリプトだけをAssistへ公開する。Home Assistant公式は、公開したスクリプトをLLM会話エージェントの呼び出し可能なツールへ変換すると説明している。Assist Debugで、意図した依頼に対して実際のtool callが起き、Stop actionの「命令送信・動作未確認」という結果が返ることまで確認する。
MCP経路
MCPは別の統合である。Model Context Protocol Serverを追加し、Control Home Assistantを有効にした上で、使うLLM APIと公開範囲を設定する。/api/mcpは設定時に選んだLLM API、/api/mcp/assistは組み込みAssist APIを提供する。MCP Serverは選択したLLM APIが公開するツールを配るが、Assistでスクリプトを有効にしただけで全MCPクライアントへ必ず現れるとは公式文書から断定できない。クライアントのツール一覧と実際のtool callで確認し、見えない場合にカメラ全体や汎用PTZを広く公開して埋め合わせない。
MCP接続には認証が要る。外部から使うならOAuth対応のHTTPS公開URL、またはVPN内のローカルMCPプロキシを使う。long-lived access tokenをソースコード、設定例、リポジトリへ書かず、実行環境の秘密として渡す。映像そのものをLLMへ読ませる場合は、カメラ×LLMレシピのように静止画抽出とvision処理を別段にする。
完了判定
- Home Assistantの
ffmpeg統合を用意した - ONVIF統合でC200のライブ映像が出るか判定した
- PTZは1回の小移動で成功/不成立を記録した
- 不成立なら映像専用として止め、第三者互換性が保証されない操作を繰り返していない
- 成功した場合だけ、固定方向・低速・小移動のスクリプトを作った
- AssistとMCPを別経路として設定し、実際のtool callと結果を確認した
- 資格情報・MCPトークンをLLMの入力やリポジトリへ渡していない
ロボ図鑑ではこの手順をまだ実機確認していない。映像・PTZ・AIツール呼び出しの3段をすべて往復確認するまで、実測済みとは扱わない。