コモノポリタン

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

【Home AssistantでDIY Smart Home】屋外カメラで庭に来るネコを監視するぞ!(Tapo C500)

【Home Assistant(Hass.io)】
屋外カメラ(tp-link/Tapo C500)の設置

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

 ここのところホームオートメーションにカメラを組み込むのがマイブーム…。とりあえず買っておいた屋外用カメラを設置して、庭で不届きな落とし物を残すネコを特定してやる!

 ちなみに、ではありますが、今回を含め我が家での設置方法はあまり「防犯」という方向では真面目にやってません。そこはご理解いただければと思います。
 例えば設置は簡単に取り外せてしまう方法だったりします。もし本気で侵入したければ、速やかに近づいて線を切って、本体を外してメモリカードを破壊!とか可能です。まあ、お値段的にはそれでも致し方なしですが。

 で、目標は「不届きなネコを見つけて、水をかけてやる!」です。後半は難しいかな…。少なくとも前半は頑張るぞ。

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

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

1. 準備

屋外カメラ tp-link/Tapo C500
天井/壁に取付けられる屋外用のカメラ。解像度はイマイチ*1ですが、360°ぐるぐる出来てお値段もお買い得かも。
Amazon.co.jpで買いました。7,000円しません!

カメラ電源延長コード防水
5mのもの

カメラ固定台用部品
3Dプリンタで作ったカメラ固定台の部品として、マグネット(直径13mm x 厚さ2mm 18個)と、ステンレスM4ネジ(M4x10 mm 4本、M4x25mm 4本)。
百均や金物屋で計800円ぐらい。
配線用の部材
長さ1mの配線カバーは百均で手に入れました。

キー付耐候プラボックス
日東工業のキー付耐候プラボックス屋根付汎用タイプ(OPK12-1525A)。
Amazon.co.jpで1800円ぐらい。意外と安い。

2. Tapo C500の初期設定

 基本的にTapo C200(やTapo C210)と同じ手順。

  1. Tapoアプリは前回インストールずみなので、あとは「電源オン&LEDを確認」に始まって、ネットワークの設定やら、ローカルストレージの設定やら言われるがままに進めばOKです。

    C200/C210で発生した「ファームウェアを最新にしますか?」問題ですが、C500はそもそもHACSの「tapo: Cameras Control」に対応していない(残念?)ので、気にしないで最新版にしておいてOKかと。

  2. IPアドレス確認
    IPアドレスはアプリ上で「カメラ選択」→「右上の[デバイス設定(ギアマーク)]」→「基本情報」と行くと、DHCPで一旦割り当てられているのを確認できます。そのIPを基に、DHCPで再割り当てされてIPが変わらないようにルーターの機能で固定化しておきましょう。

  3. ONVIFの有効化
    ONVIFが何者かは後程。とりあえずカメラの画像のライブストリームを外部から使う時に必須の設定なので今回もアカウント作成しておきます。アプリ上で「カメラ選択」→「右上の[デバイス設定(ギアマーク)]」→「高度な設定」「カメラのアカウント」と進み、ユーザ名とパスワードを設定します。当然ですが、ユーザ名とパスワードは覚えておきましょう。

3. カメラ固定台の作成

 屋外にカメラを設置・固定する場合には、壁に穴を開ける・接着する・柱にタイラップで締める、等の方策が必要になります。我が家は極力非改造の方針ですので、今回も着脱簡単方式で行きます。

3.1. 3Dプリント

  1. ちょうど電動シャッターの廂(ひさし)部分(シャッターが巻き取られる部分)が鉄製でマグネットが付きそうです。磁石!磁石!
     C500と取付用のブラケットを合わせて400gなので、500gの重りを袋にいれて実験。磁石の特性として、横方向より垂直方向の方が力が強いので、まあ13mm x 2mmの丸形磁石2個セット x3あれば垂直には落ちなさそう。

  2. 余裕を見て(というか調整できるように)13mm x 2mmのネオジム丸形磁石2個セットを9か所配置できるようなデザインのカメラ土台とそれの蓋を設計して印刷してみました。

    欲しい人いないと思うけど、玄関のカメラ土台に比べて汎用性が少し上なので、デザインのイメージとしてモデルをThingiverseに置いておきます。
    www.thingiverse.com

  3. 蓋のネジ穴は3DモデルでM4ネジのメネジを切ってありますが、3Dプリンタの精度の問題もあって、うまく入る時もあれば、少しキツイ(もしくは全然ダメ)という時もあります。そんな時は、 下の写真のような「タップ」でネジ穴にメネジをゴリゴリ切ってあげれば良いかと思います。

     ちなみに、このタップ&ダイスセットは、これだけ入っていていて(M3~M12…タップ9本、ダイス9個)、お値段は2,000円ちょいでした。本格的な金属加工とかすると品質問われるのかもしれませんが、3DプリントのPLAの加工ぐらいなら問題なし!*2

  4. ネジ穴をタップする

    既にM4ネジ穴になっているので、比較的スムースにタップを切ることが出来ます。ラクラク

3.2. 組み立て

  1. まずはマグネットを穴にいれる。13mm x2mmのネオジム磁石を2個づつ穴に入れる。隣と極性が逆にすると落ち着きます。

  2. 次に蓋をして、M4x10mmのステンレスネジでネジ止めします。

  3. C500本体に取り付け台(カメラブラケット)を、ぶら下げモードで差し込んでネジ止めします。

  4. M4 x25mmのネジで土台にカメラ+カメラブラケットをネジ止めします。

  5. 上下逆さまですが、こんな感じです。

  6. で、電動シャッターの廂部分にマグネットの力で仮に貼り付けてみましたが、こんな風になります(まだ結線してませんよ)。

4. 設置

4.1. 屋外ボックスの改善

 以前設置した屋外ボックスですが、特に問題はないものの、だいぶ草臥れてきました。今回アップグレードしてみます。
 この手のプラボックスは日東工業か未来工業のもの、と決まっているようです。今回は日東工業のキー付耐候プラボックス屋根付汎用タイプ(OPK12-1525A)が、今使っているのと容量的に同じよりちょっと大きめぐらいだと思ったので、これにしてみました。

名称 厚み
ジャンクションボックス(前回) 200mm 155mm 80mm
プラボックス OPK12-1525A(今回) 250mm 150mm 120mm


前回使った柱への固定具も使えます。まあ、写真でわかると思いますが、実は柱ではなくて雨どい(正確には雨を下に流す「竪樋」)ですが…。

4.2 カメラまでぐるっと配線

  1. まずは屋外プラボックスの中にACアダプタを収納
    本当は内部のバックパネル(木製基板)にACアダプタとか電源ケーブルとかを固定する器具を、3Dプリンタとかで作るのが良いのですが、面倒なのでグイっと無理矢理押し込みました。下側のケーブルを通すところ(ノックアウトと呼ぶようです)は、中央のU字ノックアウトを取説通りペンチとニッパーでグイっとやって切り取りました。N200番キーでの施錠も可能です。*3

  2. 次に外壁の下に配線
    出来るだけ雨を避け、目に触れないように外壁の下側のスペースにケーブルを回してゆきます。

  3. 窓枠と電動シャッターのひさしにケーブルを通す
    窓枠はアルミなので磁石は着きません。仕方なく両面テープで配線カバーを貼り付けてゆきます。*4 ひさしの下面は鉄製なので配線カバーの両面テープの代わりに片面に両面テープが貼られたマグネットテープを貼って、磁力で下面に固定します。

  4. 最後にカメラの位置を調整
    庭に侵入するネコを出来る限り捉えられるように庭の隅側のひさしの下にカメラを設置。出来上がりです。

5. Home Assistant設定

 C500はHACS「Tapo Camera」の対象に入っていませんが、TapoカメラはONVIFプロトコル (Profile S) に対応(「Tapoの映像をNASに保存するには」)しているので、それを活用しましょう。
※ ONVIF:Open Network Video Interface Forum。
※プロファイルS:ネットワークカメラの映像と音声のストリーミング、PTZ機能について定義。

5.1. ONVIF統合の導入

 サイドメニューの「設定」から「統合」タブへ行き、右下の「+統合の追加」ボタンから「ONVIF」を追加する。
 「ONVIFデバイスのセットアップ」子画面がでて「自動的に検索」とか言いますが、Tapoで自動的に検索されたことはありません。自動的には見つからないと手動設定の下の子画面が開きます。

  • 名前:すきなものを
  • ホスト:固定化したカメラのIPアドレスを設定
  • ポート:tapoのサイトにあるようにtapoカメラのONVIFサービスポートは2020
  • ユーザ名、パスワード:tapoアプリの「カメラのアカウント」で設定したもの

 うまくいくと下のような子画面が出ます。

 ONVIFで設定されるセンサー類やコントロールはこんな感じです。

 えー、PTZ(パン・チルト・ズーム)機能は?と思われた方、私も最初は同じ感想でした。が、ONVIF統合のドキュメントを見ると、

SERVICE ONVIF.PTZ
If your ONVIF camera supports PTZ, you will be able to pan, tilt or zoom your camera.

(訳)
ONVIF.PTZサービス:
もしあなたのONVIF対応カメラがPTZをサポートしていたら、(このサービスを使って)カメラのパン、チルトおよびズームの操作をすることが出来ます。

こんな感じの事が書いてあります。onvif.ptzというサービスを呼び出して、引数にカメラのentity_idを渡してあげるとPTZ(まあ、C500には"Z"はありませんが)が使えるようになります。

5.2. 汎用カメラ統合の導入

 ONVIFに「カメラのストリーミング」とか書いてありますが、どちらかというとストリーミングの「操作」に力点が置かれています。で次に、ストリーミング自体をHome Assistantで扱えるようにします。
 カメラの映像をストリーミングとしてカメラ外に発信できる仕組みがあり、それがRTSP(Real Time Streaming Protocol)です。Tapoでは「Tapoを使用したRTSPライブストリーミングの利用方法」にあるように、「カメラのアカウント」を有効にするとRTSPでのストリーミングが使えるようになります。

 サイドメニューの「設定」から「統合」タブへ行き、右下の「+統合の追加」ボタンから「汎用カメラ」を追加する。
 「汎用カメラ」設定子画面(下記)が開きます。

  • 静止画像のURL:tapoではなさそうなので空欄(もしくは何か適当な画像のURLを指定)
  • ストリームソースのURL:高画質な1080Pストリームの場合rtsp://<C500のIPアドレス>:554/stream1、低画質な360Pストリームの場合rtsp://<C500のIPアドレス>:554/stream2
  • RTSPトランスポートプロトコルUDP
  • 認証:basic
  • ユーザ名、パスワード:tapoアプリの「カメラのアカウント」で設定したもの

 「送信(submit)」すると下記プレビュー子画面が表示されますが、たぶん「静止画像のURL」を表示しようとして(当然)表示できていないのですが、黙って「This image looks good.(この画像でよさげ)」をチェックして「送信」

 出来るものは、設定ひとつ毎に1つのエンティティ(カメラエンティティ)だけです。

(勢いあまって、家中のカメラのRTSPを汎用カメラ設定してしまいました…)

5.3.(PTZできる)お試しUIの作成

【Home AssistantでDIY Smart Home】いまさらネットワークカメラTapo C200接続! - コモノポリタンの7. お試しUIの作成」と同じようなPTZ(パン・チルト・ズーム)が出来る(ズームは出来ませんが…)画面を作ってみましょう。

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

type: picture-elements
title: tapo C500 Pan-Tilt-Zoom
image: camera.tapo_c500_1_sub
camera_image: camera.tapo_c500_1_sub
camera_view: live
elements:
  - type: icon
    icon: mdi:arrow-left-drop-circle
    tap_action:
      action: call-service
      service: onvif.ptz
      data:
        distance: 0.05
        speed: 0.5
        move_mode: RelativeMove
        pan: LEFT
      target:
        entity_id: camera.tapo_c500_1_mainstream
    style:
      bottom: 50%
      left: 5%
      color: white
      transform: translate(-50%, -50%) scale(2, 2)
  - type: icon
    icon: mdi:arrow-right-drop-circle
    tap_action:
      action: call-service
      service: onvif.ptz
      data:
        distance: 0.05
        speed: 0.5
        move_mode: RelativeMove
        pan: RIGHT
      target:
        entity_id: camera.tapo_c500_1_mainstream
    style:
      bottom: 50%
      left: 95%
      color: white
      transform: translate(-50%, -50%) scale(2, 2)
  - type: icon
    icon: mdi:arrow-up-drop-circle
    tap_action:
      action: call-service
      service: onvif.ptz
      data:
        distance: 0.1
        speed: 0.5
        move_mode: RelativeMove
        tilt: DOWN
      target:
        entity_id: camera.tapo_c500_1_mainstream
    style:
      top: 10%
      left: 50%
      color: white
      transform: translate(-50%, -50%) scale(2, 2)
  - type: icon
    icon: mdi:arrow-down-drop-circle
    tap_action:
      action: call-service
      service: onvif.ptz
      data:
        distance: 0.1
        speed: 0.5
        move_mode: RelativeMove
        tilt: UP
      target:
        entity_id: camera.tapo_c500_1_mainstream
    style:
      top: 90%
      left: 50%
      color: white
      transform: translate(-50%, -50%) scale(2, 2)

上記設定を参考に、以前の記事「【Home AssistantでDIY Smart Home】カメラ画像を間取り図から表示! - コモノポリタンの2. 間取り図からポップアップ」のようにポップアップ画面でPTZ操作できるようにすることも可能です。

6. おわりに

 「不届きなネコを見つけて、水をかけてやる!」の前半「不届きなネコを見つけて」としてもちょっと不完全ですが、一応、部屋に居ながらにして庭を監視できるようになりました。

 が、問題がいくつか…

  • 自動的に「ネコ」を検出できない
    C500の機能として「動体」は検知できるのですが。まだうまくHome Assistantから活用できず。
  • カメラが切断される、特に夜!
    えーっと、カメラは電動シャッタの外側に設置しました。電動シャッターは金属製で電波をあまり通しません。特にWiFiの電波は。ということで、特に監視したい夜になると、ぎりぎり繋がる(というかぎりぎり繋がらない時も)電波強度に…。
    これは、Wi-Fi中継器を買ってだいぶ改善されました。が、やはり時々切れますねぇ。ううむ*5

どうしましょう?

なお在庫(?)のカメラはすべて導入しおわりました。
次は、もう少しカメラ周りで頑張るかな。それとも他のやりかけ(電力消費量測定とか、エアコンのリモコンとか*6)頑張るかな。ううむ、うむうむ。

maky-ba.hatenablog.com

*1:ぼーとしているうちに、2K画質のC510Wが販売開始されちゃった。って言っているうちに、C510WSも販売に。アマゾン専売(C510WS/A)だって販売が11月から!

*2:小中学校の頃の電子工作少年だった頃にアルミの箱を加工するのにタップ欲しかった。でも高嶺の花でした、当時は。

*3:初めて知ったのですが、この手のボックスの施錠キーは、ほぼすべて200番キーと言われる1本の鍵で施錠・解錠できるのですね。びっくり

*4:両面テープだと不要になった時に粘着剤が残って綺麗にならないのが困りものです。

*5:これは、アンテナ耳付きのC510WSを買え!という天の声か!

*6:ああ…今年も夏が過ぎてゆく…。