2120|2

2549

帖子

0

TA的资源

五彩晶圆(初级)

楼主
 

【行空板 Python编程学习主控板】六:WiFi联网获取天气 [复制链接]

本帖最后由 数码小叶 于 2022-11-29 23:02 编辑

要实现行空板联网还是很方便的,可以通过WiFi或者usb转网线,相比之下WiFi联网更方便,只要配置WiFi名称和密码就行了,比较方便。

 

行空板连上WiFi后,通过默认的ip 10.1.2.3或者19.168.2.160都可以访问,通过一段时间的实验,发现还是WiFi更稳定。

行空板连上WiFi后,可以测试联网功能

 

要获取天气,必须要有个数据来源,目前这个选择比较多,有许多的天气网站都提供了接口,但是免费的都有一些数据和请求次数限制,不过个人使用够了。

实际使用中挑选了几个,心知天气、和风天气、易客云天气

 

 

 

 

 

 

几个都是各有优势,实际使用过才能发现。虽然数据来源不同,但是使用方式都是一样的,会有请求API,然后返回天气数据,就要用的python的 requests 以及 json 两个模块了,有了 json 模块,解析返回的数据就简单多了。

 

这两个模块,行空板已经内置安装好了,只要了解下其使用方法就好了

 

然后注册网站,获取拥有自己key的API,几个网站都是同一个原理

http://api.seniverse.com/v3/weather/now.json?key=ra&location=wuhu&language=zh-Hans&unit=c'

data_response=requests.get('http://api.seniverse.com/v3/weather/now.json?key=ra&location=wuhu&language=zh-Hans&unit=c')
data_response.encoding='utf-8'
weather_data = json.loads(data_response.text)

 

使用request请求,成功获取到天气数据了,三个数据源的数据有差别,格式也不是太一致,因此解析起来略微有点差距

 

 

 

收到200的Response就是网络请求成功了,对比三个数据源心知天气、和风天气、易客云天气,其实免费的版本,获取的数据都是有限的,种类不是太多,但是基本都是常见的,够用了

对于参数的解析,还要看网站的介绍,每个参数有哪些选项,然后程序里才好解析

 

不看不知道,一看吓一跳,天气居然有这么多情况。。。实际截图只有一半,但是没必要全部解析,暂时只解析几个常用的,API里提到的九种

 

网站不但提供了天气数据、常见的天气代码、数据解析,还在资源里还提供了十几套图标资源,有助于丰富天气显示界面

行空板的unihiker库里,基础控件部分提供了图片接口,可以很方便的显示图片资源

控件对象名 = GUI对象.draw_image(x, y, w, h, image,origin,onclick)

 

选择一套图标,配合行空板的接口来显示,接下来就是选择天气的几个参数显示出来了,耗费点时间,调整下界面坐标

gui.draw_text(x=30, y=80, text='城市',origin='bottom' ,font_size=15)
gui.draw_text(x=30, y=120, text='天气',origin='bottom' ,font_size=15) 
gui.draw_text(x=30, y=170, text='温度',origin='bottom' ,font_size=15)
gui.draw_text(x=150, y=170, text='湿度',origin='bottom' ,font_size=15)
gui.draw_text(x=30, y=200, text='风向',origin='bottom' ,font_size=15)
gui.draw_text(x=30, y=230, text='风速',origin='bottom' ,font_size=15)
gui.draw_text(x=10, y=260, text='空气指数',origin='bottom_left' ,font_size=15)
gui.draw_text(x=10, y=290, text='空气质量',origin='bottom_left' ,font_size=15)

开始没考虑到对齐方式,一直显示的不太好,文字错位,反复调整了很多次再加上对齐方式,最后达到了一个合适的整体效果

 

然后就是解析选择的参数,其实json模块以及解析完了,只需要从解析的字典中取数据就行了,真的是很方便

        data_wea = weather_data['wea']
        data_weather.config(text="       "+str(data_wea))
        print(data_wea)
        if data_wea == "冰雹":
            img_image = gui.draw_image(x=150, y=70, w=50, h=50,  image='bingbao.png', )
        elif data_wea == "雷阵雨":
            img_image = gui.draw_image(x=150, y=70, w=50, h=50,  image='lei.png', )
        elif data_wea == "晴":
            img_image = gui.draw_image(x=150, y=70, w=50, h=50,  image='qing.png', )
        elif data_wea == "沙尘暴":
            img_image = gui.draw_image(x=150, y=70, w=50, h=50,  image='shachen.png', )
        elif data_wea == "雾转晴":
            img_image = gui.draw_image(x=150, y=70, w=50, h=50,  image='wu.png', )
        elif data_wea == "小雪":
            img_image = gui.draw_image(x=150, y=70, w=50, h=50,  image='xue.png', )
        elif data_wea == "阴转多云":
            img_image = gui.draw_image(x=150, y=70, w=50, h=50,  image='yin.png', )
        elif data_wea == "雨":
            img_image = gui.draw_image(x=150, y=70, w=50, h=50,  image='yu.png', )
        elif data_wea == "多云":
            img_image = gui.draw_image(x=150, y=70, w=50, h=50,  image='yun.png', )

 

最后显示效果:

 

后面想把A\B两个按键利用起来,达到切换界面的效果,完善天气预报数据

最新回复

发现,很多API都是限制次数的,估计不限制次数,服务器压力会很大  详情 回复 发表于 2023-1-28 15:47
点赞 关注(1)

回复
举报

7462

帖子

2

TA的资源

五彩晶圆(高级)

沙发
 

谢谢分享,现在搞单片机的不会点前端解析都不能好好玩了。

 
个人签名

默认摸鱼,再摸鱼。2022、9、28

 

回复

33

帖子

0

TA的资源

一粒金砂(中级)

板凳
 
发现,很多API都是限制次数的,估计不限制次数,服务器压力会很大
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表