利用树莓派DIY运动检测监控

出门在外,难免担心有贼入窃。恰好手头上有闲置的树莓派一件,加上摄像头配合motion可以搭一套带运动检测的监控系统,设置好后若检测到异常可以自动将短片,图像发送到指定邮箱。手机收到邮件提醒可以远程连上摄像头查看情况。即便监控被破坏,由于图像和短片已发送至邮件服务器,仍可用于取证。

硬件准备

  1. 树莓派Raspberry Pi 3
  2. RPi IR-CUT Camera

软件安装

启用摄像头

1
sudo nano /etc/modules

添加这一行

1
bcm2835-v4l2

重启后测试摄像头
1
raspistill -o image.jpg -t 10000     #test camera

安装motionEye

核心软件是Motion,我以前就是用它配合Mutt来实现前言的功能的,但配置稍麻烦,且自带的远程管理界面略简单。后来发现motionEye,是用python写的Motion前端,十分好用。

安装依赖

1
2
3
4
5
6
wget https://github.com/ccrisan/motioneye/wiki/precompiled/ffmpeg_3.1.1-1_armhf.deb
sudo dpkg -i ffmpeg_3.1.1-1_armhf.deb
#apt-get remove libavcodec-extra-56 libavformat56 libavresample2 libavutil54
sudo apt-get install python-pip python-dev curl libssl-dev libcurl4-openssl-dev libjpeg-dev libx264-142 libavcodec56 libavformat56 libmysqlclient18 libswscale3 libpq5 v4l-utils
wget https://github.com/Motion-Project/motion/releases/download/release-4.0.1/pi_jessie_motion_4.0.1-1_armhf.deb
sudo dpkg -i pi_jessie_motion_4.0.1-1_armhf.deb

更改pip源为国内aliyun镜像

1
2
mkdir ~/.pip
nano ~/.pip/pip.conf

添加如下内容

1
2
3
[global]
trusted-host = mirrors.aliyun.com
index-url = http://mirrors.aliyun.com/pypi/simple

安装motionEye

1
2
3
4
5
6
7
8
sudo pip install motioneye
sudo mkdir -p /etc/motioneye
sudo cp /usr/local/share/motioneye/extra/motioneye.conf.sample /etc/motioneye/motioneye.conf

sudo cp /usr/local/share/motioneye/extra/motioneye.systemd-unit-local /etc/systemd/system/motioneye.service
sudo systemctl daemon-reload
sudo systemctl enable motioneye #设为开机启动,可选
sudo systemctl start motioneye

更新(可选)

1
2
sudo pip install motioneye --upgrade
sudo systemctl restart motioneye

配置motionEye

1
sudo nano /etc/motioneye/motioneye.conf

更改端口(可选)

1
2
port 8765
motion_control_port 7999

相关配置文件位置
1
2
sudo nano /etc/motion/motion.conf
sudo nano /etc/motioneye/thread-1.conf

通过前端配置邮件提醒

浏览器打开
localhost:8765
默认login: admin 密码为空
Advanced Settings ON
163邮件参数
163mail 25 non-TLS

控制夜视开关

我选用的摄像头为微雪的RPi IR-CUT Camera,没有led,而是将原来控制led的端口作为夜视开关,官方给出的控制方案为额外接一根线到摄像头模块

但这种方案不仅占用了一个外置GPIO端口,还降低了可靠性,特别是摄像头距主控较远的情况。其实6by9已经指出可以通过GPIO 32 (A+之后,3之前的板子) 或GPIO 5 (树莓派1)来控制camera led。

RPi2设置

1
sudo nano /boot/config.txt

添加以下内容

1
disable_camera_led=1

编译cnv
1
2
3
git clone https://github.com/mjysci/rpi-cam-night-vision-control
cd rpi-cam-night-vision-control
gcc -Wall -o cnv cnv.c -lwiringPi

运行
1
cnv

RPi3设置

最新的rpi3内置GPIO有变动,disable_camera_led失效,由于是扩展GPIO,并不能直接控制。

1
2
3
4
git clone https://github.com/6by9/rpi3-gpiovirtbuf.git
cd rpi3-gpiovirtbuf
make
cp rpi3-gpiovirtbuf ~/bin/rpi3-gpiovirtbuf

运行
1
2
rpi3-gpiovirtbuf s 134 1 #夜视模式关闭
rpi3-gpiovirtbuf s 134 0 #夜视模式开启

清空记录可以直接在前端操作,亦可通过rm实现
1
sudo rm /var/lib/motioneye/Camera1/*.*

debug

之前在rpi2按以上步骤没问题,但重新部署到rpi3时碰到refused to connect错误
查看服务状态

1
sudo systemctl status motioneye.service -l

不知何故安装时并未创建数据文件夹,手动建之
1
sudo mkdir /var/lib/motioneye

参考资料

motionEye wiki
Turning off camera LED
Raw sensor access / CSI-2 receiver peripheral

×

纯属好玩

扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

文章目录
  1. 1. 硬件准备
  2. 2. 软件安装
    1. 2.1. 启用摄像头
    2. 2.2. 安装motionEye
      1. 2.2.1. 安装依赖
      2. 2.2.2. 更改pip源为国内aliyun镜像
      3. 2.2.3. 安装motionEye
      4. 2.2.4. 更新(可选)
  3. 3. 配置motionEye
    1. 3.1. 通过前端配置邮件提醒
  4. 4. 控制夜视开关
    1. 4.1. RPi2设置
    2. 4.2. RPi3设置
  5. 5. debug
  6. 6. 参考资料
,