約 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
ここでのパラメーター変更は以下の記事を大いに参考にさせていただきました。
というかほぼそのまんまですね。
一応簡単に解説しておくと以下のような感じです。
motion.confには他にもパラメーターが多数ありますが、まず使う分にはこれで十分でしょう。
stream_portで外部からのアクセスで使うポート番号を50081に変更 width/heightで画像サイズを指定 output_picture onで画像を保存 locate_motion_mode/locate_motion_styleで動き検出時に赤枠で囲むようにする stream_localhost offで外部から映像を見られるようにする
作ったDockerfileは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