树莓派定时采集图像上传到服务器
优采云 发布时间: 2020-08-11 16:17树莓派采集图片定时上传至服务器打算图片储存服务器
在做这个系统之前,得先选择一个可以上传图片的服务器,当然,可以自己做一个小服务器,但是我选择了七牛网,因为它是一个免费的云图库,而且我平常写MarkDown也可以用这个
先要注册登陆,之后,如图操作
创建一个储存空间picture
然后再步入这个页面记住AK(access_key )和SK(secret_key )。
首先查询七牛的Python调用API可知:
# -*- coding: utf-8 -*-
# flake8: noqa
from qiniu import Auth, put_file, etag, urlsafe_base64_encode
import qiniu.config
#获取图片
os.system('raspistill -o current_photo.jpg')
#需要填写你的 Access Key 和 Secret Key
access_key = 'Access_Key'
secret_key = 'Secret_Key'
#构建鉴权对象
q = Auth(access_key, secret_key)
#要上传的空间
bucket_name = 'Bucket_Name'
#上传到七牛后保存的文件名
key = 'my-python-logo.png';
#生成上传 Token,可以指定过期时间等
token = q.upload_token(bucket_name, key, 3600)
#要上传文件的本地路径
localfile = './sync/bbb.jpg'
ret, info = put_file(token, key, localfile)
print(info)
assert ret['key'] == key
assert ret['hash'] == etag(localfile)
安装七牛云的python SDK代码
首先建一个get_photo.sh脚本文件
python get_picture.py
然后在/home/camera中构建一个文件get_picture.py
# -*- coding: utf-8 -*-
import time
from qiniu import Auth, put_file, etag, urlsafe_base64_encode
import qiniu.config
import os
#需要填写你的 Access Key 和 Secret Key
access_key = '' #这里的密钥填上刚才我让你记住的密钥对
secret_key = '' #这里的密钥填上刚才我让你记住的密钥对
#构建鉴权对象
q = Auth(access_key, secret_key)
#要上传的空间
bucket_name = 'picture'
#上传到七牛后保存的文件名
key = '%s_%s_%s_%s_%s_%s.jpg'%(time.localtime()[0],time.localtime()[1],time.localtime()[2],time.localtime()[3],time.localtime()[4],time.localtime()[5])
#生成上传 Token,可以指定过期时间等
token = q.upload_token(bucket_name, key, 3600)
#要上传文件的本地路径
localfile = 'current_photo.jpg'
ret, info = put_file(token, key, localfile)
filename = 'current_photo.jpg'
if os.path.exists(filename):
os.remove(filename)
每次执行一次该程序都会手动上传一张图片,现在就差定时部份。
树莓派/Linux定时执行python脚本开启crontab日志。
crontab默认不开启日志,所以先开启定时任务的日志来查看
修改rsyslog服务,将 /etc/rsyslog.d/50-default.conf 文件中的 #cron.* 前的 # 删掉;用service rsyslog restart重启rsyslog服务:
写定时任务
crontab -e
开启本用户的定时任务,即创建以本用户名为文件名的定时任务文件,位置在/var/spool/cron/crontabs/。
定时任务句子格式为:执行周期+命令,周期有5个域,分别是
分钟,小时,日(day of month),月(month of year),周几(day of week).
每个域不加限制任意的话用*,整体格式为:* * * * * command
比如我的脚本是 /home/camera/get_photo.sh
执行环境为 /usr/bin/python2.7
每5分钟执行一次
则句子为
*/5 * * * * /usr/bin/python2.7 /home/camera/get_photo.sh
写完后重启cron 服务
service cron restart
顺便附上常用的周期格式
每五分钟执行 */5 * * * *
每小时执行0 * * * *
每天执行0 0 * * *
每周执行0 0 * * 0
每月执行0 0 1 * *
每年执行0 0 1 1 *
简单总结一下定时脚本:
crontab -e
选择vim进入,到末尾输入 o
然后在末尾加入
*/5 * * * * /home/camera/get_photo.sh
然后按Esc->:wq->换行退出
最后重启cron
sudo service cron restart
实物图
最终在七牛云上见到的疗效