ロボ図鑑

Tapo C200のPython接続 — RTSP・ONVIF・pytapoの役割分担

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

Tapo C200には、映像を取り出す公式の口と、設定・状態へ触る非公式の口がある。最初から全部をpytapoへ寄せず、映像=RTSP/ONVIF、設定と状態=pytapoに分けると、どこで壊れたかを切り分けやすい。

本稿は2026年8月20日に公式文書とpytapoの現行READMEを確認した手順で、ロボ図鑑では実機確認を終えていない。ファームウェアやハードウェア版で挙動が変わり得るため、実測済みとは扱わない。

先に用意するもの

カメラ用アカウントはTP-Linkクラウドのログインとは別物である。公式FAQは6〜32文字で作成するよう案内している。この資格情報は映像と制御の両方へ届くので、他サービスと使い回さない。ルーターのDHCP予約でカメラのIPを固定しておくと、再起動後に接続先が変わらない。

1. まず公式RTSPだけを確認する

高画質と低画質の口は次の2本である。認証情報はURLへ埋め込まず、プレイヤー側の認証欄に入力した方が、シェル履歴やログへ残りにくい。

rtsp://<camera-ip>/stream1
rtsp://<camera-ip>/stream2

VLCやffprobeで映像が読めれば、ネットワーク・カメラアカウント・映像配信は成立している。ONVIFクライアントでも同じカメラアカウントとIPを使える。TP-Link公式FAQは、第三者ソフト経由ではパン・チルト操作を保証しないと明記している。RTSP/ONVIFで映像が見えたことを、首振り制御まで使える証拠にしない。

外から見るためにTCP 554をインターネットへ直接開ける構成は避ける。必要ならVPN経由でLANへ入る。microSDカードとTapo Careを同時利用している構成ではRTSPを使えない場合がある、という公式注意も先に確認する。

2. pytapoは読取から始める

現行READMEの最小例は、カメラ用アカウントとIPでクライアントを作り、基本情報を取得する形である。

python3.13 -m venv .venv
source .venv/bin/activate
python -m pip install pytapo
from pytapo import Tapo

camera = Tapo(
    "192.168.1.52",
    "<camera-account-user>",
    "<camera-account-password>",
)

print(camera.getBasicInfo())

最初の完了条件は、例外なく基本情報が返ることだけにする。認証方式は機種・ファームウェアで異なるとpytapo自身が明記している。カメラ用アカウントで認証できない場合に限り、READMEの代替として admin とTP-Linkクラウドパスワードの組み合わせを確認する。ただしクラウドパスワードをコードへ直書きしない。

3. AIへ渡す道具は読取と操作を分ける

LLMへ最初に渡すツールは、get_basic_infoのような読取だけでよい。戻り値から機種・ファームウェア・状態を確認できた後に、必要な操作だけを個別に許可する。

get_camera_info()        # 読取
get_stream_endpoint()    # 読取
set_privacy_mode(...)    # 操作・確認必須
pan_tilt(...)            # 物理操作・確認必須
reboot_camera()          # 復旧操作・確認必須

pytapoは非公式ライブラリで、テスト実行中に首振り、プライバシーモード変更、再起動などが起こり得るとREADME自身が警告している。関数一覧をそのままLLMへ公開せず、自分が用途を説明できる操作だけをallowlistにする。 カメラの撮影範囲、マイク、保存先、同居人・近隣のプライバシーも物理的な安全条件に含める。

完了判定

機種の接続性と映像をLLMへ渡す構成はTapo C200の標本カメラ×LLMレシピも参照。

出典(2026-08-20確認)

他のガイド