架设Motion:建立自己的监控安保系统

十一月份家里添了两口,一只泰国斗鱼,一只巴西赤脸龟。为了远程撸龟,特意建立了一套监控系统,用来看龟龟晒太阳,看斗鱼吐泡泡

目的:看龟观鱼

设备:2006年的30万像素网络摄像头,以及RaspberryPi2-B一台

准备:连接电源,安装raspbian,usb链接摄像头,用lsusb检车摄像头连接状态(当然OK)

root@raspberrypi:/home/pi# lsusb
Bus 001 Device 004: ID 0bda:8176 Realtek Semiconductor Corp. RTL8188CUS 802.11n WLAN Adapter
Bus 001 Device 005: ID eb1a:2571 eMPIA Technology, Inc. M035 Compact Web Cam
Bus 001 Device 003: ID 0424:ec00 Standard Microsystems Corp. SMSC9512/9514 Fast Ethernet Adapter
Bus 001 Device 002: ID 0424:9514 Standard Microsystems Corp. SMC9514 Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

安装motion(一个基于linux的闭路电视监测软件)

sudo apt-get install motion

配置motion

修改默认设置

sudo nano /etc/default/motion

Nano修改start_motion_daemon=yes(后台录制=yes)

# set to 'yes' to enable the motion daemon
start_motion_daemon=yes

修改motion录制配置

sudo nano /etc/motion/motion.conf

nano编辑器下,可以使用^w(Ctrl+w)快速查找到如下配置内容,可以使用^v(Ctrl+v)向下翻页

修改具体的设置根据自己的喜好,可以百度或者google来设置,这里不再赘述,我只是修改默认localhost only=No和image width和height 800 x 600

接下来用指令motion来启动,外部电脑访问motion主机的ip:8081就能以HTML格式看监控了

pi@raspberrypi:~ $ su
密码:
root@raspberrypi:/home/pi# motion
[8480392:motion] [NTC] [ALL] conf_load: Processing thread 0 - config file /etc/motion/motion.conf
[8480392:motion] [NTC] [ALL] motion_startup: Motion 4.1.1 Started
[8480392:motion] [NTC] [ALL] create_path: creating directory /var/log/motion
[8480392:motion] [NTC] [ALL] motion_startup: Logging to file (/var/log/motion/motion.log)

接下来

关闭motion的指令:

service motion stop 

或者

killall -TERM motion

在实时运行中,如果vim树莓派的rc.local,就能设置开机即启动

sudo vim  /etc/rc.local

在exit 0前添加 motion ,

!wp #保存退出

如果你觉得隐私比较重要,最好给监控视频加把锁,用户名和密码必不可少

打开terminal 或者ssh软件联机

sudo nano /etc/motion/motion.conf
Add in a new line <code>stream_auth_method 1</code>
Add in a new line <code>stream_authentication username:password</code>

Ctrl + X

Press Y, Press Enter

定期的备份视频到云端

scp -r /var/lib/motion/ osmc@192.168.***.***:/media/ExFAT

这句命令需要执行密码确认,为了方便自动crontab而且不使用明文密码,我制作了RSA的公共密钥并存在了osmc:

ssh-keygen -t rsa -C osmc@Pi-3
cat id_rsa.pub >> authorized_keys

有可能需要chmod一下,让非root的user能不用sudo就能执行ssh和scp

最后编写好

crontab -e
0,30 6-23 * * * scp -r /var/lib/motion/ osmc@192.168.***.***:/media/ExFAT #每天的6:00到23:00每隔半小时备份CCTV记录到云端一次
30 23 * * * sudo rm -rf /var/lib/motion/* #每天23:30清空CCTV的本地记录

对应的motion项目在GitHub可以找到

更新:在新年初五的12点,我的crontab部分消失了,神秘事件起因可能是某个pid超时导致的,我不得不重新crontab -e。有了这个教训,我干脆将自己的crontab记下来(好在之前的Key还有用,不用重新KeyGen)

      0 1 * * * /bash/sh /dev/motion_bash/motion_auto_purge.sh&>/media/ExFAT/motion
      0 3 * * * /sbin/reboot
      # 每天的6:00到23:00每隔半小时备份CCTV记录到云端一次
      0,30 6-23 * * * scp -r /var/lib/motion/ osmc@192.168.1.106:/media/ExFAT
      # 每天23:30清空CCTV的本地记录
      30 23 * * * sudo rm -rf /var/lib/motion/*

最后是在量产模式下的一些设置

##
# 每天的6:00到23:00每隔半小时备份CCTV记录到云端一次
##
# 0,30 6-23 * * * scp -r /var/lib/motion/ pi@192.168.1.106:/home/pi/cctv
##
# 每天23:30清空CCTV的本地记录
##
# 30 23 * * * sudo rm -rf /var/lib/motion/* 
##
# 每天03:15重启一次
##
# 15 3 * * * sudo reboot -h now
##
# 执行NAS里面7天自动删除所有文件的脚本
##
# find /home/pi/cctv/motion/ -mtime +7 -name "*.*" -exec rm -rf {} \;
##
# 执行Motion-cctv的/var/lib/motion/里的文件删除
##
# find /var/lib/motion/ -mtime +7 -name "*.*" -exec rm -rf {} \;

在设置完本地服务器后,就需要网络存储的支持;解决方案就是scp,samba和nas,具体的安全密钥设置和放置在我的其他日志,指令只是两句:

scp -r /var/lib/motion/ synology@192.168.1.119:/media/ExFAT

scp -r /var/lib/motion/ pi@192.168.1.163:/home/pi/cctv