心知天气网站的数据获取

笔者来简单提一下获取天气网站的一些数据(网站提供了API接口)

一、测试

笔者使用的是心知天气,提供了免费的API,直接在浏览器输入网址:(key+localtion+language)

https://api.seniverse.com/v3/weather/now.json?key=your_private_key&location=beijing&language=zh-Hans&unit=c

则可以获取数据:

{"results":[{"location":{"id":"WX4FBXXFKE4F","name":"北京","country":"CN","path":"北京,北京,中国","timezone":"Asia/Shanghai","timezone_offset":"+08:00"},"now":{"text":"晴","code":"0","temperature":"23"},"last_update":"2022-05-01T19:00:00+08:00"}]}

二、嵌入式设备访问

当然这只是测试,更多的场景是在嵌入式设备中获取数据来进行显示。笔者使用的是ESP8266,相当于WIFI模块,可以用来连接网络获取数据,首先需要连接wifi,这都不多说,接下来建立网络连接:

  • 使用AT指令建立TCP链接,
"AT+CIPSTART=\"TCP\",\"api.seniverse.com\",80\x0d\x0a"

当然可以先通过串口直接连接8266进行测试:
请添加图片描述

  • 使用API进行访问,笔者之前就想着C语言怎么发送get 或者post的请求,也没有参数指定,后来经过借鉴,发现直接在url 之前加入 get 就可以:
GET https://api.seniverse.com/v3/weather/now.json?key=your_private_key&location=beijing&language=zh-Hans&unit=c

通过ESP8266直接发送,就可以返回数据,同样串口直接测试:
请添加图片描述
请添加图片描述
可以通过OLED进行显示。
请添加图片描述

请添加图片描述
串口AT指令测试:
请添加图片描述
【参考】https://blog.csdn.net/lllmeimei/article/details/119445152