Repository navigation
Home
skrtk98 edited this page Oct 24, 2026
·
2 revisions
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(録画の復号の鍵になる)