树莓派定时采集图像上传到服务器

优采云 发布时间: 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

  实物图

  

  最终在七牛云上见到的疗效

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线