树莓派应用——每日天气预报邮件
**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
树莓派应用——每日天气预报邮件相关推荐
- 树莓派定时运行python程序_定时发送免费天气预报(邮件)短信通知的Python脚本,通用Linux,也适合树莓派...
最近在摆弄Python和树莓派,故写了个定时发送免费天气预报(邮件)短信通知的Python脚本,通用Linux,也适合树莓派或者Windows系统,为Python3版本,Python2环境下使用的话, ...
- python向自己qq邮件发信息_python实现自动向QQ邮箱发送天气预报邮件
今天是清明长假的最后一天了,趁着这点空余的时间想来做点有意思的东西,之前做12306自动购票程序的时候就想加入一个功能,就是抢票成功后实现自动向指定的邮箱里面发送提醒信息的邮件,功能还是很简单的,今天 ...
- 天气预报文字版微信_微信里的励志天气预报(每日天气预报加励志)
微信里的励志天气预报(每日天气预报加励志) 2020-05-18 14:28:25 共10个回答 有个天气预报+励志短语的软件吗 你要是苹果手机,直接到AppStore搜"天气预报",前五个有一个是M ...
- 【奇巧淫技】python 助你每天早上八点自动发送天气预报邮件到QQ邮箱
此博客仅为我业余记录文章所用,发布到此,仅供网友阅读参考,如有侵权,请通知我,我会删掉. 补充 有不少杠精小婊贝留言说本文章没有用,因为天气预报直接打开手机就可以收到了,为何要多此一举发送到邮箱呢!! ...
- python向自己qq邮箱发信息_【奇巧淫技】python!每天早上八点自动发送天气预报邮件到QQ邮箱...
本文为CSDN博主「SunriseCai」的原创文章 补充 有不少读者留言说本文章没有用,因为天气预报直接打开手机就可以收到了,为何要多此一举发送到邮箱呢!!!那我在这里只能说:因为你没用,所以你没用 ...
- 树莓派智能家居-天气预报和实时温湿度监控
上篇博文<树莓派智能家居-语音聊天机器人实现>实现了树莓派的语音聊天功能,在其基础上,实现语音获取天气预报和当前温湿度. 获取天气预报 目前有现成的天气预报API,直接调用即可,代码如下: ...
- python爬取天气预报并发送短信_Python3爬虫教程之利用Python实现发送天气预报邮件...
前言 此次的目标是爬取指定城市的天气预报信息,然后再用Python发送邮件到指定的邮箱. 下面话不多说了,来一起看看详细的实现过程吧 一.爬取天气预报 1.首先是爬取天气预报的信息,用的网站是中国天气 ...
- python实现天气预报_【Python3爬虫】用Python实现发送天气预报邮件
此次的目标是爬取指定城市的天气预报信息,然后再用Python发送邮件到指定的邮箱. 一.爬取天气预报 1.首先是爬取天气预报的信息,用的网站是中国天气网,网址是http://www.weather.c ...
- python数据分析天气预报论文_Python定时发送天气预报邮件
用python爬虫爬到的天气预报,使用smtplib和email模块可以发送到邮箱,使用schedule模块可以定时发送.以下是代码- #导入模块 import requests from bs4 i ...
最新文章
- HDU 4619 Warm up 2 最大独立集
- 中国最新奥数竞赛成绩出炉:南师大附中女生严彬玮满分夺冠!60人国家集训队名单公布...
- c:if判断参数是否为空
- 揭露男生的真实心理年龄测试软件,心理年龄测试
- java数据接口之链表_Java数据结构和算法之链表
- lintcode :链表插入排序
- python初学者用什么编辑器好_新人学 python 选什么编辑器比较好呢??
- C#LeetCode刷题之#461-汉明距离​​​​​​​(Hamming Distance)
- Android第四十五天
- win7 java jna找不到_java – 资源路径中找不到JNA本机支持(/com/sun/jna/linux-arm/libjnidispatch.so)...
- ZooKeeper的安装及部署
- 【转】Mac端包管理工具——Homebrew简介及安装
- 堆排序算法(图解详细流程)
- stm32h750电路_STM32H750开发板
- hikvision服务器重装系统,一篇看懂黑群晖重装系统
- 启动计算机 登管理员用户,Windows xp系统使用管理员账户登入系统的技巧
- 如何保证战略落地_如何保障企业战略落地实施
- html在线ocr文字识别源码,如何用OCR文字识别软件把图像转换成HTML
- 一文搞懂Spark的Task调度器(TaskScheduler)
- 魅族Android7.0刷机包,乐视X900+安卓7.1.2 魅族Flyme6刷机包 最新6.8.3.17R版 紫火20180510更新...
热门文章
- java Queue中 add/offer,element/peek,remove/poll区别
- 使用Cisco Packet Tracer抓取OSPF协议报文
- 第十六届智能车稳压模块设计——LOD与DCDC的使用对比
- 卧听夏蝉---app_trace和xmlhttp.responseText的关系
- 解析SSL通配符证书 通配符证书是什么
- Photoshop 可选颜色原理
- php 更换用户头像,替换用户头像
- c3po连接mysql带端口号_利用C3PO配置数据库连接池出现的问题
- 2008年山东师范大学面向社会招收普通高等教育专升本学生
- 【转载】csr8670--sink工程的大致工作流程分析(以speaker为例)二