こんにちは、カトーです。
少し前にRaspberry PiでWEBカメラを繋げて防犯カメラを自作する記事を書いたのですが、必要とするmotionが若干アップデートしているので忘備録として書いておきますね。
ちなみに動体検知などはできますが、画像加工はOpenCVが楽です。今回はmotionの設定についての説明ですよ。
motionとは?
About Motion
Motion is a highly configurable program that monitors video signals from many types of cameras.
Set it up to monitor your security cameras, watch birds, check in on your pet, create timelapse videos and more.
Create videos or save pictures of the activity
Passthrough recording from many IP cameras
View live stream of cameras
Invoke scripts when activities occur
Log activity into multiple types of databases
Fully customizable masks for privacy or motion detection
Full tls(https) support with authentication for webcontrol and streams@See this https://motion-project.github.io/
ざっくり書くと、インストールも簡単に画像・動画の保存、それに伴いイベントWEBコントロールもできるという事です。
インストール
インストールは簡単
1 |
sudo apt-get install motion |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 |
$ sudo apt-get install motion パッケージリストを読み込んでいます... 完了 依存関係ツリーを作成しています... 完了 状態情報を読み取っています... 完了 以下のパッケージが自動でインストールされましたが、もう必要とされていません: libfuse2 これを削除するには 'sudo apt autoremove' を利用してください。 以下の追加パッケージがインストールされます: libmariadb3 libmicrohttpd12 libpq5 mariadb-common mysql-common 提案パッケージ: default-mysql-client postgresql-client 以下のパッケージが新たにインストールされます: libmariadb3 libmicrohttpd12 libpq5 mariadb-common motion mysql-common アップグレード: 0 個、新規インストール: 6 個、削除: 0 個、保留: 0 個。 945 kB のアーカイブを取得する必要があります。 この操作後に追加で 3,644 kB のディスク容量が消費されます。 続行しますか? [Y/n] y 取得:1 http://raspbian.raspberrypi.org/raspbian bullseye/main armhf mysql-common all 5.8+1.0.7 [7,464 B] 取得:2 http://raspbian.raspberrypi.org/raspbian bullseye/main armhf mariadb-common all 1:10.5.12-0+deb11u1 [36.3 kB] 取得:3 http://raspbian.raspberrypi.org/raspbian bullseye/main armhf libmariadb3 armhf 1:10.5.12-0+deb11u1 [160 kB] 取得:4 http://ftp.tsukuba.wide.ad.jp/Linux/raspbian/raspbian bullseye/main armhf libmicrohttpd12 armhf 0.9.72-2 [98.0 kB] 取得:5 http://raspbian.raspberrypi.org/raspbian bullseye/main armhf libpq5 armhf 13.5-0+deb11u1 [162 kB] 取得:6 http://ftp.tsukuba.wide.ad.jp/Linux/raspbian/raspbian bullseye/main armhf motion armhf 4.3.2-1 [481 kB] 945 kB を 4秒 で取得しました (243 kB/s) パッケージを事前設定しています ... 以前に未選択のパッケージ mysql-common を選択しています。 (データベースを読み込んでいます ... 現在 100403 個のファイルとディレクトリがインストールされています。) .../0-mysql-common_5.8+1.0.7_all.deb を展開する準備をしています ... mysql-common (5.8+1.0.7) を展開しています... 以前に未選択のパッケージ mariadb-common を選択しています。 .../1-mariadb-common_1%3a10.5.12-0+deb11u1_all.deb を展開する準備をしています ... mariadb-common (1:10.5.12-0+deb11u1) を展開しています... 以前に未選択のパッケージ libmariadb3:armhf を選択しています。 .../2-libmariadb3_1%3a10.5.12-0+deb11u1_armhf.deb を展開する準備をしています ... libmariadb3:armhf (1:10.5.12-0+deb11u1) を展開しています... 以前に未選択のパッケージ libmicrohttpd12:armhf を選択しています。 .../3-libmicrohttpd12_0.9.72-2_armhf.deb を展開する準備をしています ... libmicrohttpd12:armhf (0.9.72-2) を展開しています... 以前に未選択のパッケージ libpq5:armhf を選択しています。 .../4-libpq5_13.5-0+deb11u1_armhf.deb を展開する準備をしています ... libpq5:armhf (13.5-0+deb11u1) を展開しています... 以前に未選択のパッケージ motion を選択しています。 .../5-motion_4.3.2-1_armhf.deb を展開する準備をしています ... motion (4.3.2-1) を展開しています... mysql-common (5.8+1.0.7) を設定しています ... update-alternatives: /etc/mysql/my.cnf (my.cnf) を提供するために自動モードで /etc/mysql/my.cnf.fallback を使います libpq5:armhf (13.5-0+deb11u1) を設定しています ... libmicrohttpd12:armhf (0.9.72-2) を設定しています ... mariadb-common (1:10.5.12-0+deb11u1) を設定しています ... update-alternatives: /etc/mysql/my.cnf (my.cnf) を提供するために自動モードで /etc/mysql/mariadb.cnf を使います libmariadb3:armhf (1:10.5.12-0+deb11u1) を設定しています ... motion (4.3.2-1) を設定しています ... グループ `motion' (グループ ID 124) を追加しています... 完了。 警告: 指定されたホームディレクトリ /var/lib/motion はすでに存在しています。 システムユーザ `motion' (UID 115) を追加しています... 新しいユーザ `motion' (UID 115) をグループ `motion' に追加しています... ホームディレクトリ `/var/lib/motion' はすでに存在します。`/etc/skel' からのコピーを行いません。 adduser: 警告: ホームディレクトリ `/var/lib/motion' は、現在作成中のユーザの所属になっていません。 ユーザ `motion' をグループ `video' に追加しています... ユーザ motion をグループ video に追加 完了。 Created symlink /etc/systemd/system/multi-user.target.wants/motion.service → /lib/systemd/system/motion.service. man-db (2.9.4-2) のトリガを処理しています ... libc-bin (2.31-13+rpt2+rpi1) のトリガを処理しています ... Message from syslogd@raspberrypi at Nov 22 14:12:11 ... motion[3412]: [0:motion] [EMG] [ALL] motion_startup: Exit motion, cannot create log file /var/log/motion/motion.log: Permission denied Broadcast message from systemd-journald@raspberrypi (Mon 2021-11-22 14:12:11 JST): motion[3412]: [0:motion] [EMG] [ALL] motion_startup: Exit motion, cannot create log file /var/log/motion/motion.log: Permission denied |
motion.log: Permission denied と出てますので、実際に運用に合わせて権限をあわせます。
設定
1 2 3 4 5 |
$ motion -v motion: invalid option -- 'v' motion Version 4.3.2, Copyright 2000-2019 Jeroen Vreeken/Folkert van Heusden/Kenneth Lavrsen/Motion-Project maintainers Home page : https://motion-project.github.io/ |
さて、設定を見ていきます。motioを入れた場所には、
1 2 3 4 5 |
-rw-r--r-- 1 root root 726 11月 16 2020 camera1-dist.conf -rw-r--r-- 1 root root 817 11月 16 2020 camera2-dist.conf -rw-r--r-- 1 root root 881 11月 16 2020 camera3-dist.conf -rw-r--r-- 1 root root 798 11月 16 2020 camera4-dist.conf -rw-r--r-- 1 root root 5190 11月 16 2020 motion.conf |
camera1~4のcont とmotoin.confがあります。それぞれのカメラごとに設定もできますが、全体はmotion.confで設定します。
参考;https://motion-project.github.io/4.3.2/motion_config.html
$ cat motion.conf
全部で171行程しかありませんので、必要に応じて参考元の動作にパラメーターを加えていきます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
# Rename this distribution example file to motion.conf # # This config file was generated by motion 4.3.2 # Documentation: /usr/share/doc/motion/motion_guide.html # # This file contains only the basic configuration options to get a # system working. There are many more options available. Please # consult the documentation for the complete list of all options. # ############################################################ # System control configuration parameters ############################################################ # Start in daemon (background) mode and release terminal. daemon off 以下省略 |
今回、防犯カメラという事でイベントは以下設定でしょうか?
Script Execution-General Info
https://motion-project.github.io/4.3.2/motion_config.html#OptDetail_Scripts
セキュリティの注意もあります。
Security Warning!
These features mean you have to pay attention to the following.
Anyone with access to the remote control port (http) can execute any command on your computer with the same privileges as the user running Motion. Anyone can access your control port if you have not either limited access to localhost or limited access using firewalls in the server. You should always have a router between a machine running Motion with remote control enabled and the Internet and make sure the Motion control port is not accessible from the outside.
If you limit control port to localhost you still need to take care of any user logging into the server with any kind of GUI or terminal session. All it takes is a browser or single command line execution to change settings in Motion.
It is a good idea to run Motion as a harmless user. Not as root!!
on_event_start
Type: String
Range / Valid values: Max 4095 characters
Default: Not defined
書き方としては、
1 |
on_event_star /スクリプト名.sh |
また動体検知のところには
1 2 |
locate_motion_mode on locate_motion_style redbox |
とすると検知ができます。
まとめ
さくっと設定するには本当に便利です。
現在は顔検出となるとOpenCVになるのでしょうけど、サクッと防犯カメラとして設置して動体検知後にメールを送付やリレーを使って電源管理するならこれで十分です。また最近のGPIOがある小型ボードであれば人感センサや圧力センサ、CO2センサなど使えば本格的な防犯システムもできそうです。もちろん電源やサービスが落ちてたなんてありそうなので、死活監視の必要ですが。