碎碎念:实现了功能,但是可移植性不高(之后升级了再update)
知识点:API读取,发送邮件(mutt/msmtp)
API是Application Programming Interface(应用编程接口)的缩写,可实现电脑程序之间交互信息。
这里我们使用API获取天气预报的信息。
很多网站会提供免费的天气预报API服务给个人用户,和风天气网是其中比较不错的一个。
和风天气网网址:https://dev.heweather.com/
(参考书上用的)
我个人觉得它的使用感也确实不错,界面简洁干净,说明也比较细致。
是下面这样的:
创建自己的应用和KEY:
在创建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(包括了安装和使用的简单教程)
安装好以后,如下图。(不需要注册)
·GET + 上面的URL
·Params 可以具体填参数(location/key等等)
按一下send就会出来啦(服务器的返回)。
服务器返回的是JSON字符串
postman会将它自动格式化,显示成分行缩进的格式。
返回的信息会存在一个HeWeather6(因为是s6版本所以是6)的值内,
HeWeather6是一个数组,每一个数组元素是一个城市的天气信息。
可以根据自己需要的数据以及是否能免费获得->选择对应的URL(下图:点击常规天气数据)
文档中对各种参数的含义与功能也都讲的很清楚了~
蓝色箭头表示的数据就是本次应用中需要的啦~
所以我们之后调用的话要用到:HeWeather6[0].lifestyle
使用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
调用后会显示相关天气信息。
其实还有更多玩法,读取其他各种信息也是很OK的,可以邮件内容更丰富hh
首先要获得一个 已经打开了SMTP/POP3权限的邮箱账号。
一般邮箱都可以开启,在设置里面:授权码就是之后要使用的passward啦。
书上用的是sendEmail,我试了好久还是有问题,就换了用Mutt+msmtp来发送邮件。
pi@raspberry:~ $ sudo apt-get install mutt
pi@raspberry:~ $ sudo apt-get install 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邮件处理系统框图