建立自己的监控安保系统

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

  • 目的:看龟观鱼
  • 设备: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
  1. 安装motion(一个基于linux的闭路电视监测软件)
    1. sudo apt-get install motion
  2. 配置motion
    1. 修改默认设置
      1. sudo nano /etc/default/motion
      2. Nano修改start_motion_daemon=yes(后台录制=yes)
# set to 'yes' to enable the motion daemon
start_motion_daemon=yes
  1. 修改motion录制配置
    1. sudo nano /etc/motion/motion.conf
      1. nano编辑器下,可以使用^w快速查找到如下配置内容,可以使用^v向下翻页
      2. 修改具体的设置根据自己的喜好,可以百度或者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 保存退出
    • 如果你觉得隐私比较重要,最好给监控视频加把锁,用户名和密码必不可少
      1. 打开terminal 或者ssh软件联机
      2. Type sudo nano /etc/motion/motion.conf
      3. Add in a new line stream_auth_method 1
      4. Add in a new line stream_authentication username:password
      5. Ctrl + X
      6. Press Y, Press Enter
    • 定期的备份视频到云端
      1. scp -r /var/lib/motion/ osmc@192.168.***.***:/media/ExFAT
      2. 这句命令需要执行密码确认,为了方便自动crontab而且不使用明文密码,我制作了RSA的公共密钥并存在了osmc:
      3. ssh-keygen -t rsa -C osmc@Pi-3
      4. cat id_rsa.pub >> authorized_keys
      5. 有可能需要chmod一下,让非root的user能不用sudo就能执行ssh和scp
      6. 最后编写好crontab -e
        1. 0,30 6-23 * * * scp -r /var/lib/motion/ osmc@192.168.***.***:/media/ExFAT #每天的6:00到23:00每隔半小时备份CCTV记录到云端一次
        2. 30 23 * * * sudo rm -rf /var/lib/motion/* #每天23:30清空CCTV的本地记录

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

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

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