Androidのメモとか

ポキオの日記です。今日も遅延してない。

Node-REDと余ったWebカメラを使って監視カメラを作ってみてわかったこと

いつもうまく行かない。

(本記事はIoTLTアドベントカレンダー20日目のネタでもあります)

ポキオ Node-RED Webカメラ 監視カメラ

余ったWebカメラを活用(したかった)

以前予備で買っておいたWebカメラですが、いざWFHで実戦投入しようと思ったけど画質が悪くて、結局使っておらず。いわゆる積みハード的な存在になってしまっていたので、今回はそれを使って監視カメラを作ってみようと思いました。

環境・材料

LifeCam HD-3000

よくあるフツーのWebカメラです。

Raspberry Pi Zero W

よくあるフツーのPi Zero Wです。(Amazon、なんか高すぎ?)

Node-RED (v1.0.3)

よくあるフツーのNode-REDです。Raspberry Pi OSプリインのものをそのまま使っています。

成果物

はじめにお伝えしておくと、Node-REDフローはこんな感じ。

ポキオ Node-RED Webカメラ 監視カメラ

Webカメラは非常用の飲料水にくくりつけて、外を監視させます。

ポキオ Node-RED Webカメラ 監視カメラ

Node-REDのDashboard機能をつかって、Webページを作成。

ポキオ Node-RED Webカメラ 監視カメラ

こんな感じです。

わかったこと

1:Webカメラノードは存在するが凝った使い方ができない(かもしれないけどよくわからない)

あんまり調べたわけではないですが、ライブラリにWebカメラ用のノードはいくつかあります。

flows.nodered.org

機能としては非常にシンプルですが、

  • 指定できる解像度が限られている
  • fswebcamのオプション設定ができない

などのCons.があり、結局fswebcamコマンドを直接叩いています。

fswebcam -S 15 -r 1280x800 image.jpg

ここで、2つポイントが。

  • -Sオプションで数フレームスキップさせてからキャプチャさせる(使ってるWebカメラの挙動的に、最初に露光調整が走り、画が白飛びすることがあるため)
  • -rオプションで解像度を指定(使ってるWebカメラの最大値をひとまず設定)

こんな感じで生のコマンドだと(当たり前ですが)カスタムできます。

2:Webカメラの暗所性能が悪い(やつを使ってるだけかもしれない)

見ての通り、夜間は使い物になりません。

ポキオ Node-RED Webカメラ 監視カメラ

fswebcamの露光時間(フレーム数)を伸ばしても、あまり画が変わらなかったので、まぁこんなものなのでしょう。もちろんWebカメラを責めている気は毛頭なく、もともと明るい室内で近くの顔を撮すのが最大のユースケースなので、仕方がないのかなと思っています。

3:Webカメラがたまに認識されなくなる(やつを使っているだけかもしれない)

これが一番困っているんですが、たまにWebカメラが認識されなくなります。具体的にはlsusbを打っても検出できず、Raspberry Piの電源を抜いて刺さないと検出されない現象がたまに起こりました。

 sudo sh -c "echo -n \"1-1\" > /sys/bus/usb/drivers/usb/unbind"
 sudo sh -c "echo -n \"1-1\" > /sys/bus/usb/drivers/usb/bind"

こんな感じでUSBのunbind/bindを繰り返しても検出できず…。電力が足りてなくて不安定になっているのか、長時間等間隔で撮影をしてだめになっているのか、はたまた個体が良くないのか、謎は深まるばかりですが、調査するくらいだったらビールを飲んでたほうが幸せなので、特に深追いはしていません(笑)

というわけで

監視カメラがほしいならちゃんとしたものを買ったほうが良いということです。餅は餅屋。

「Androidのメモとか」は、Amazon.co.jpを宣伝しリンクすることによってサイトが紹介料を獲得できる手段を提供することを目的に設定されたアフィリエイト宣伝プログラムである、Amazonアソシエイト・プログラムの参加者です。

このブログは個人的なメモ書きであったり、考えを書く場所であります。執筆者の所属する団体や企業のコメントや意向とは無関係であります。また、このブログは必ずしも正しいことが書かれているとは限らず、誤字脱字や意図せず誤った情報を載せる場合がありえます。それが原因で読者が不利益を被ったとしても、執筆者はいかなる責任も負いません。ありがとうございます。