|
【HarmonyOS HiSpark Wi-Fi IoT 套件试用连载】七、获取网络天气数据,
元旦好冷,哪也不想去,那就趁着有空,写写帖子吧。今天的帖子我写的是关于如何从网络获取天气数据,以及如何解析出我们需要的天气数据。
一、天气数据获取 首先说说怎么获取天气数据。现在可以从很多平台获取到天气数据,我使用的平台是心知天气,如何只是获取实时天气情况和最近几天天气情况是免费的,只要注册账号就可以使用。地址为:https://www.seniverse.com/。心知天气里面不仅支持天气数据获取,还支持其他数据获取。这里我们需要获取天气实况和逐日天气情况。每个API有一个请求示例地址,逐日天气请求示例地址如下,每个参数都会有相关说明。
逐天天气.JPG (154.5 KB, 下载次数: 0)
下载附件 保存到相册
昨天 21:35 上传 在浏览器地址栏输入请求示例地址后,可以查看返回数据内容情况。
浏览器获取.JPG (85.97 KB, 下载次数: 0)
下载附件 保存到相册
昨天 21:36 上传 有了这个数据获取接口,接下来以下步骤来获取数据。
- 连接心知天气服务器心知天气服务器地址为116.62.81.138。端口号为80,连接方式为TCP
- 发送Get请求成功连接到心知天气服务器后,需要发送Get请求才能获取到数据。我要获取最近三天的天气预报情况,请求地址为https://api.seniverse.com/v3/weather/daily.json?key=SgJs9V9ghopE5WSBe&location=shenzhen&language=zh-Hans&unit=c&start=0&days=3则我们需要发送的数据为“Get https://api.seniverse.com/v3/weather/daily.json?key=SgJs9V9ghopE5WSBe&location=shenzhen&language=zh-Hans&unit=c&start=0&days=3\r\n\r\n”注意:最后为两个回车换行。之后会返回天气数据包,但是该数据包是Json格式的数据,需要解析才能得到我们真正需要的数据。下面是我使用调试助手获取到的数据情况。
调试情况.JPG (202.21 KB, 下载次数: 0)
下载附件 保存到相册
昨天 21:39 上传
二、软件设计
1、添加cJson功能
从网络上直接获取到的天气数据是Json格式的,需要进行解析才能得到所需天气数据。解析Json格式数据我借助第三方软件包cJson,通过cJson解析出数据。其实在wifiiot的例程源代码中,已经添加有cJson了。
cJson包.JPG (25.48 KB, 下载次数: 0)
下载附件 保存到相册
昨天 21:37 上传
但是要使用cJson功能,还需要下面操作。在OLED下的BUILD.gn文件中include_dirs加入 “//third_party/cJSON“,
cJson路径增加.JPG (46.36 KB, 下载次数: 0)
下载附件 保存到相册
昨天 21:37 上传
2、Json数据解析
在OLED下面新建从cjsonparse.c和cjsonparse.h文件,主要是关于Json数据解析的函数。这里我们获取得天气数据有两个:实时天气情况和未来三天天气数据情况,所以需要解析实时天气Json数据和未来三天天气Json数据。
解析实时天气,主要是为了获取现在的温度和天气情况代码。
- int cJSON_NowWeatherParse(char *JSON,weather *Weather)
- {
- cJSON *json,*arrayItem,*object,*subobject,*item;
|
|