树莓派天气助手

发布时间 2023-09-02 20:37:53作者: 不做签到员

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(树莓派开机)将会给我们的邮箱推送天气情况!!