Skip to content
skrtk98 edited this page Oct 24, 2026 · 2 revisions

Tapo C220 の調査結果

TP-Link Tapo C220 を、RTSP・ONVIF と Tapo 独自のプロトコルでどこまで操作できるか、実機で調べた結果をまとめる。 使い方とライブラリの説明はリポジトリの README にある。この Wiki には、調べた中身(実測の値、生の応答の形、試してうまくいかなかったこと)を置く。

調べた個体と環境

項目 値
機種 Tapo C220(ONVIF の Model Tapo C220、Tapo API の device_info C220 2.0 IPC、device_type SMART.IPCAMERA)
ハードウェア 2.0
ファームウェア 1.3.1 Build 260515 Rel.2411n
使ったもの pytapo 3.4.26、ffmpeg 6.1.1、PyAV 17.1、aiortc 1.15、Chromium
ネットワーク 同じ LAN(ping の往復は平均 2.08ms、最大 5.3ms、損失 0%)

ここに書いた振る舞いは、この個体とこのファームウェアで見たものである。別の版では変わりうる。 Tapo 独自のプロトコルはどれも非公式で、ファームウェアの更新で使えなくなる可能性がある。

経路

ポートを走査すると、開いていたのは 443・554・2020・8800 の4つ。80・8554・1935・20002 は閉じていた。

分類 経路 ポート 通信の形 認証 使いみち
標準 RTSP 554 RTP を流し続ける カメラアカウント(Digest) 映像・音声、録音・録画、静止画
標準 ONVIF 2020 SOAP を1往復ずつ カメラアカウント(WS-Security) 首振り、検知イベント
Tapo 独自 制御 API 443 暗号化した JSON を1往復ずつ Tapo アカウント(ユーザは admin) 設定、録画の一覧、検知の記録
Tapo 独自 ストリーム 8800 1本の接続に流し続ける Tapo アカウント(接続ごとに Digest) スピーカー、録画の取り出し

「カメラアカウント」は Tapo アプリの「高度な設定」→「カメラのアカウント」で作るもの。「Tapo アカウント」はクラウドのアカウントで、そのパスワードを使う。

どの機能を、どの経路で実現できたか

機能 経路 結果
映像・音声のストリーミング RTSP できる
録音・録画 RTSP を ffmpeg で保存 できる
静止画 RTSP から1枚切り出す できる(ONVIF の GetSnapshotUri は無い)
首振り ONVIF PTZ できる(絶対・相対・連続・停止・プリセット)
スピーカーからの再生 Tapo 独自のストリーム(8800 番) できる。RTSP・ONVIF には音声を送る経路が無い
microSD の録画の一覧と取り出し Tapo 独自の API(443 番)とストリーム(8800 番) できる。等速でしか届かない
設定の読み書き Tapo 独自の API(443 番) できる
検知イベントの受信 ONVIF の Subscribe(カメラから通知させる) できる。PullPoint は使えない
警報をいますぐ鳴らす Tapo 独自の API 確かな方法は見つからない。スピーカーへサイレンの音を送って代える

ページ

  • RTSP:ストリームの中身、SDP、ビットレートと到着間隔の実測、RTCP の時刻の乱れ
  • ONVIF:サービスと能力、プロファイル、Fault
  • PTZ:座標と向き、Timeout、移動の速さ
  • 8800 番のストリーム:認証、スピーカー(talk)、録画の取り出し(playback)のワイヤ形式
  • microSD の録画:一覧の形、取り出しの速さ、終わり方、一覧と取り出しの衝突
  • 制御 API と設定:エラーコード、応答の形、検知の感度、警報を鳴らす API を探した経緯
  • 検知イベント:PullPoint が使えない理由、Notify の中身、カメラの検知の記録
  • 長時間とメモリ:40 分の連続視聴、メモリの増え方
  • WebRTC でブラウザへ送る:載せ替え、時刻の付け直しの効果、録画の再生

公開するときに伏せるべき値

カメラの応答には、公開してはいけない値が含まれるものがある。ここでは伏せた。

  • ONVIF の GetDeviceInformation:シリアル番号
  • Tapo の getDiagnoseMode:設置場所の緯度・経度と端末の名前
  • Tapo の getThirdAccount:公開鍵
  • Tapo の getDeviceIpAddress:IP アドレス、ゲートウェイ、DNS
  • 8800 番の認証の応答:nonce(録画の復号の鍵になる)

Clone this wiki locally