首页
归档
分类
标签
更多
留言板
说说
关于
Search
1
饥荒联机版控制台代码大全
1,024 阅读
2
编译安装带 Brotli 压缩的 Nginx
930 阅读
3
Obsidian多端快速同步插件
901 阅读
4
树莓派+EC20模块实现连接蜂窝网和短信收发
887 阅读
5
EC20通过gammu接收短信再转发优化
865 阅读
软件
CSS
Python
MySql
Java
typecho自定义
Vue
学习笔记
Linux
Shell脚本
Nginx
树莓派
邮件
拍照
热点
ec20
云盘
系统烧录
好玩
饥荒
硬件
工具
笔记
随心记
登录
Search
标签搜索
树莓派
Linux
Java
CSS
饥荒
小妙招
个人热点
nextcloud
云盘
DHT11
学习笔记
树莓派拍照
Nginx
MySql
ESP
娱乐
ec20模块
文件共享
git
图床
Mango
累计撰写
51
篇文章
累计收到
7
条评论
首页
栏目
软件
CSS
Python
MySql
Java
typecho自定义
Vue
学习笔记
Linux
Shell脚本
Nginx
树莓派
邮件
拍照
热点
ec20
云盘
系统烧录
好玩
饥荒
硬件
工具
笔记
随心记
页面
归档
分类
标签
留言板
说说
关于
搜索到
2
篇与
的结果
2024-02-17
树莓派访客拍照C语言版
前引不知道因为什么原因Picamera2包调用摄像头拍照,在一个程序中达到一定次数之后就会导致系统的内存泄漏,除了重启软件没有什么好的方法来解决,但作为一个监控性质的软件,经常发生这种错误还是比较无法接受的事情。因此决定看看能不能直接使用C语言来完成监控人员到访和录像这一系列动作代码代码部分十分简单#include <pigpio.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <unistd.h> #include <sys/wait.h> #include <time.h> int pinNumber = 18; int getVideo(){ time_t timep; struct tm *p; char filePath[28]; time (&timep); p=gmtime(&timep); int hour = 8+p->tm_hour; sprintf(filePath,"%s%d%02d%02d%02d%02d%02d%s","/Disk/MyCloud/Stream/Safe/",1900+p->tm_year,1+p->tm_mon,p->tm_mday,(hour>=24)?(hour-24):hour,p->tm_min,p->tm_sec,".mp4"); char command[1000]; sprintf(command,"%s%s%s%s", "libcamera-vid -t 5000 --width 1280 --height 720 --codec libav -o ",filePath," && sudo chown www-data ",filePath); return system(command); } int main() { int value = 0; if (gpioInitialise() < 0) { printf("pigpio initialization failed\n"); return 1; } gpioSetMode(pinNumber, PI_INPUT); while(1){ value = gpioRead(pinNumber); if(value==1){ getVideo(); } time_sleep(1.0); } gpioTerminate(); return 0; }由于在之前 使用的GPIO库wiringPi.h已经暂停维护,在新版的树莓派系统中不在默认安装,这里使用了pigpio.h库如果没有安装sudo apt update sudo apt install pigpio编译gcc monitor.c -o monitor -lpigpio -lrt -lpthread引脚编号默认为BCM编号主要拍照代码system(command)实际是为了调用系统的libcamera-vid即 sprintf(command,"%s%s%s%s", "libcamera-vid -t 5000 --codec libav -o ",filePath," && sudo chown www-data ",filePath);这部分代码为录一个5秒的视频并保存到filePath目录下,同时修改视频权限方便给Nextcloud修改查看人体红外代码 int value = 0; if (gpioInitialise() < 0) { printf("pigpio initialization failed\n"); return 1; } gpioSetMode(pinNumber, PI_INPUT); while(1){ value = gpioRead(pinNumber); if(value==1){ getVideo(); } time_sleep(1.0); } gpioTerminate();当有人到访时输出高电平,检测到高电平时触发录像
2024年02月17日
587 阅读
0 评论
0 点赞
2021-11-30
树莓派开机自动发送邮件
在平时使用树莓派的过程中,大多数人的习惯都是直接使用终端去连接树莓派,很少使用屏幕去直接操作;而在连接终端的时候又必须要知道树莓派的IP地址;这时候如果树莓派能够通过邮件的方式直接将自己的IP地址直接发送给我们,在连接时就会省去很多不必要的麻烦。安装软件安装mutt:$sudo apt-get install mutt安装msmtp:$sudo apt-get install msmtp设置软件设置mutt编辑/etc/Muttrc 系统全局设置编辑~/.muttrc 为某个系统用户设置这里对全局进行设置$sudo vim /etc/Muttrc在文件最后面添加如下代码set sendmail="/usr/bin/msmtp" set use_from=yes set realname="Raspberry" #邮箱发送人昵称 set from=xxxxx@xxx.com #自己的发件箱邮箱地址 set envelope_from=yes set crypt_use_gpgme=no登录邮箱,进入邮箱设置界面,开启邮箱的IMAP/SMTP服务下图为163邮箱设置msmtp创建 ~/.msmtprc 和 ~/.msmtp.log 两个文件分别作为msmtp的配置文件和日志文件编辑.msmtprcvim ~/.msmtprcaccount default host smtp.163.com #自己邮箱的smtp地址,我的是163邮箱,所以是这个 from mstz1130@163.com #自己的邮箱地址 auth plain user mstz1130 #自己的邮箱用户名,就是@前的 password xxxxxxxx #这个并不是邮箱密码,是邮箱授权码 logfile ~/.msmtp.log #日志文件地址由于password是明码,所以我们要修改文件的权限$sudo chmod 600 .msmtprc163邮箱授权码的开启位置,其他邮箱的具体位置请自行查询。测试邮件发送$ echo "正文" | mutt -s ”主题“ xxx@xx.com -q 附件获取IP地址脚本可以在任意可执行位置创建$vim sendip.sh#!/bin/bash # check network availability SITE_TO_CHECK="www.163.com" while true do TIMEOUT=5 RET_CODE=`ping -s 1 -c 1 $SITE_TO_CHECK` if [ "$?" != "0" ] then echo "Network not ready, wait..." sleep 1s else echo "Network OK, will send mail..." break fi done # get the IP address of eth0, e.g. "192.168.x.x" WLAN0_IP_ADDR=`ifconfig wlan0 | sed -n "2,2p" | awk '{print substr($2,1)}'` ETH0_IP_ADDR=`ifconfig eth0 | sed -n "2,2p" | awk '{print substr($2,1)}'` ETH1_IP_ADDR=`ifconfig eth1 | sed -n "2,2p" | awk '{print substr($2,1)}'` ETH2_IP_ADDR=`ifconfig eth2 | sed -n "2,2p" | awk '{print substr($2,1)}'` # send the Email echo "Current time: `date '+%F %T'` WLAN0 IP Address of Raspberry Pi: $WLAN0_IP_ADDR ETH0 IP Address of Raspberry Pi: $ETH0_IP_ADDR IP address loading completed ! ! !" | mutt -s "IP Address of Raspberry Pi" xxx@xxx.com写入开机启动项$sudo vim /etc/rc.local在exit 0之前加入以下命令su pi -c /home/pi/sh/sentIP.sh &具体路径由自己创建的脚本地址位置来决定,&表示并发执行,在脚本运行时不影响其他脚本
2021年11月30日
299 阅读
0 评论
0 点赞