yywudao 发表于 2019-11-27 23:06:48

掌控板独立显示天气信息(二)--mPython X

前几天写了一个帖子,《掌控配虚谷显示天气信息》,经虚谷群里獬独的指正,原来获取天气的原始数据经过了GZIP的压缩,但是micropython固件中并没有GZIP模块,獬独大大在他的帖子中《掌控独立显示天气信息》给出了一个解压方式,这样就无需用虚谷号处理数据,掌控自行处理天气数据并进行显示。
奈何本人萌新一枚,接触 python 没多久,着实读不懂帖子里数据处理的那段代码,大写的尴尬。。。。
那有没有其他方式,不需要密匙,不需要外再的设备,不需要重新编写解压代码,利用掌控固件中现有的模块,处理数据,显示天气信息呢?
还真有。此处再次感谢獬独大大,他在虚谷群里给出了另一个获取天气信息的网址:http://t.weather.sojson.com/api/weather/city/101110101

程序的大致流程:
1. 连接WIFI
2. 利用 urequests 模块,请求网址的天气数据: urequests.get(url)
3. 利用 urequests 内置的 json() ,把获取的数据转换成字典类型(dirct)
4. 对字典类型数据进行信息提取,提起所需要的天气信息,通过掌控的 OLED 屏予以显示

先贴一段利用虚谷号的 jupyter 显示天气信息具体数据的截图



可以看出这个字典类数据的具体天气信息

接下来是 mPython X 中的图形化积木块程序:

利用到分栏中的 WIFI、网络、字典、列表、变量(确实看着蛮繁琐的,层层嵌套。。。)


老规矩,上代码:
from mpython import *
import network
import urequests
import json

my_wifi = wifi()
my_wifi.connectWiFi("WIFI名称", "WIFI密码")

_response = urequests.get("http://t.weather.sojson.com/api/weather/city/101110101")
data = _response.json()
oled.DispChar(data["cityInfo"]["city"], 0, 0, 1)
oled.DispChar(data["data"]["forecast"]["ymd"], 60, 0, 1)
oled.DispChar(data["data"]["forecast"]["low"], 0, 16, 1)
oled.DispChar(data["data"]["forecast"]["high"], 0, 32, 1)
oled.DispChar(data["data"]["forecast"]["type"], 60, 16, 1)
oled.DispChar(data["data"]["forecast"]["fx"], 0, 48, 1)
oled.DispChar(data["data"]["forecast"]["fl"], 60, 48, 1)
oled.show()


显示效果:

rzyzzxw 发表于 2019-11-28 08:04:57

嗯嗯,天气研究告一段落,大体上的收获:
urequests模块的认知
数据显示也就是字典key:value的获取。
每天的数据在列表的各项里。(hao)

rzyzzxw 发表于 2019-11-28 08:10:53

想学习列表和字典的使用(wu)
建议学学python源码的语法和数据结构(sang)
页: [1]
查看完整版本: 掌控板独立显示天气信息(二)--mPython X