树莓派天气助手
Vamei大神<<树莓派开始,玩转Linux>>第35章天气助手的简易复现!!
心知天气API 配置
API控制台官方网站:https://www.seniverse.com/dashboard
- 如果你使用的是免费订阅,请复制下列链接:
https://api.seniverse.com/v3/weather/now.jsonkey=你的私钥&location=城市&language=zh-Hans&unit=c
- scheme: https
- host: api.seniverse.com
- path:v3/weather/now
- query parameters:jsonkey=&location=&language=zh-Hans&unit=c
key可以自行注册好,创建免费项目后,在官方项目管理网站上获取:
使用Postman进行请求访问:
树莓派调用API
Linux常常使用curl工具来调用远程API,再使用jq工具来解析返回的天气信息。其中curl树莓派自带,jq工具需要额外的安装。(二者的使用方法自行CSDN)
根据怕postman请求的结果编写脚本:
#!/usr/bin/env bash
city_name=wuxi
private_key_number=***
data=$(curl "https://api.seniverse.com/v3/weather/now.json?key=${private_key_number}&location=${city_name}&language=zh-Hans&unit=c")
weather=$(echo ${data} | jq -r '.results[0].now | .text')
temperature=$(echo ${data} | jq -r '.results[0].now | .temperature')
echo ${weather}
echo ${temperature}
树莓派以邮箱的方式发送天气内容
先安装sendemail
sudo apt-get install sendemail
将前面调用天气API获取到的天气信息编写到发送邮箱代码代码:
#!/usr/bin/env bash
city_name=**
private_key_number=**
data=$(curl "https://api.seniverse.com/v3/weather/now.json?key=${private_key_number}&location=${city_name}&language=zh-Hans&unit=c")
date=$(echo ${data} | jq -r '.results[0].last_update')
weather=$(echo ${data} | jq -r '.results[0].now | .text')
temperature=$(echo ${data} | jq -r '.results[0].now | .temperature')
SERVER="smtp.qq.com:587" # 这里指发送服务器
FROM="**.com" # 发送邮箱
TO="**.com" # 接收邮箱通过命令行传入QQ号
SUBJECT="${date} 天气 " # 主题
MESSAGE="今天天气:${weather}, 平均气温为:${temperature}" # 邮件文本内容
CHARSET="utf-8" # 字体
USERNAME="**.com" # 发送邮箱
PASSWD="**" # 发送邮箱密码,非qq密码,需自行在邮箱中查找
#FILE="$1" # 附件
sendemail \
-f ${FROM}\
-t ${TO}\
-u ${SUBJECT}\
-s ${SERVER}\
-m ${MESSAGE}\
-xu ${USERNAME}\
-xp ${PASSWD}\
-v -o message-charset=${CHARSET}
# -a ${FILE}
# 无法发送多文件
上面的PASSWD如果是QQ邮箱,查找的界面如下:
运行脚本,界面如下:
接受邮箱成功受到邮箱信息:
设置自动发送
利用cron规划助手,让树莓派在特定的时间发出邮件提醒。
输入crontab -e进入编辑页面,如果我们要设置每天8.30发送邮件,那么增加
30 8 * * * bash 路径/发送右键的sh
运行后每天8.30(树莓派开机)将会给我们的邮箱推送天气情况!!