电子产业一站式赋能平台

PCB联盟网

搜索
查看: 611|回复: 0
收起左侧

【HarmonyOS HiSpark Wi-Fi IoT 套件试用连载】七、获取网络天气数据

[复制链接]

2607

主题

2607

帖子

7472

积分

高级会员

Rank: 5Rank: 5

积分
7472
发表于 2021-1-2 11:57:15 | 显示全部楼层 |阅读模式
【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;
      
回复

使用道具 举报

发表回复

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

本版积分规则


联系客服 关注微信 下载APP 返回顶部 返回列表