十一月份家里添了两口,一只泰国斗鱼,一只巴西赤脸龟。为了远程撸龟,特意建立了一套监控系统,用来看龟龟晒太阳,看斗鱼吐泡泡
目的:看龟观鱼
设备: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