首先确保手上有下列东西:
1.树莓派(以下简称RPI)一个
2.一个USB免驱摄像头,支持YUY2或者JPEG均可(JPEG最佳)。RPICamera没试过
3.一个支持SMTP的邮箱
博主的配置:RPI3b 一个废弃的YUY2摄像头 QQ邮箱
那么,开工吧!
1.打开终端,切换成root,若无法切换,请先为root设置密码(passwd root)
2.插上摄像头,然后输入以下命令检查是否识别了摄像头
```ls /dev/video*
如果不是提示没有文件,那么就表示我们的摄像头已经被识别了,接下来就可以安装拍摄软件了:
3.安装fswebcamapt install fswebcam
4.试着抓拍一张图片fswebcam --no-banner -r 320x240 test.jpg
效果如下:
[这里是一张截图,然而博主在将博客从WP人工迁移到Hexo时找不到了]
比起在Windows上的效果来说,成色略有问题,不过还算可以忍受
测试完成!摄像头可用!重点来了!
monitor.sh 基础代码说明
count=0
while [[ true ]];do
#拍照;分辨率640x480;向照片底部写入日期;文件名为时间;保存到monitor文件夹
fswebcam -d /dev/video0 -r 640x480 --bottom-banner --title "`date '+%Y-%m-%d %H:%M:%S'`" --no-timestamp ./monitor/`date '+%H-%M-%S'`.jpg
#拍照间隔5min
sleep 5m
#计数器+1
let count++
#拍摄满20张照片 发送邮件
if [ $count -gt 20 ];then
#联系PHP发送邮件,如果你想自己写发邮件的代码,请删除这部分内容
echo "Send Mail... Calling PHP"
#这个PHP脚本还会自动清空monitor文件夹
php monitor.php
#发完了 清零计数器
let count=0
fi
done
在相同目录创建文件夹monitormkdir monitor
基础代码到此结束,如果你不想自己写发邮件的代码,那么请继续看;想自己写就可以不看了。
1.确保已装好PHP(要求5.4+)
之所以用PHP发送邮件,是因为LZ在写云签到的时候写过一个很强大的PHP SMTP类,可以很方便地发送带附件的邮件
如果装了php但终端输入php提示找不到文件,你还需要为php设置一个软链接
#/usr/local/php 为你的php安装目录,按需修改
ln -s /usr/local/php/bin/php /usr/bin/php
2.保存上述代码为 monitor.sh
3.修改monitor.sh,见上面的基础代码说明
4.新建monitor.php,代码和说明:
<?php
require 'class.smtp.php';
define('DIR', dirname(__FILE__) . '/monitor/'); //照片储存路径
if(file_exists(DIR)) {
$f = scandir(DIR);
$att = [];
foreach($f as $x) {
if($x != '..' && $x != '.') {
$att[$x] = file_get_contents(DIR . $x); //添加附件内容
unlink(DIR . $x); //删除照片
}
}
echo sendmail(
'fuck@example.com', //接收者邮箱
'Kenvix Monitor - '. date('Y-m-d H:m:s'), //邮件标题
implode('<br/>', $f), //邮件内容
$att);
} else {
mkdir(DIR,0777);
}
/**
* 快捷发送一封邮件
* @param string $to 收件人
* @param string $sub 邮件主题
* @param string $msg 邮件内容(HTML)
* @param array $att 附件,每个键为文件名称,值为附件内容(可以为二进制文件),例如array('a.txt' => 'abcd' , 'b.png' => file_get_contents('x.png'))
* @return bool 成功:true 失败:错误消息
*/
function sendmail($to, $sub = '无主题', $msg = '无内容', $att = array()) {
$From = 'kenvix@qq.com'; //发件人邮箱
$Host = 'smtp.qq.com'; //SMTP主机
$Port = 25; //SMTP端口
$SMTPAuth = true; //SMTP 需要身份验证
$Username = 'kenvix@qq.com'; //SMTP用户名
$Password = 'password'; //SMTP密码
$Nickname = 'Kenvix'; //发件人名字
$SSL = false;
$mail = new SMTP($Host , $Port , $SMTPAuth , $Username , $Password , $SSL);
$mail->att = $att;
if($mail->send($to , $From , $sub , $msg, $Nickname)) {
return true;
} else {
return $mail->log;
}
}
5.给权限:
chmod -R 777 monitor
chmod 777 monitor.sh
chmod 777 monitor.php
chmod 777 class.smtp.php
6.好,开始使用吧!
*建议将监控脚本(monitor.sh)设置为开机启动项并扔到后台运行
*发送邮件代码来自贴吧云签到