树莓派3B应用篇之视频监控(下)

这一篇属于进阶的内容。包括邮箱配置与使用,以及motion、msmtp与mutt三者之间的配合,还有系统方面的调用。

 

  1. 邮箱配置与使用
    a.)安装msmtp邮件传输代理程序:
     
    sudo apt-get install msmtp
    说明一下,常用邮件传输代理程序有ssmtp与msmtp,经我测试,国内的邮箱如QQ邮箱、163邮箱、126邮箱,还有在国内能较好使用的outlook、Hotmail邮箱,都不能很好的使用ssmtp,唯有gmail可以正常使用,但是gmail在国内确实不好用,所以这里选择安装msmtp。
    配置msmtp:以126邮箱为例:
    (1)查询msmtp配置文件所在目录:
    which msmtp
    /usr/bin/msmtp
    
    返回/usr/bin/msmtp即为配置文件的路径。
    (2)配置资源文件/root/.msmtprc
     
    logfile /var/log/msmtp.log
    account default
    auth login
    host smtp.126.com
    from abcde@126.com
    user  abcde@126.com
    password abcdemm
    
    因该文件设计用户密码,为提高安全性,所以执行以下命令:
     
    sudo chmod 600 /root.msmtprc

    b.)安装轻量级邮件客户端mutt
     
    sudo apt-get install mutt
    配置mutt
    (1)配置资源文件/root/.muttrc
     
    set sendmail="/usr/bin/msmtp"
    set use_from=yes
    set realname="abcde@126.com"
    set editor="nano"
    第一行所用路径就是刚才查到的msmtp配置文件位置
    c.)测试邮件发送
     
    echo "Testing" | sudo mutt -s "Testing" hijklm@126.com
    后面邮箱是收件人地址。

    关于mutt使用的options,大家可以在shell中用 mutt -h获取。
  2. 我们要实现这样的功能:开机motion能自启并在后台运行,而不用手动开启并占用前台;定期自动向目标邮箱发送邮件(如果捕获有图片),并且拍摄图片的时间需附上;只发送最新的图片,已经发送的图片予以删除,未正常发送的图片保留;
    a.)motion软件的设置模式(setup mode)与守护模式(daemon mode)
     设置模式是阻塞shell的,即使用motion -s命令在shell下进行测试运行,需要停止时使用Ctrl+c停止。显然,这不是我们想要的模式。我们需要程序在守护模式下运行。
     
    nano /etc/default/motion
    将其中一行start_motion_daemon由no改为yes。
    然后:
     
    nano /etc/motion/motion.conf
    将其中的daemon off改为 daemon on。
    这样一来,motion将开机后自动运行在守护模式。
    如果想要停止motion,可以使用:
     
    pkill motion
    手动再次在守护模式下打开motion,可以使用:
     
    sudo /usr/bin/motion
    或
    sudo /etc/init.d/motion start
    或
    sudo service motion start
    查看motion是不是在后台运行可以使用:
     
    ps -ef | grep motion

    b.)我们用两个脚本实现其余功能(引)
    脚本1 script1.sh
     
    #!/bin/bash
    MOTIONCONF=/etc/motion/motion.conf
    MOTIONDIR=`sudo grep "^target_dir" $MOTIONCONF|awk '{print $2}'`
    if [ ! -d $MOTIONDIR ];then
       mkdir $MOTIONDIR
       chown motion $MOTIONDIR
    fi
    LISTFILES=`find $MOTIONDIR -maxdepth 1 -type f | grep jpg$`
    NUMFILES=`find $MOTIONDIR -maxdepth 1 -type f | grep jpg$ | wc -l`
    if [ $NUMFILES -gt 0 ];then
       for IMAGEFILE in $LISTFILES
       do
             echo -e "Warning,\nAn intruder was detected at `date`\nPlease see the image detected for details" | mutt -s "[INTRUDER ALERT]Intruder Detected" -F /root/.muttrc -a $IMAGEFILE -- xxxxxxxx@qq.com
             rm $IMAGEFILE
       done
    fi
    脚本2 script2.sh
     
    #!/bin/bash
    MOTIONCONF=/etc/motion/motion.conf
    MOTIONDIR=`sudo grep "^target_dir" $MOTIONCONF | awk '{ print $2}'`
    if [ ! -d $MOTIONDIR ];then
       mkdir $MOTIONDIR
       chown motion $MOTIONDIR
    fi
    LISTFILES=`find $MOTIONDIR -maxdepth 1 -type f | grep jpg$`
    NUMFILES=`find $MOTIONDIR -maxdepth 1 -type f | grep jpg$ | wc -l`
    LASTCOUNT=0
    while true 
    do 
    			LISTFILES=`find $MOTIONDIR -maxdepth 1 -type f | grep jpg$`
    			NUMFILES=`find $MOTIONDIR -maxdepth 1 -type f | grep jpg$ | wc -l`
    			ITERATOR=0
    			while [ $LASTCOUNT -lt $NUMFILES ];
    			do
    					IMAGEFILE=${LISTFILES[$ITERATOR]}
    					echo -e "Warning,\nAn intruder was detected at `date`\nPlease see the image detected for details" | sudo mutt -s "[INTRUDER ALERT]Intruder Detected" -F /root/.muttrc -a $IMAGEFILE -- xxxxxx@qq.com
       					LASTCOUNT=`expr $LASTCOUNT + 1`
    					ITERATOR=`expr $INTRATOR + 1`
    			done
    			sleep 10
    done
    代码都很浅显易懂,不多说。注意,bash对空格比较敏感,不要随便添加空格。
    将这两个脚本放到root目录下。
    c.)实现脚本的开机启动
    (1)添加cron任务以开机自启脚本1:
    参照树莓派3B应用篇之视频监控(上)篇中所说的办法添加crontab任务:
     
    sudo crontab -e
    添加:
     
    ***** /root/script1.sh
    每分钟运行一次脚本1 。
    (2)通过修改
    motion的启动脚本以实现开机自启脚本2:
    在代码块start)中,在start-stop-daemon后添加 /root/script2.sh & ,&表示在后台执行脚本。
     
    start)
        if check_daemon_enabled ; then
            if ! [ -d /var/run/motion ]; then
                    mkdir /var/run/motion
            fi
            chown motion:motion /var/run/motion
    
    	log_daemon_msg "Starting $DESC" "$NAME" 
    if start-stop-daemon --start --oknodo --exec $DAEMON -b --chuid motion ; then
    	     /root/script2.sh &
                log_end_msg 0
            else
                log_end_msg 1
                RET=1
            fi
        fi
        ;;



    好了,如果你按我说的步奏进行配置,现在你的树莓派应该可以开始正常工作了。重启一下试试吧。
    关于微信公众平台和广域网访问motion,暂时先放在一边,以后再写了。监控篇到此为止。基本可以实现大家监控的需求了。


    参考文献:Peter MEmbrey,David Hows著,张志博,孙峻文译.树莓派学习指南.beijing,2013

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值