コモノポリタン

コモノ、デジモノが好きなKomonopolitan住民 (はてなダイアリーからの引っ越しです)

【Home AssistantでDIY Smart Home】いまさらネットワークカメラTapo C200接続!

「Home Assistant(Hass.io)でホームオートメーション 再起動!」シリーズです。

 『「Amazonプライムデーで、Alexaとつながるスマートデバイスが特集されていました。tp-linkのネットワークWifiカメラTapo C200も3000円ちょっとという値段で売りに出されてました。ということで」という書き出しをしたためたのが2020年の年末…。一応、操作できるようになったのですが、使いどころ見つけることもなくお蔵入りに。で気が付いたらTapo C210が出る始末。よし「書きかけ記事の消化強化期間中!」ということで Tapo c200をHome Assistantとつないで活用してみましょう!』
 と、書き出したのが2022年の1月…。さて今は何年何月何日…。

 2020年の年末にTapo C200を買った後、「3Dプリンタ監視用にAmazon FireタブレットにIPカメラのソフトを入れ」⇒「3Dプリンタ制御用のOctoPiにUSBカメラをつなぎ」という3Dプリンタ絡みでカメラをHome Assistantに組み込んだりしました。
 しかしながら3Dプリンタまわりは、結局、手作り感の無いAdventurer4に落ち着き*1、お手製IPカメラの出番はなくなりました。
 ということで、しばらく放置してましたが、まあ、在宅勤務も少なくなって家を空けることが多くなってきたので、防犯の一環で、Tapo C200をHome Assistantにつないで、パンとかチルトもできる防犯的(?)ネットワークカメラを設置しましょう。

[2023/06/17] 後継機(C210)の設定もしてみました
maky-ba.hatenablog.com

この記事の前提条件
Home Assistant 2023.5.4
HassOS 10.2
Server Raspberry Pi 4(4GB)

 上記バージョンを前提とした手順です。 (最新版では動かないこともあるかもしれませんが、私が使っている限り、備忘録を兼ねて最新化してゆきたいとは思っています)

1. 準備

tp-link tapo C200
パンチルト ネットワーク Wi-Fiカメラ。1080HD、ナイトビジョン、水平360°・垂直114°の首振り(水平は真後ろ回らないところあるので、350°ぐらいかと…)
Amazon.co.jpでセールで買いました。
Kabenjee 電源延長ケーブル 3m x 2
DC 5.5mm, Φ2.1mmのIPカメラ用延長ケーブル。tp-link/tapoのカメラにぴったり。
Amazon.co.jpで買いました。

2. HACSの導入

 いままでカスタムコンポーネントとかを導入するときは、自分でダウンロードしてフォルダに展開してゴリゴリ自分で設定してきました。そろそろHACS(Home Assistant Community Store)を活用するようにしたいと思います。
hacs.xyz

 「DONWLOAD」をクリックすると「Prerequisites」(前提条件)のページが表示されます。いろいろ書いてありますが、まあ満たせないものは無いと思います。
 あ、ここには書いてありませんが(昔は書いてあった気がするのですが)GitHubのアカウントは必須です。もしまだ作っていないなら登録を。既にユーザーならユーザ名・パスワードを思い出しておいてください。

 あとはHACSのページの言うがままですが、ちょこっと画面が変わったりしているので、メモ代わりに実際に行った手順を載せておきます。

 次のステップはHACSをDonwload・展開するのですが、私はHassOSを使っているので「Advanced SSH & Web Terminal」アドオンで下記インストールスクリプトを動かしてHome Assistantサーバ上にHACSを展開します。

wget -O - https://get.hacs.xyz | bash -

その後、

  1. Home Assistant再起動
    今は「設定」⇒「システム」と行くと右上に電源ボタンが表示されるのでそれを押すと「クイックリロード」と「Home Assistantを再起動」が表示されます。再起動を。
  2. ブラウザキャッシュクリア
  3. 「設定」⇒「デバイスとサービス」の右下の「+統合の追加」からHACS
  4. 次に「HACSを使う前に了解しておいていただきたいこと」のウィンドウが表示されますが、全部チェックを入れる以外にHACSを使う道はありません*2
  5. HACSはGitHubのdevice OAuthを利用しているので、Hassサーバー上のHACSをGitHubに登録しないといけません。この画面が出たら、下のコードをメモります*3
  6. https://github.com/login/deivceを開いて、GitHubにログインし、先ほどのコードを入力します。
  7. 右下の「Authorize hacs」*4を押すと、おめでとう画面が出ます。
  8. HomeAssistantの画面で「設定」⇒「デバイスとサービス」へ進むと、一覧の中にHACSが表示されていれHACSの導入は完了です。サイドバーにも「HACS」出ていますね。

3. Tapo C200の初期設定

  1. TP-Link Tapo(Apple App StoreもしくはGoogle Play)のインストール
    tp-linkが中華系企業でちょっとドキドキ(まあ、大手なのであまり派手に問題なことはできないと思いますが)なのですが、初期設定まではTapoアプリにお世話にならないといけません。
  2. メールアドレスをアカウント名に、パスワードを設定してユーザ登録を済ませると、デバイス追加画面になります。
  3. あとは「電源オン&LEDを確認」に始まって、ネットワークの設定やら、ローカルストレージの設定やら言われるがままに進みます。
    【!!注意!!】「ファームウェアを最新にしますか?」と聞かれても絶対にアップデートしないでください。アップデートすると大変なことになる可能性が…。
  4. 設定はこんな感じです。ここから「IPアドレスの確認」と「カメラアカウントの作成」をしておきます。IPアドレスDHCPで一旦割り当てられているのを確認できますが、DHCPで再割り当てされないようにルーターの機能で固定化しておきましょう。
  5. カメラアカウントはカメラの画像のライブストリームを外部から使う時に使用するので今回作成必須です。当然ですが、ユーザ名とパスワードは覚えておきましょう。

 これでtapoアプリの出番は終わりです。心配なら、C200がインターネットから(より正確にはtp-linkから)切り離されるように、ルータでIPフィルタ等を掛けておきましょう。これtapoアプリから見えなくなります。
 設定を変えたくなったらtapoアプリをカメラと同じネットワークにすれば、ネットワーク内で見つけて接続してくれるので大丈夫(?)。

4. Home AssistantでのC200初期設定

4.1. HACSの「tapo: Cameras Control」の設定

  1. 「設定」⇒「デバイスとサービス」の右下「+統合の追加」から「Tapo: Cameras Control」を追加する。IPアドレスを聞かれるので、先ほど固定化したIPアドレスを入力
  2. 次に先ほど作ったカメラアカウントのユーザ名とパスワードを入力。録画にはTapoアプリを作った時のパスワードが必要とのことなので、それも入れておきます。
  3. そろそろ設定も終盤(とポップアップ画面が言っています)。設定画面で「自動時刻合わせ」と「音量検知」にチェックボックスを入れて、完了!

4.2. 「統合」の確認

 「tapo: Cameras Control」HACSは、結構盛りだくさんのエンティティを生成してくれます。うまく動くようになっているか確認しましょう。

  1. 「設定」⇒「デバイスとサービス」の中から「tapo: Cameras Control」のカードを探します。
  2. 開くと、こんな感じです。ほんと色々ありますね、盛り沢山。まずはコントロールだけでも11個あります。
  3. その下のセンサーの所にはHD_StreamとSD_Streamの2つがあります。どちらかをクリックすると画像のポップアップが出ます(今は、プライバシーモードにしているので黒画面ですが)それなりに見えます。遅延は激しいですが。
  4. さらにその下に設定用のエンティティが14個!

tapo C200で出来ることはほぼココで確認出来るようになっています。

5. 据付(天井)

 入口監視用に玄関の天井に据え付けたいと思います。C200のセットにはカメラマウント台、マウント用のネジ/アンカーがセットなっているので、他に何も買わなくても壁や天井に据え付けることが出来ます。
 が、借家でもないのに「非浸食型IoT」を標榜している私としては、例によって穴の目立たない方法を考えます。ゴリゴリ穴を開ける人は読み飛ばしてくださいね。

5.1. カメラの土台(マウント)を取り付けるマウントの設計と印刷

 マウント台の土台にマウント台をネジ止め(同梱されている木ネジではなく)し、マウント台の土台は愛用のマジッククロス(細い3本のピンを交差するように挿して壁に固定するモノ)で固定する。そして、このマウント台に本体を据え付けるという方式。うまくいけば天井には細かい穴が3 x 4 = 12個開くだけで固定されるはず。

 3Dモデリングして印刷した結果は、まあ、こんあ感じ。必要部品一式も並べておきました。

 いつも通りThingiverseに部品(.stlファイル)置いておきました。 www.thingiverse.com  

5.2. マウント台の土台&マウント台の据付とカメラの取り付け

 「マウント台(製品付属)」を「マウント台の土台(3Dプリント)」にねじ止めします。こんな感じになります。

 で、これを玄関の天井の隅にマジックロスのピンで留めます。


 C200本体を押し当ててグイっと捻ると固定完了です。

 電源ケーブルは白色の延長ケーブルに交換してありますので、あまり目立ちませんね。

5.3. ケーブル取り回し

 白色で目立たないとは言え、だらーんとぶら下がって来たら目立つので、百均で配線カバーを買ってきて、電源ケーブルはカバーの中を通します。

 配線カバーはこれを使いました。以前はツルツルしていない壁紙風の配線カバーがあった気がするのですが、無くなってました。百均は一期一会だからなぁ。

6. 動作確認

6.1. 動画ストリーミングを確認

  1. サイドメニューから「メディア」を選ぶと、「Camera」「Local Media」「Tapo: Recordings」「Text to Speech」のタイルが表示されます。

  2. 「Camera」の中に、「Tapo_C200_01_SD...」「Tapo_C200_01_HD...」があって、クリックするとカメラ画像が見えます。ちょっと遅れますが、ほぼリアルタイム動画。(下の画像はカメラが後ろ向き(=壁向き)になっているので何もみえてませんが…あしからず)

6.2. 録画の確認

  1. サイトメニュー「メディア」の中の「Tapo: Recordings」を選ぶと、C200に挿入しておいたmicroSDカードに格納されているファイルを再生することができます。
  2. カメラ選択「Tapo_c200_01」⇒月日選択「20230608」⇒「18:13:46 - 18:14:57」ファイル選択と進みます。
  3. すると録画したファイルの再生ができます。

 モーションセンサーで引っかかった時だけmicroSDに録画される仕様です。動画はモーションセンサーに引っかかる前から録画されています。

7. お試しUIの作成

 せっかくパン(左右)、チルト(上下)出来るカメラなので、Home Assistant上からも操作できるようになると面白いかと。

 ダッシュボード(lovelace)でpicture-elementsカードで下記の設定をすると、上の画面が作れます。

type: picture-elements
title: tapo C200 HD stream
image: camera.tapo_c200_01_hd_stream
camera_image: camera.tapo_c200_01_hd_stream
camera_view: live
elements:
  - type: icon
    icon: mdi:arrow-left-drop-circle-outline
    tap_action:
      action: call-service
      service: button.press
      service_data:
        entity_id: button.tapo_c200_01_move_left
    style:
      bottom: 50%
      left: 5%
      color: white
      transform: translate(-50%, -50%) scale(2, 2)
  - type: icon
    icon: mdi:arrow-right-drop-circle-outline
    tap_action:
      action: call-service
      service: button.press
      service_data:
        entity_id: button.tapo_c200_01_move_right
    style:
      bottom: 50%
      left: 95%
      color: white
      transform: translate(-50%, -50%) scale(2, 2)
  - type: icon
    icon: mdi:arrow-up-drop-circle-outline
    tap_action:
      action: call-service
      service: button.press
      service_data:
        entity_id: button.tapo_c200_01_move_up
    style:
      top: 10%
      left: 50%
      color: white
      transform: translate(-50%, -50%) scale(2, 2)
  - type: icon
    icon: mdi:arrow-down-drop-circle-outline
    tap_action:
      action: call-service
      service: button.press
      service_data:
        entity_id: button.tapo_c200_01_move_down
    style:
      top: 90%
      left: 50%
      color: white
      transform: translate(-50%, -50%) scale(2, 2)
  - type: icon
    icon: mdi:home-outline
    tap_action:
      action: call-service
      service: select.select_option
      data:
        option: home
      target:
        entity_id: select.tapo_c200_01_move_to_preset
    style:
      top: 90%
      left: 10%
      color: white
      transform: translate(-50%, -50%) scale(2, 2)
  - type: icon
    icon: mdi:eye-off-outline
    tap_action:
      action: call-service
      service: select.select_option
      data:
        option: privacy_mode
      target:
        entity_id: select.tapo_c200_01_move_to_preset
    style:
      top: 90%
      left: 90%
      color: white
      transform: translate(-50%, -50%) scale(2, 2)

8. モーションセンサー活用! ⇒ 挫折…

 色々できそうなので、例えば留守状態の時にモーションセンサーが反応したら通知を送って動画を確認するとか、やってみたいですね。あとは庭に設置して、芝生にアレを残してゆくネコを特定!とか(3000円の超音波発生装置を設置してから、被害は減りましたが)。

 下記を見るに、「モーションセンサーは初めてモーションを検知した後に生えますよ(Motion sensor is added only after a motion is detected for the first time.)」とある。
github.com

 が一向にモーションセンサーが生えない。なぜ?
 さらに上記トラブルシューティングを読み進むと「恐ろしいこと」が判明!

  • Tapo C200のモーションセンサーの為の通知手段(C200⇒Home Assisant)は「ONVIF standard(Open Network Video Interface Forum)」経由で(1) Pullpoint もしくは(2) Webhookで行うらしい。(1)PullpointはHomeAssistantがカメラに情報を取りに行くタイプ、(2)はカメラがHomeAssistantに情報をお知らせするタイプ。
  • (2)Webhookがお勧め(軽いし速い)だが、C200ではhttp://環境でしか動かない。残念、うちのはhttps://環境だ…。
  • で残りの選択肢は(1)Pullpointということだが、C200の最新ファームウェア1.3.6*5は壊れててPullpointが使えない!らしい。ぐっすん。

【警告!】(ハードウェアの違い(Ver.1~Ver.3)でいろいろ違いありますが)C200ではとりあえず最新のファームウェアにしないこと!

 ということで残念ながら、Home Assistantでは、私の「最新化されたC200」はすぐにはモーションセンサーは使えない様子。
 ただ先ほど確認した通り、C200自体はモーション検知して録画ファイルを所定の場所に置いています。「モーション検知」の問題ではなくてモーション検知の「通知」の問題ですね。むむ。

9. おわりに

 まあ当面は監視カメラ(人力)ということで、玄関以外のどこかに置いておきましょうか。しかし、ううむ、モーションセンサー…C210でも買うか。
https://amzn.asia/d/3UHgJpWamzn.asia

 さて乞うご期待!(って何を)

maky-ba.hatenablog.com

*1:Adventurer4は非常に快適。3Dプリンタを楽しむのではなく、3Dプリンティングを楽しむことが出来ます。

*2:入国審査のカードのようなものですね「過去に悪いことをしていませんか」などなど

*3:以前はこの画面に「送信(Submit)」があり、GitHubにコードを入れるまで「押すな!」と言われてましたが、送信ボタン無くなっている様子。そりゃ「押すな」と言われたら「押しちゃう」よねぇ。

*4:"hacsを許可する”なんていうと、ちょっとドキドキ。まあ、hacksではないので、良いのですが…。

*5:ああ、tapoアプリで設定している時に「お、最新ファームあるじゃん、インストールしちゃえ」と入れたやつ…えー、うそ。ぐったり。