Raspberry PiとUSB Webカメラでリモート監視システム作った

Raspberry Pi

約 6 分で読めます。



タイトルの通り

手持ちのRaspberry Pi 4とUSB接続のWebカメラを使ってリモート監視システムを作ってみた

という記事です。

この手のネタはググればすぐ見つかるので、
Dockerfileでコンテナにし、使い捨てができるようにしました。
 使い終わったらキレイに片付けられるコンテナは素敵ですね。

使用時はこんなんです。
 部屋が整っていないように見えるのはご愛嬌。

Chromeブラウザーで

http://<IPアドレス>:50081

というURLにアクセスすると、カメラが撮影した映像をリアルタイムで見ることができます。

つないでいるWebカメラはこれ。
 Microsoft Lifecam Studioってやつ。
デスクトップPCを売っぱらったので不要になり、押し入れに入っていたのを使いました。

さっそくソースコードを見ていきましょう。

作ったDockerfileはこの通りです。

FROM		debian:latest

RUN		\
		# Update to latest
		apt -y update && \
		apt -y upgrade && \
		# Install general packages
		apt -y install motion && \
		sed -i -E 's/^stream_port(.*)/stream_port 50081/' /etc/motion/motion.conf && \
		sed -i -E 's/^width(.*)/width 640/' /etc/motion/motion.conf && \
		sed -i -E 's/^height(.*)/height 480/' /etc/motion/motion.conf && \
		sed -i -E 's/^output_pictures(.*)/output_pictures on/' /etc/motion/motion.conf && \
		sed -i -E 's/^locate_motion_mode(.*)/locate_motion_mode on/' /etc/motion/motion.conf && \
		sed -i -E 's/^locate_motion_style(.*)/locate_motion_style redbox/' /etc/motion/motion.conf && \
		sed -i -E 's/^stream_localhost(.*)/stream_localhost off/' /etc/motion/motion.conf && \
		echo "Build complete." 

ENTRYPOINT	motion

ここでのパラメーター変更は以下の記事を大いに参考にさせていただきました。
というかほぼそのまんまですね。

動体検知で撮影した画像をLINEに自動送信する
小さなマイクロコンピュータ「Raspberry Pi」(通称ラズパイ)で作る、自分だけのガジェット。ラズパイに接続したカメラで動体検知したときに、撮影した画像をLINEに送る方法を紹介します。



一応簡単に解説しておくと以下のような感じです。
motion.confには他にもパラメーターが多数ありますが、まず使う分にはこれで十分でしょう。

stream_portで外部からのアクセスで使うポート番号を50081に変更
width/heightで画像サイズを指定
output_picture onで画像を保存
locate_motion_mode/locate_motion_styleで動き検出時に赤枠で囲むようにする
stream_localhost offで外部から映像を見られるようにする



作ったDockerfileはgithubにアップロードしてあります。

GitHub - kurofuku/motion-container
Contribute to kurofuku/motion-container development by creating an account on GitHub.



まずイメージを作るのはこんな感じで。
 カレントディレクトリにDockerfileを置いた状態で以下のコマンドを実行。

sudo docker build -t motion-image .



ホスト側でカメラデバイスが/dev/video0で認識されている場合のコンテナ起動は以下。
 –restart=alwaysでコンテナ死んだときやシステム起動時に自動起動。
 –deviceオプションでコンテナ側でカメラデバイスを使えるようにする。
 -pオプションでポートを外部に開放。

sudo docker run -dit --restart=always --device=/dev/video0:/dev/video0 -p 50081:50081 motion-image

終わりに

いかがでしたか。

このままだとまだまだ使い物にならないので、参考元記事にあったようなLINE通知など、外部サービスと連携できると、もうちょっと楽しくなりそうです!

Comments

タイトルとURLをコピーしました