惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

博客园 - 聂微东
爱范儿
爱范儿
博客园 - 三生石上(FineUI控件)
Recent Announcements
Recent Announcements
大猫的无限游戏
大猫的无限游戏
MongoDB | Blog
MongoDB | Blog
A
About on SuperTechFans
M
MIT News - Artificial intelligence
V
Visual Studio Blog
云风的 BLOG
云风的 BLOG
The GitHub Blog
The GitHub Blog
Jina AI
Jina AI
P
Proofpoint News Feed
博客园_首页
酷 壳 – CoolShell
酷 壳 – CoolShell
T
The Blog of Author Tim Ferriss
G
Google Developers Blog
宝玉的分享
宝玉的分享
Engineering at Meta
Engineering at Meta
Last Week in AI
Last Week in AI
aimingoo的专栏
aimingoo的专栏
罗磊的独立博客
N
Netflix TechBlog - Medium
人人都是产品经理
人人都是产品经理

Kenvix's Blog

实现带有Nvidia GPU+Rootless Podman+Docker+Systemd+自动驱动注入支持的systemd nspawn容器 | Kenvix's Blog 手动保留常用端口,解决 Windows 端口被 Hyper-V / WinNAT 占用的问题 免Telent/TTL屏蔽运营商新版光猫的远控、TR069和RMS,获取动态随机超级管理员密码并固化权限 | Kenvix's Blog 利用Windows卷影副本(Volume Shadow)找回被覆盖和删除的数据 | Kenvix's Blog 在Windows下实现WireGuard动态DNS解析(DDNS)的正确方法:避免无意义的开销 | Kenvix's Blog OpenWRT/DNSMasq 配置DHCP静态路由主动推送 实现流量直达和旁路由流量零代价分载 | Kenvix's Blog 解决 Windows 打开视频/图片文件夹很慢的问题 | Kenvix's Blog AltA2DP - 向支持Sony LDAC协议的耳机提供Windows下蓝牙LDAC音频编码器支持 | Kenvix's Blog (2024更新)修复黑群晖 DSM7.0 + Btrfs 存储空间/磁盘损毁/堪用 的问题 校园网白嫖思路分享:局域网中转-不花钱、不认证、高速上网 | Kenvix's Blog 在 Windows 上配置网卡多个 VLAN、多个虚拟网卡、实现单线多拨网速叠加(无需驱动支持) | Kenvix's Blog 解决视频彩铃、语音通话自动转视频通话导致打电话自动挂断的问题 | Kenvix's Blog 超低成本廉价考研教程:如何用小于¥500甚至¥300的开销考个研 | Kenvix's Blog 在 Ubuntu 21.10 上启用蓝牙 LDAC/AAC/AptX 高质量音频编码支持 在 VMware Workstation 桥接模式的网卡上让虚拟机使用 VLAN 的正确方法 在 Windows 上设置 NAT 或网络共享的正确方法——避免Wi-Fi热点无法使用 自编译 红米 AC2100 OpenWRT R21.7.26 Linux 内核结构和子系统简介 | Kenvix's Blog Java 快速读取文本 (算法竞赛适用) | Kenvix's Blog 利用 ThreadLocal + Lambda,实现有状态变量的单例模式 | Kenvix's Blog 状态压缩的动态规划问题:骨牌完全覆盖棋盘问题 | Kenvix's Blog 我的 Windows 10 2004 新增 Bug 解决办法记录 解决 Android Studio 及 IDEA 中 Gradle 错误信息乱码的问题 Kotlin 的那些骚操作 | Kenvix's Blog 在普通的 Gradle Java/Kotlin 项目中使用 BuildConfig 修复国行 MIUI 打开 Google Play 始终提示 DF-DFERH-01 的问题 解决 VSCode 持续调用 WMIC 导致一个 CPU 核心完全被占满的问题 扔鸡蛋问题 | Kenvix's Blog 计算机幻觉从入门到入土 | Kenvix's Blog Java 注解预处理 Annotation Processing & 代码生成
使用树莓派实现定时拍照监控并发送邮件到邮箱 | Kenvix's Blog
2016-04-23 · via Kenvix's Blog

首先确保手上有下列东西:

1.树莓派(以下简称RPI)一个

2.一个USB免驱摄像头,支持YUY2或者JPEG均可(JPEG最佳)。RPICamera没试过

3.一个支持SMTP的邮箱

博主的配置:RPI3b 一个废弃的YUY2摄像头 QQ邮箱

那么,开工吧!


1.打开终端,切换成root,若无法切换,请先为root设置密码(passwd root)


2.插上摄像头,然后输入以下命令检查是否识别了摄像头   
```ls /dev/video*

如果不是提示没有文件,那么就表示我们的摄像头已经被识别了,接下来就可以安装拍摄软件了:

3.安装fswebcam
apt 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

在相同目录创建文件夹monitor
mkdir 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)设置为开机启动项并扔到后台运行

*发送邮件代码来自贴吧云签到