最近在看《树莓派开始,玩转Linux》,里面有一个项目特别有意思,第35章,天气助手——就是让树莓派给你邮箱发送天气预报,所以我决定尝试尝试。

Step1:选择天气预报服务

这里我选择使用和风天气的API。先到和风天气官网注册一个账户,在控制台查看自己的API接口信息,你会看到个人认证的key。注意,个人认证的key和密码一样是私密信息,最好不要公开放到互联网上。

Step2:测试API

在浏览器中输入https://free-api.heweather.net/s6/weather?location=你的城市&key=你的key,你会看到下边的信息:
在这里插入图片描述这里我补充一下,书中给出和风天气的API接口不能用了,我们得换现在和风天气的API接口,所以不能完全照书中的代码。

Step3:获取天气预报信息

我们需要curl工具来调用远程API,这个树莓派已经自带,再使用jq工具来解析返回的天气信息,安装命令sudo apt-get install jq
然后使用bash脚本语言来编写程序,从天气预报的API读取信息。

sudo nano weather.sh

将下列代码复制
#!/usr/bin/env bash

CITY=liuzhou
TOKEN=你的key
WEATHER=$(curl "https://free-api.heweather.net/s6/weather?location=${CITY}&key=${TOKEN}")
SUGGESTIONS=$(echo ${WEATHER} | jq -r '.HeWeather6[0].lifestyle | values[].txt')
echo ${SUGGESTIONS}

bash weather.sh 得到的结果
在这里插入图片描述
如果你做了第二步的话你会发现我们修改这里的参数代码中HeWeather6[0].lifestyle可以获取到你想要的信息。

Step4:发送至你的邮箱
sudo nano sent_email.sh
SERVER="smtp.qq.com:587"
FROM="你的邮箱"
TO="你的邮箱"
SUBJECT="天气预报 $(date)"
MESSAGE="${SUGGESTIONS}"
CHARSET="utf-8"
USERNAME="你的邮箱"
PASSWORD="这里不是你的QQ密码,先往下看"

sendemail \
        -f ${FROM} \
        -t ${TO} \
        -u ${SUBJECT} \
        -s ${SERVER} \
        -m ${MESSAGE} \
        -xu ${USERNAME} \
 	-xp ${PASSWORD} \
        -v -o message-charset=${CHARSET}

这里我选择的是QQ 邮箱,不想用QQ 邮箱的也可选择其他的,不过SERVER="smtp.qq.com:587"需要换成对应邮箱的服务器,请自行查找。
关于代码里的PASSWORD,这里不是要填你的密码!!!
这里你得登陆你的QQ邮箱,在设置里边选择开启SMTP服务,你会看到让你发送“配置邮件客户端”到一个号码,发送成功后它会给你一串字符,你把这串字符复制到PASSWORD中即可。
好了,现在我们可以把上面的weather.sh里面的代码加到这个上面。
最后运行bash sent_email.sh
在这里插入图片描述成功,你现在以及可以让树莓派给你发送天气预报的信息了。如果需要,可以把天气预报换成任何你想要发送的信息。。

Step5:让树莓派在特定时间发出邮件

我们可以用crontab -e
进入编辑页面,这里我设定每天8点发送邮件,在里边增加

0 8 * * * bash /home/pi/sheji/sent_email.sh

关于cron,想了解更多可参考这篇博客.

Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐