kuroの覚え書き

96の個人的覚え書き

Raspberry Pi + Motionで監視カメラ

最初に書いておく。Raspberry PiとUSBカメラを使って動体検知付き監視カメラを構築するのは簡単にできる。が、少なくとも200万画素クラスのカメラとPiのtypeBでは本当に犯罪被害にあった時に犯人を特定できるレベルの動画が残せるとは言いがたい。

構築の手順について
必要な環境
Raspberry Pi type B (いまならRaspberry Pi 2 Bのほうがいいはず)
SD card (class10 UHS-Iの32GBを使っているが、16GBくらいで十分だと思われる。動体検知の感度にもよるが数ヶ月連続で録画してもOSも含めて12GB程度しか使っていないようなので)
UVCカメラ(USB video class)

Raspberry Piの環境構築用にHDMIなモニタやTV、USBキーボード、マウスはあったほうがいいがOSのインストールさえしてしまえば後はネットワーク経由でSSHで接続して作業可能である。

構築の実際
NOOBS(https://www.raspberrypi.org/downloads/)をダウンロードし、解凍してできたファイルをSDカードにコピーする。

SDカードをRaspberry Piに装着し、HDMI、LAN、キーボード等を接続の上USBで電源投入。

Raspbianを選択してインストール。

最初から用意されているユーザーPiのパスワードを変更(初期パスワードはraspberry)

$ passwd

rootパスワードも変更しておく (初期パスワードはなし)

$ sudo -s
#passwd

自分用のユーザーを作っておく

#adduser myname

root権限を持てるように

#visudo

myname   ALL=(ALL) ALL

を追加

IPアドレスを固定アドレスに変更

$ sudo nano /etc/network/interfaces

iface eth0 inet static
 	address 192.168.1.2
	netmask 255.255.255.0
	network 192.168.1.0
	broadcast 192.168.1.255
	gateway 192.168.1.1

のような感じ。

念のためアップデート

$ sudo apt-get update
$ sudo apt-get dist-upgrade

motion のインストール

$ sudo apt-get install motion ffmpeg lighttpd

motionの設定ファイルをいじる

$ sudo nano /etc/motion/motion.conf

# Start in daemon (background) mode and release terminal (default: off)
daemon on
#ある程度セッティングが煮詰まったらデーモンで起動する。

# V4L2_PIX_FMT_MJPEG then motion will by default use V4L2_PIX_FMT_MJPEG.
# Setting v4l2_palette to 1 forces motion to use V4L2_PIX_FMT_SBGGR8
# instead.
#
# Values :
# V4L2_PIX_FMT_SN9C10X : 0  'S910'
# V4L2_PIX_FMT_SBGGR8  : 1  'BA81'
# V4L2_PIX_FMT_MJPEG   : 2  'MJPEG'
# V4L2_PIX_FMT_JPEG    : 3  'JPEG'
# V4L2_PIX_FMT_RGB24   : 4  'RGB3'
# V4L2_PIX_FMT_UYVY    : 5  'UYVY'
# V4L2_PIX_FMT_YUYV    : 6  'YUYV'
# V4L2_PIX_FMT_YUV422P : 7  '422P'
# V4L2_PIX_FMT_YUV420  : 8  'YU12'
v4l2_palette 8
#カメラの色設定

# Image width (pixels). Valid range: Camera dependent, default: 352
width 640
# Image height (pixels). Valid range: Camera dependent, default: 288
height 480
#画像のサイズ

# Threshold for number of changed pixels in an image that
# triggers motion detection (default: 1500)
threshold 500
#動体検知の感度

# Noise threshold for the motion detection (default: 32)
noise_level 96
#ノイズによる誤検知

# Target base directory for pictures and films
# Recommended to use absolute path. (Default: current working directory)
#target_dir /tmp/motion
target_dir /var/www/cam1
#lighttpdのroot ディレクトリにあわせる

# Restrict webcam connections to localhost only (default: on)
webcam_localhost off
#webカメラをlive viewで見られるように。

まずはこれくらい。

動画を保存するディレクトリを作成

$ sudo mkdir /var/www/cam1

デーモンで動かすときはディレクトリの書き込み権限を変えておく。

$ sudo chmod A+rwx /var/www/cam1

motionをデーモンで動かす

$ sudo nano /etc/defaults/motion

start_motion_daemon=yes

lighttpdの設定

$ sudo nano /etc/lighttpd/lighttpd.conf

server.dir-listing          = "enable"

アクセスをユーザー・パスワードで制限する

$ sudo nano /etc/lighttpd/conf-available/05-auth.conf

server.modules                += ( "mod_auth" )

 auth.backend                 = "plain"
 auth.backend.plain.userfile  = "/etc/lighttpd/lighttpd.user"

auth.require    = ( "/" =>
                                (
                                 "method"  => "basic",
                                 "realm"   => "Select",
                                 "require" => "valid-user"
                                )
                  )                 

$ cd /etc/lighttpd/conf-enabled/
$ sudo ln -s ../conf-available/05-auth.conf .

$ sudo nano /etc/lighttpd/lighttpd.user

myname:mypassword

$ sudo chown www-data:www-data /etc/lighttpd/lighttpd.user
$ sudo chmod 600 /etc/lighttpd/lighttpd.user

$ sudo /etc/init.d/lighttpd restart
$ sudo /etc/init.d/motion restart