簡単じゃないんだよ、意外と
防犯カメラのシステムは、現在かなりお手軽に導入できます。ご家庭での使用なら、カメラと別売りのSDカードを購入すれば2週間程度の上書き録画ができるシステムを使うことができます。クラウドに録画、スマホからアプリで現状確認などできたりします。
ところが、「会社で使います」となるとハードルが高くなります。録画の保存期間が長くなったり、閉鎖系のネットワークで閲覧できるようにアプリを用意しなきゃいけなかったり。
今回、テストとして長期(数年分)の記録が保存できるシステムを作ってみるという、わりと難しめのお題がさらっと出されたので、OpenMediaVault と中華カメラで試作してみました。
カメラ:reolink RLC-510A
詳細はリンク先を見てください。屋外用のPoE有線カメラで、この手のカメラを使ったことのある人なら扱いやすいと思います。記録容量がSDカードで済むなら便利です。ネットワーク越しにはFTPを使って記録します。
サーバーOS:OpenMediaVault
カメラの録画ファイルを保存するサーバーに使うOSです。Debian派生のNASディストリです。マシンスペックがしょぼくてもインストールできます。中身はDebianなので、割と扱いやすいです。
サーバー: NEC の業務用パソコン(core2duo入ってた)
サーバーとして使うパソコンです。機種調べるのもめんどくさい。core2duo 入ってました。
PoEハブ:既設のNetgearのやつ
既設のハブにつなぎました。TP-LINKの安いやつ で十分です。
カメラのセットアップ
カメラ購入後、DHCPなテストネットワークに接続してカメラがどのIPアドレスを掴んだか調べます。自分の場合は適当なDebianの入った端末で
echo 192.168.0.{1..254} | xargs -P256 -n1 ping -s1 -c1 -W1 | grep ttl|sort
などで、カメラ接続前後のIPアドレスの違いで調べています。
その後、ブラウザでカメラのIPアドレスにアクセスして user name: admin (パスワード無し)でログインします。これでカメラの設定ができるようになりました。
サーバーのセットアップ
OpenMediaVault のインストールは、dd でインストール用のUSB作ってUSBブートすればだいたい終わるのですが、Windows の人は手順が違うようです。 使用するネットワーク内のIPアドレスを振っておけば、クライアント用のPCからサーバーにアクセスできるようになってると思います。デフォルトのID/Password は admin/openmediavault です。(注:サラッと書いてますが、システムインストール時にはストレージ用のSSD/HDD は繋がない、とかいろいろ罠があるので手順を検索して確認後すすめてください)
サーバーのコンパネをさわれるようになったら、ftp プラグインを導入してください。検索窓で「ftp」と入力すれば表示されます。(いんたーねっとにつないどいてください)
この後、保存用のストレージにファイルシステムを設定し、共有フォルダとユーザーを設定します。最低1つは書き込みできるアカウントを作ってください(このアカウントをカメラに設定します)または全員書き込みできるようにしてください。
サーバーの設定ができたら、PCのftpクライアントでテスト接続してみてください。(windows の方はエクスプローラに ftp://<サーバーのip>/ などで繋がります、多分)
カメラ側のFTP設定
ざっくり接続先サーバーの設定をしまして、
ファイル名や、保存するデータの種類・品質を決めて、
録画/撮影のタイミングを決めます
(今回使った機種は、画質を細かく設定できない:荒いor細かい)
Alerm は指定した時間人感センサを働かせます。
Timer は指定した時間撮影し続けます。今回は電源入っている間は撮影しっぱなしです。
配線して動かしてみる
(設定している段階でつないでると思いますが)PoEハブにカメラをつないで、サーバーも同じネットワークに乗せます。カメラ側の設定で「test」しても良いですし、ftp クライアントで保存先にアクセスすると、データが増えていく様子がわかると思います。
よりたくさん録画するために
ここまでうまくいったらストレージいっぱいまで保存できるようになるわけですが、数年分の保存という課題には容量が足らないです。
そこで、今回はUSBハードディスクをつなぎ長期保存用ストレージとして使用し、こちらにデータを逃してやることにしました。USBですとホットスワップできるので、容量が足りなくなったら交換して保存し続けることができます。一次保存用のSSDにとりあえず保存し、長期保存用HDDにシェルスクリプトに rsync -auv 使って転送します。一次保存用SSDで一週間以上前のものは
find <保存フォルダ> -mtime +7 -name "*.mp4" -delete
などで削除し、空のフォルダを
find <保存フォルダ> -type d -empty | xargs rm -r
などで削除します。
ちなみに、ストレージ名はOMVでは決め打ちになってしまうので、シンボリックリンクを張っておくと便利です(まぁ、/dev/sdbとかで決め打ちでも良いと思いますが、スワップした際に変わってしまうこともあるので、スクリプトの手直しを最小限にしたいのです)
USBストレージ(という名の大容量HDD)なので、わりと溜め込んでおけるしホットスワップできるのですが、微妙に手作業・手直しが入るので面倒です。ちなみに、SMR のディスクを btrfs で1年ほど使っているものがあるのですが、定期スクラブして使う分には使えてます。
(注:上記はSSHでサーバーにつないで作業しています。シェルスクリプトとは)
とにかく、とても面倒です
ずっと前と比べるとかなり楽ちんではあります。しかしながら、上記の方法に落ち着くまで試行錯誤がありました(カメラは最近までSV3Cを使ってたり、その前はIOデータだったり)
画像の監視作業担当へは、まとめて表示したいため ispy の Agent を使ってます。 古いパナソニックのカメラなども機種名を設定するだけで使えるので便利です。でもインストールは面倒でした(Debian だと時間かかるだけでしたが、Windows版は大変だったらしい)
事務員さんがお気楽(予算/作業的)に設置できるレベルに家電化すれば良いのに、と思ってます。コンプラ案件や製品への危害監視などで導入先はいっぱいあると思うので。