STM32+ESP8266获取天气

8 篇文章 1 订阅
2 篇文章 0 订阅

STM32+ESP8266获取天气

最近在做一个天气小闹钟,采用STM32+ESP8266的方案获取天气。

1.搭建环境

stm32的esp8266驱动网上有许多,做开发板的一般都有配套,这里不在赘述,我们直接拿一个wifi透传的历程进行修改

2.天气接口

网上搜索天气API接口可以找到很多,有不少需要注册然后会获得一些免费的次数,这里我们希望可以找到完全免费不限次数的接口,经过查找找到一篇博客,如下:

https://blog.csdn.net/wanghao940101/article/details/72123184

决定就使用这个接口了:
http://wthrcdn.etouch.cn/weather_mini?citykey=101250201

2.1测试使用

直接在浏览器输入这个地址发现这个接口不像其他那些免费的接口结果是乱码,但是记得在写qt应用的时候返回的不是乱码,浏览器返回的数据粘贴在记事本上重新编码打开是可以得到正确的结果。

2.2stm32上测试

我们在透传历程中将wthrcdn.etouch.cn设为服务器地址,端口为80,进行测试,果然可以连接上,试着给esp8266发送

GET http://wthrcdn.etouch.cn/weather_mini?citykey=101250201\r\n

采用串口打印返回结果,什么都没有,试着把接收缓冲区的内容按16进制打印出来,发现返回的数据是有gzip头的,在网上进行搜索发现,这个接口返回的数据是经过压缩的,这下只好移植gzip进行解压缩。

3.gzip移植

gzip移植并不难,主要是占用的ram太大了,只好在加了一片外部sram。移植gzip的工程可以在这里下载

https://download.csdn.net/download/weixin_39871788/10426382

完成了gzip的移植就可以对返回的数据进行解压了

4.JSON解析

解压了数据之后正确的得到了JSON数据包,这时我们移植cJSON进行解析,cJSON移植比较简单,直接去github上下载,修改一下malloc即可。
完成了解析就可以得到自己需要的信息了,主要解压出数据是utf-8的编码方式。

先简单记录一下,有时间继续补充细节和图片

  • 7
    点赞
  • 62
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Quard_D

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值