ラズパイの勉強も兼ねて、監視カメラ作ってみた。
自分用メモ。
ちなみに、こんな感じでカメラ映像が取得できました。
要求仕様
使用する機材
- Raspberry Pi Zero WH
- BUFFALO BSWHD06M USB Camera
今回は、家に転がっていた物を使いました。 なので、費用ゼロ円(Zero なだけに)。
使用するソフトウェア
- DietPi
- 軽量な OS らしい。非力な Zero には最適。
- motion
- 動体検知してくれるソフト。
- davfs2
- WebDAVサーバーをマウントできるソフト。
使用するクラウドストレージサービス
- InfiniCLOUD (旧TeraCLOUD) 大容量クラウドストレージ | InfiniCLOUD
- WebDAV としてアクセスできる。
- 無料で使用できる容量は 10GB。紹介コードで登録すれば 数GB がおまけで追加されます(後述)
準備
InfiniCLOUD
外部アプリ接続 の設定をします。
「外部アプリ接続を許可する」と次の情報が得られます。
- WebDAV接続URL
- 接続ID
- アプリパスワード
davfs2 の設定でこれらを使います。
続いて、ソフトウェアを ラズパイ にインストールします。
DietPi
DietPi のサイトから入手して、インストールします。 DietPi - Lightweight justice for your SBC!
※インストールのやり方は別途調べてください。
今回は root アカウントで全部やっちゃいます。
motion
ラズパイを起動させたのち、インストールします。
apt install motion
davfs2
ラズパイを起動させたのち、インストールします。
apt install davfs2
接続を試します。
mkdir /mnt/infinicloud mount -t davfs -o rw https://ena.teracloud.jp/dav/ /mnt/infinicloud
ID と パスワードの入力を求められるので、
前述の InfiniCLOUD で取得した 接続ID と アプリパスワード を入力します。
アクセスしてみます。
ls -la /mnt/infinicloud
InfiniCLOUD 上のファイル一覧が得られれば OK!
設定
davfs2
パスワード入力を不要にしたり、
自動的にマウントしたり。
ここでは省略します。m(_ _)m
追記: パスワード入力を不要にする設定
/etc/davfs2/secrets
に次の行を追加します。
/mnt/infinicloud YourID YourPassword
これでIDとパスワード入力が不要になります。パスワード平文で怖いけど。
追記:自動マウントする設定
/etc/fstab
に次の行を追加します。
https://ena.teracloud.jp/dav/ /mnt/infinicloud davfs rw,user,auto 0 0
motion
設定ファイル motion.conf を変更します。
nano /etc/motion/motion.conf
mp4 ファイルに書き出すのと、クラウドストレージへ保存するのと、そんな感じの設定をおこないます。
target_dir /mnt/infinicloud movie_codec mp4 movie_quality 60 movie_output on movie_filename motion/%Y-%m-%d_%H-%M-%S movie_max_time 120
動作確認
クラウドストレージがマウントされている状態で、motion を起動します。
motion
カメラの前で動き回りました。すると...
わーい \(^o^)/ 動画ファイルが格納されてます。
クラウドストレージに保存されているので、ネット環境があればこのファイルを取得できますね。
今後の展開
次のことを考えています。
- motion が出力する mp4 ファイルを直接クラウドストレージへ書き込むのではなく、ローカルの /tmp などに一時保存する。
- mp4 ファイルをクラウドストレージへ移動するプログラムを定期的に実行する。
- 動画サイズやフレームレートを最適化する。
- 移動物体検出のパラメータを調整する。
まとめ
家に転がっていた ラズパイ と Webカメラ と、無料で使用できるクラウドストレージサービスを使って、 監視カメラと動画保存を作ってみました、的な。
もし、InfiniCLOUD をこれから登録して使いたい場合は、次の紹介コードを使っていただければ、僕もあなたもウキウキです。
紹介コード: 8E2Q5