[树莓派简单应用][天气助手]发一封关于“天气预报”的邮件

碎碎念:实现了功能,但是可移植性不高(之后升级了再update)

知识点:API读取,发送邮件(mutt/msmtp)

 

读取互联网API

API是Application Programming Interface(应用编程接口)的缩写,可实现电脑程序之间交互信息。

这里我们使用API获取天气预报的信息。

很多网站会提供免费的天气预报API服务给个人用户,和风天气网是其中比较不错的一个。

和风天气网网址:https://dev.heweather.com/

(参考书上用的)

我个人觉得它的使用感也确实不错,界面简洁干净,说明也比较细致。

注册成功后

是下面这样的:

[树莓派简单应用][天气助手]发一封关于“天气预报”的邮件_第1张图片

创建自己的应用和KEY:

[树莓派简单应用][天气助手]发一封关于“天气预报”的邮件_第2张图片

在创建KEY的时候需要选择类型:这次就选Web API就行了。

API获取十分简单,注册好了,https://search.heweather.net/find?location=XXX&key=X甚至就可以访问啦。

   ·location 可以是地点的经纬度、拼音、中文 、英文等等,很方便。

   ·key就是上面获得的,它的密钥,我们要保管好自己的密钥喔。

显示的结果是这样的……(↓)

可读性有点点不好。

书上使用了一款叫postman的测试工具,说可读性较强。是chrome浏览器的扩展。可以下载来用用。

不能上Google Chrome的官方商店,所以找了下面的链接安装的。

https://www.cnblogs.com/mafly/p/postman.html(包括了安装和使用的简单教程)

安装好以后,如下图。(不需要注册)

[树莓派简单应用][天气助手]发一封关于“天气预报”的邮件_第3张图片

  ·GET + 上面的URL 

  ·Params 可以具体填参数(location/key等等)

按一下send就会出来啦(服务器的返回)。

服务器返回的是JSON字符串

postman会将它自动格式化,显示成分行缩进的格式

返回的信息会存在一个HeWeather6(因为是s6版本所以是6)的值内,

HeWeather6是一个数组,每一个数组元素是一个城市的天气信息。

和风天气网接口选择~

~在图1中的“文档”下~[树莓派简单应用][天气助手]发一封关于“天气预报”的邮件_第4张图片

可以根据自己需要的数据以及是否能免费获得->选择对应的URL(下图:点击常规天气数据)

文档中对各种参数的含义与功能也都讲的很清楚了~

[树莓派简单应用][天气助手]发一封关于“天气预报”的邮件_第5张图片

 

蓝色箭头表示的数据就是本次应用中需要的啦~

[树莓派简单应用][天气助手]发一封关于“天气预报”的邮件_第6张图片

所以我们之后调用的话要用到:HeWeather6[0].lifestyle

在树莓派中使用网络API

使用bash来编写程序(python当然也Ok啊)

使用curl工具调用远程API,再使用jq工具来解析返回的天气信息。

curl工具是树莓派中自带的,需要安装jq工具:

sudo apt-get install jq

写一个获取天气预报信息的代码。

nano call_weather_api.sh

#!/usr/bin/env bash
CITY=#cityname
KEY=#密钥
WEATHER=$(curl "https://free-api.heweather.com/s6/weather?city=${CITY}&key=${KEY}")
SUGGESTIONS=$(echo ${WEATHER} | jq -r '.HeWeather6[0].lifestyle | values[].txt')
echo ${SUGGESTIONS}
bash call_weather_api.sh

调用后会显示相关天气信息。

[树莓派简单应用][天气助手]发一封关于“天气预报”的邮件_第7张图片

其实还有更多玩法,读取其他各种信息也是很OK的,可以邮件内容更丰富hh

发送邮件

首先要获得一个 已经打开了SMTP/POP3权限的邮箱账号。

一般邮箱都可以开启,在设置里面:授权码就是之后要使用的passward啦。

书上用的是sendEmail,我试了好久还是有问题,就换了用Mutt+msmtp来发送邮件。

pi@raspberry:~ $ sudo apt-get install mutt

pi@raspberry:~ $ sudo apt-get install msmtp

mutt和msmtp的配置可参考

https://www.jianshu.com/p/6366e279a9d3

权限为600 因为这里有密码所以不允许高权限,否则会警告的

Mutt 发信 GPGME: CMS protocol not available 修复

编辑 ~/.muttrc增加一句

set crypt_use_gpgme = no

试验的邮件发送成功后就可以开始发送本次的 天气信息啦~

复制文件call_weather_api.sh中的代码到新建的 send_weathermessage.sh文件中

再加一行

echo ${SUGGESTIONS} |mutt -s "weather message" 收件邮箱

运行就可以啦~

单人发送或群发

https://www.cnblogs.com/iiiiher/p/6277559.html

 

扩展:

bash 多行注释: :<<\EOF  ... EOF  

中间内容会被注释

参考资料:

如何一步一步地获取和风天气的天气数据

https://blog.csdn.net/u011134439/article/details/88550083

参考书《从树莓派开始玩转Linux》中的35章

书本使用的和风天气网是之前未更新过的,所以在jq解析的时候要注意一下

感谢~

 

杂乱:

https://yq.aliyun.com/articles/514587

如何使用sendEmail发送邮件   

http://www.mutt.org

mutt官网

http://blog.chinaunix.net/uid-20543672-id-3349607.html

Mutt邮件处理系统框图

你可能感兴趣的:(树莓派)