**DIY目标:**
使用树莓派实现每日自动发送天气预报邮件的功能。
**平台:**
树莓派4b
**步骤:**
1.注册 和风天气 获取一个免费的Key
2.使用Postman测试网站的API,了解参数和返回的天气数据格式。
3.写一个sh脚本,获取天气信息,并使用jq对信息进行提取。
4.自动发送邮件

1.注册 和风天气 获取一个免费的key

API是Application Programming Interface的英文缩写,我们将使用互联网API获取天气预报信息。
首先在和风天气网站注册账户:
https://id.heweather.com/login?redirect=https://console.heweather.com/my/service。
登录,进入 应用管理 新建应用,输入应用名称,然后添加KEY,类型选择WebAPI,前两种类型无法当作普通的站点。之后就可以看到一串数字和字母组成的key,记住她,并妥善保管。

2.使用Postman测试网站的API,了解参数和返回的天气数据格式。
我们可以使用Postman软件对目标网络API进行测试。了解API的输入参数和返回值格式。
postman下载地址:https://www.postman.com/downloads/
打开postman,新建标签页,选择GET,输入目标网址,这里我们可以参考和风天气的帮助文档:https://dev.heweather.com/docs/api/weather

通过这份文档可以发现,Postman中的网址可以输入https://free-api.heweather.net/s6/weather/{weather-type}?{parameters},其中,weather-type是你想知道的天气预报类型,比如now,lifestyle等,这里我们写成lifestyle,parameters需要填写城市和key的信息。在Postman中按照下图配置即可。

点击发送,就可以得到API返回值。

注意,这里的返回值格式是JSON,我们后期还需要用jq软件对其进行信息提取。
3.写一个sh脚本,获取天气信息,并使用jq对信息进行提取。
在树莓派中,我们要用到curl指令访问API站点,然后使用jq指令处理返回的信息。curl程序已经在系统中了,我们还需要下载jq程序。

sudo apt-get install jq

最后,来编写bash脚本:

#!/usr/bin/env bash
WEATHER=$(curl "https://free-api.heweather.net/s6/weather/lifestyle?location=你所在的城市名&key=你的key码")
SUGGESTIONS=$(echo ${WEATHER} | jq -r '.HeWeather6[0].lifestyle | values[].txt')

上述bash指令中,curl一行从目标站点获取了天气信息。echo一行,通过管道将多个指令连接起来,也就是,把WEATHER送入jq指令,在jq指令中对信息进行提取,这里有必要说明一下jq指令的使用方法。

jq [options] filter [files]
**options:**
--version:输出jq的版本信息并退出
--slurp/-s:读入整个输入流到一个数组。
--raw-input/-R:不作为JSON解析,将每一行的文本作为字符串输出到屏幕。
--null-input/ -n:不读取任何输入,过滤器运行使用null作为输入。一般用作从头构建JSON数据。
--compact-output /-c:使输出紧凑,而不是把每一个JSON对象输出在一行。
--colour-output / -C:打开颜色显示
--monochrome-output / -M:关闭颜色显示--ascii-output /-a:指定输出格式为ASCII-raw-output /-r :如果过滤的结果是一个字符串,那么直接写到标准输出(去掉字符串的引号)**filter:**
.   : 默认输出
.foo: 输出指定属性,foo代表属性。
.[foo] :输出指定数组元素。foo代表数组下标。
.[]:输出指定数组中全部元素
, :指定多个属性作为过滤条件时,用逗号分隔
| : 将指定的数组元素中的某个属性作为过滤条件**files:**JOSN格式文件。

这里我们来看WEATHER是什么。
执行echo $WEATHER

pi@raspberrypi:~ $ WEATHER=$(curl "https://free-api.heweather.net/s6/weather/lifestyle?location=shijiazhuang&key=a9e3cd9e0e9548f98dd4d79d394c67b2")% Total    % Received % Xferd  Average Speed   Time    Time     Time  CurrentDload  Upload   Total   Spent    Left  Speed
100  1458  100  1458    0     0  10414      0 --:--:-- --:--:-- --:--:-- 10489
pi@raspberrypi:~ $ echo $WEATHER
{"HeWeather6":[{"basic":{"cid":"CN101090101","location":"石家庄","parent_city":"石家庄","admin_area":"河北","cnty":"中国","lat":"38.04547501","lon":"114.50246429","tz":"+8.00"},"update":{"loc":"2020-06-28 05:55","utc":"2020-06-27 21:55"},"status":"ok","lifestyle":[{"type":"comf","brf":"舒适","txt":"白天温度适宜,风力不大,相信您在这样的天气条件下,应会感到比较清爽和舒适。"},{"type":"drsg","brf":"热","txt":"天气热,建议着短裙、短裤、短薄外套、T恤等夏季服装。"},{"type":"flu","brf":"少发","txt":"各项气象条件适宜,发生感冒机率较低。但请避免长期处于空调房间中,以防感冒。"},{"type":"sport","brf":"较不宜","txt":"有降水,且风力较强,气压较低,推荐您在室内进行低强度运动;若坚持户外运动,须注意避雨防风。"},{"type":"trav","brf":"一般","txt":"有降水,请尽量不要外出,若外出,请注意防雷。风稍大但温度适宜,还是可以外出游玩的。"},{"type":"uv","brf":"最弱","txt":"属弱紫外线辐射天气,无需特别防护。若长期在户外,建议涂擦SPF在8-12之间的防晒护肤品。"},{"type":"cw","brf":"不宜","txt":"不宜洗车,未来24小时内有雨,如果在此期间洗车,雨水和路上的泥水可能会再次弄脏您的爱车。"},{"type":"air","brf":"良","txt":"气象条件有利于空气污染物稀释、扩散和清除。"}]}]}

所以,我们用jq指令,将其中lifestyle项中的所有txt文本提取出来。


pi@raspberrypi:~ $ echo $SUGGESTIONS
白天温度适宜,风力不大,相信您在这样的天气条件下,应会感到比较清爽和舒适。 天气热,建议着短裙、短裤、短薄外套、T恤等夏季服装。 各项气象条件适宜,发生感冒机率较低。但请避免长期处于空调房间中,以防感冒。 有降水,且风力较强,气压较低,推荐您在室内进行低强度运动;若坚持户外运动,须注意避雨防风。 有降水,请尽量不要外出,若外出,请注意防雷。风稍大但温度适宜,还是可以外出游玩的。 属弱紫外线辐射天气,无需特别防护。若长期在户外,建议涂擦SPF在8-12之间的防晒护肤品。 不宜洗车,未来24小时内有雨,如果在此期间洗车,雨水和路上的泥水可能会再次弄脏您的爱车。 气象条件有利于空气污染物稀释、扩散和清除。

4.自动发送邮件
安装步骤参考:https://www.jianshu.com/p/6366e279a9d3
配置之后,在我们之前的sh脚本中添加以下代码:

echo ${SUGGESTIONS} | mutt -s "Shijiazhuang $(date)" 718960934@qq.com

最后,配置自动进程文件。
在终端中输入如下命令:

crontab -e

打开文件的最底端添加一行:

00 7 * * * sh /home/pi/call_weather_api.sh

至此,就可以实现用树莓派自动发送天气邮件啦!
最后,这个应用还可以有几点扩展:
1.尝试获取不同的天气信息,比如当前天气,3-10天天气预报等,当然,也需要修改后边的jq指令,获取不同的信息。
2.自动发送邮件的内容可以不局限于天气,比如日常问候等等,有了这一点,可以做到的事情是不是很多呢(≧∇≦)ノ

https://www.jianshu.com/p/6366e279a9d3
https://blog.csdn.net/u011641885/article/details/45559031

树莓派应用——每日天气预报邮件相关推荐

  1. 树莓派定时运行python程序_定时发送免费天气预报(邮件)短信通知的Python脚本,通用Linux,也适合树莓派...

    最近在摆弄Python和树莓派,故写了个定时发送免费天气预报(邮件)短信通知的Python脚本,通用Linux,也适合树莓派或者Windows系统,为Python3版本,Python2环境下使用的话, ...

  2. python向自己qq邮件发信息_python实现自动向QQ邮箱发送天气预报邮件

    今天是清明长假的最后一天了,趁着这点空余的时间想来做点有意思的东西,之前做12306自动购票程序的时候就想加入一个功能,就是抢票成功后实现自动向指定的邮箱里面发送提醒信息的邮件,功能还是很简单的,今天 ...

  3. 天气预报文字版微信_微信里的励志天气预报(每日天气预报加励志)

    微信里的励志天气预报(每日天气预报加励志) 2020-05-18 14:28:25 共10个回答 有个天气预报+励志短语的软件吗 你要是苹果手机,直接到AppStore搜"天气预报",前五个有一个是M ...

  4. 【奇巧淫技】python 助你每天早上八点自动发送天气预报邮件到QQ邮箱

    此博客仅为我业余记录文章所用,发布到此,仅供网友阅读参考,如有侵权,请通知我,我会删掉. 补充 有不少杠精小婊贝留言说本文章没有用,因为天气预报直接打开手机就可以收到了,为何要多此一举发送到邮箱呢!! ...

  5. python向自己qq邮箱发信息_【奇巧淫技】python!每天早上八点自动发送天气预报邮件到QQ邮箱...

    本文为CSDN博主「SunriseCai」的原创文章 补充 有不少读者留言说本文章没有用,因为天气预报直接打开手机就可以收到了,为何要多此一举发送到邮箱呢!!!那我在这里只能说:因为你没用,所以你没用 ...

  6. 树莓派智能家居-天气预报和实时温湿度监控

    上篇博文<树莓派智能家居-语音聊天机器人实现>实现了树莓派的语音聊天功能,在其基础上,实现语音获取天气预报和当前温湿度. 获取天气预报 目前有现成的天气预报API,直接调用即可,代码如下: ...

  7. python爬取天气预报并发送短信_Python3爬虫教程之利用Python实现发送天气预报邮件...

    前言 此次的目标是爬取指定城市的天气预报信息,然后再用Python发送邮件到指定的邮箱. 下面话不多说了,来一起看看详细的实现过程吧 一.爬取天气预报 1.首先是爬取天气预报的信息,用的网站是中国天气 ...

  8. python实现天气预报_【Python3爬虫】用Python实现发送天气预报邮件

    此次的目标是爬取指定城市的天气预报信息,然后再用Python发送邮件到指定的邮箱. 一.爬取天气预报 1.首先是爬取天气预报的信息,用的网站是中国天气网,网址是http://www.weather.c ...

  9. python数据分析天气预报论文_Python定时发送天气预报邮件

    用python爬虫爬到的天气预报,使用smtplib和email模块可以发送到邮箱,使用schedule模块可以定时发送.以下是代码- #导入模块 import requests from bs4 i ...

最新文章

  1. HDU 4619 Warm up 2 最大独立集
  2. 中国最新奥数竞赛成绩出炉:南师大附中女生严彬玮满分夺冠!60人国家集训队名单公布...
  3. c:if判断参数是否为空
  4. 揭露男生的真实心理年龄测试软件,心理年龄测试
  5. java数据接口之链表_Java数据结构和算法之链表
  6. lintcode :链表插入排序
  7. python初学者用什么编辑器好_新人学 python 选什么编辑器比较好呢??
  8. C#LeetCode刷题之#461-汉明距离​​​​​​​(Hamming Distance)
  9. Android第四十五天
  10. win7 java jna找不到_java – 资源路径中找不到JNA本机支持(/com/sun/jna/linux-arm/libjnidispatch.so)...
  11. ZooKeeper的安装及部署
  12. 【转】Mac端包管理工具——Homebrew简介及安装
  13. 堆排序算法(图解详细流程)
  14. stm32h750电路_STM32H750开发板
  15. hikvision服务器重装系统,一篇看懂黑群晖重装系统
  16. 启动计算机 登管理员用户,Windows xp系统使用管理员账户登入系统的技巧
  17. 如何保证战略落地_如何保障企业战略落地实施
  18. html在线ocr文字识别源码,如何用OCR文字识别软件把图像转换成HTML
  19. 一文搞懂Spark的Task调度器(TaskScheduler)
  20. 魅族Android7.0刷机包,乐视X900+安卓7.1.2 魅族Flyme6刷机包 最新6.8.3.17R版 紫火20180510更新...

热门文章

  1. java Queue中 add/offer,element/peek,remove/poll区别
  2. 使用Cisco Packet Tracer抓取OSPF协议报文
  3. 第十六届智能车稳压模块设计——LOD与DCDC的使用对比
  4. 卧听夏蝉---app_trace和xmlhttp.responseText的关系
  5. 解析SSL通配符证书 通配符证书是什么
  6. Photoshop 可选颜色原理
  7. php 更换用户头像,替换用户头像
  8. c3po连接mysql带端口号_利用C3PO配置数据库连接池出现的问题
  9. 2008年山东师范大学面向社会招收普通高等教育专升本学生
  10. 【转载】csr8670--sink工程的大致工作流程分析(以speaker为例)二