MicroPython 玩转硬件系列6:获取天气情况

简介: MicroPython 玩转硬件系列6:获取天气情况

前面几篇文章介绍了MicroPython的一些基础功能,今天实现一个稍微有趣些的功能:获取天气情况。本以为很容易实现,结果还是遇到了一些坑。把实现的整个过程分享给大家。一种简单的实现方式是通过天气预报网站提供的API,直接获取结构化的数据,从而得到天气信息。第一步,我们先在电脑上用Python实现该功能。在网上查到有很多网站可以提供API服务,但很多都需要收费或者注册使用。

https://zhuanlan.zhihu.com/p/26369491 这个链接里看到作者说http://www.weather.com.cn/ 这个网站不用注册,可以直接使用。我试了下,通过以下步骤确实可以得到数据。            

1) 先安装requests,requests是Python的HTTP库

pip install requests

2) 在http://www.weather.com.cn/ 网站,输入北京或者其他城市,点击搜索

获取北京的代码101010100:

下面几行代码就可以显示出风向和温度了:

import requests
r = requests.get('http://www.weather.com.cn/data/sk/101010100.html')
r.encoding = 'utf-8'
print r.json()['weatherinfo']['city'], r.json()['weatherinfo']['WD'], r.json()['weatherinfo']['temp']

显示结果如下:

本以为这功能就实现了,我还特意和网上搜索出来的天气对比了下,感觉也差不多。


但是后来却发现这个网站并不靠谱,原因是首先这个值压根就不变,其次我换了一个其他的城市,比如合肥


发现和实际的天气情况差别巨大:

于是放弃了这个不靠谱的网站,转而寻找其他的网站。经过一番寻找,找到了这个网站,这是API说明https://docs.seniverse.com/api/weather/now.html这个是Github代码例子:https://github.com/seniverse/seniverse-api-demos/tree/master/python用了一下挺不错的。下面是示例代码:

import requests
Url = 'https://api.seniverse.com/v3/weather/now.json'
AppKey = '4r9bergjetiv1tsd'
Value = {'key':AppKey, 'location':'beijing','language':'zh-Hans','unit':'c'}
r = requests.get(Url,params=Value)
#print r.content
#print r.status_code
#print r.text
#print r.json()
print r.json()['results'][0]['location']['name'],r.json()['results'][0]['now']['temperature'],r.json()['results'][0]['now']['text']

显示结果如下:

换成合肥的再试试

这个还是比较靠谱的。免费用户只返回天气现象文字、代码和气温 3 项数据。付费用户可获取全部数据,包括气压、能见度、风速等。上面的代码requests get方法获取的是JSON格式的数据,JSON (JavaScript Object Notation) is a lightweight data-interchange format. It is easy for humans to read and write. It is easy for machines to parse and generate.第二步,我们在ESP32上使用MicroPython来实现该功能。1) 首先按照上一篇文章的方法,先让ESP32连接上WIFI热点可以先上网2) 之后就可以通过下面几行代码实现功能

import urequests
Url = 'https://api.seniverse.com/v3/weather/now.json?key=SK6E_7MBhPJr0_Cs3&location=beijing&language=zh-Hans&unit=c'
r = urequests.get(Url)
r.json()
print r.json()['results'][0]['location']['name'],r.json()['results'][0]['now']['temperature'],r.json()['results'][0]['now']['text']

备注:MicroPython用的是urequests,不是Python里的requests,另外语法格式上也有所不同。结果如下:

显示乱码是因为PuTTY设置问题,改为下面这样就可以了:

最后结果如下:

相关文章
|
7月前
|
调度
【技术探讨】无线通信模块拉距测试,是否一定要带笔记本电脑?
对于Sub-G的无线模块通常通信距离较远可以达到公里级甚至数公里之远,而笔记本的续航时间通常是2-3个小时,很多用户测试到一半,不得不提前终止测试,回去给笔记本电脑充电
HMI-38-【节能模式】中心仪表mini仪表速度表实现
今天我们来做中心仪表的mini仪表中的车速表,就是三个数字显示,数字素材因为我的艺术家给我设计的时候,偷懒了,没有用下图中的字体,还是沿用了运动和舒适模式中的字体,咱们就将就的用吧,没有办法呀,咱也不会搞美术呀。
HMI-38-【节能模式】中心仪表mini仪表速度表实现
HMI-37-【节能模式】中心仪表实现
节能模式下,做难做的就是中心仪表了,其他两个都很简单了。那么今天就把这个给实现了。
HMI-37-【节能模式】中心仪表实现
|
移动开发 网络协议 小程序
嵌入式开发—天气时钟
本文详细介绍了利用ESP8266 WIFI模块制作天气时钟的过程,从ESP8266联网,访问API获取信息,到GUI设计,非常详细。想要尝试设计一个自己的天气时钟的小伙伴可以看一看,期待能够互相交流。
250 1
|
算法 内存技术
飞腾X100 LPDDR颗粒线序配置辅助工具
飞腾X100 LPDDR颗粒线序配置辅助工具
147 0
飞腾X100 LPDDR颗粒线序配置辅助工具
|
安全 数据可视化 物联网
米尔电子新出的这款车规级芯片的T507开发板老牛逼了! 安排!
米尔电子新出的这款车规级芯片的T507开发板老牛逼了! 安排!
223 0
|
C语言 Python Windows
MicroPython 玩转硬件系列2:点灯实验
MicroPython 玩转硬件系列2:点灯实验
|
数据管理 数据库
便携式钻孔测斜仪软件运行状态
设备启动后,自动进入测斜仪程序主界面(若设置了程序自动启动),主界面见图 5.1。若未设置程序自动启动,则可通过双击系统桌面上的测量【APP】程序快捷方式,进入软件。
便携式钻孔测斜仪软件运行状态
|
数据采集 存储 传感器
便携式钻孔测斜仪数据采集仪组成和测斜探头的使用方法
数据采集仪是钻孔测斜仪的操作平台及数据终端,可对测量区域、测区钻孔等测量基本信息进行设置、在测量过程中对测量参数进行设置、对测量数据进行存储导出。
便携式钻孔测斜仪数据采集仪组成和测斜探头的使用方法
|
固态存储 Unix 异构计算
硬件开发笔记(一):高速电路设计Cadence Aleegro软件介绍和安装过程
硬件开发笔记(一):高速电路设计Cadence Aleegro软件介绍和安装过程
硬件开发笔记(一):高速电路设计Cadence Aleegro软件介绍和安装过程