详细教程应用侧开发Java Demo

网友投稿 976 2022-05-30

华为云IOT的应用侧开发Java Demo使用详细教程

(IDEA 开发)

第0章 简介

最近有很多小伙伴在使用华为云IOT的应用侧开发的Java Demo时遇到一些问题,本期就教大家如何使用这个基于华为云官方提供的Java Demo,本期教程带大家做的是查询的在线状态和设备影子属性,并解析JSON数据,大家可以根据自己的需要进行二次开发,结果如下:

有需要参考esp8266系列设备接入华为云物联网平台(IOTDA) 并完成设备属性上报流程的小伙伴可以参考我之前发的帖子。

第1章 整体流程概述

一、操作前的准备

二、导入华为云官方提供的应用侧开发Java Demo工程并配置环境

三、获取Token

四、调用接口

第2章 具体详细步骤

详细教程:应用侧开发Java Demo

一、 操作前的准备

1、环境准备

(1) JDK(jdk-8u161-windows-x64.exe+配置环境变量)

(2) IntelliJ IDEA

(3) apache-maven

(4) 设备接入IOTDA

2、 参数信息准备:进入我的凭证页 准备下面信息(样例,请大家换成自己的参数,不清楚的可以参考下面的“参数来源”)

(1) 华为云账号名:hw_666666_01

(2) IAM用户名:FUNIOT(一般默认为账号名,此处我采用的是创建的其他IAM账户:FUNIOT)

(3) IAM用户登录华为云密码:ABCD1234

(4) 项目ID:09903251671035vz9u03030f

(5) 设备ID:513423536g4be_esp8266_test01

(6) 设备属性:temp    (本次教程用于查询设备影子的设备属性)

(7) IAM服务对接地址:https://iam.cn-north-4.myhuaweicloud.com     (根据自己项目调整 )

(8) 接入服务对接地址:https://iotda.cn-north-4.myhuaweicloud.com (根据自己项目调整 )

3、 【参数来源】

(1) 设备ID、设备属性、产品ID可在设备接入控制台 中查看

(2) IAM:默认为华为云账号名,根据官方提示,如果您的华为云帐号已升级为华为帐号,不支持获取帐号Token,建议您在统一身份认证 处创建IAM用户,授予该用户权限,以获取该IAM用户的Token。

二、 导入华为云官方提供的应用侧开发Java Demo工程并配置环境

1、 下载官方提供的Java Demo

链接:https://iot-developer.obs.cn-north-4.myhuaweicloud.com/javaApiDemo2.zip

此时我们得到了javaApiDemo2.zip的压缩文件,然后接下来我们解压缩文件并导入工程。

2、 导入工程并进行简单配置

(1) 导入工程:Open->路径\pom.xml->Open as Project

(2) 配置工程的本地maven仓库

File->Settings->Bulid,Execution,Deployment->Maven->User setting file,选择maven的config->setting.xml

注:一般设置好User setting file 路径后Local respository会自动更新

三、 获取Token

1、 配置IAM服务对接地址和接入服务对接地址

在IDEA中,打开“JavaApiDemo> src >main>java> com.huawei.util > Constants.java”,修改TOKEN_BASE_URL、IOTDM_BASE_URL,将我们提前准备的地址数据填入:

2、 获取IAM用户Token接口鉴权

(1) 打开JavaApiDemo -> src -> main ->java ->com.huawei.demo.auth -> Authentication.java

在88行左右填入我们设置的账号名、IAM用户名、IAM用户密码

(2) 右键运行“Authentication.main()”,查看控制台的输出结果,如果出现很长的字符串,意味着鉴权成功。

注意:这个不需要大家复制保存,系统会生成一个token.text文件,程序中每次获取token时都会优先从文件中获取之前保存的token,如果token失效(有效期为24小时),代码会重新获取新的token并保存到token.text文件中。

四、 调用接口

1、 查询设备

(1) 查看查询设备的URI:我们在官方提供的API参考文档中可以看到

(2) 添加URI:

我们打开之前配置IAM接入地址的Constants.java文件,路径:JavaApiDemo> src >main>java> com.huawei.util > Constants.java文件,加入/修改下面这句:

public static final String DEVICE_COMMAND_URL = IOTDM_BASE_URL + "/v5/iot/%s/devices/%s";

(3) 调用接口

(a) 修改参数

打开JavaApiDemo > src > main>java>com.huawei.demo.device > QueryDeviceList.java文件,将我们事先准备的相关参数填入后,右键运行“QueryDeviceList.main()”

(b) 查看运行结果

(c) JSON解析(我使用的是开源中国社区的 J SON 格式化显示工具 )

为了方便观看和分析,我们将上面得到的数据复制下来,进行json格式化一下

教程中我们需要的是查询设备在线状态,我们查看JSON数据可以发现”status”:”OFFLINE”是我们需要的,接下来我们进行解析:参考代码

ObjectMapper objectMapper = new ObjectMapper(); JsonNode jsonNode = objectMapper.readValue(getContent, JsonNode.class); JsonNode statusNode = jsonNode.get("status"); String statusstr = statusNode.asText(); System.out.println("status = " + statusstr); if(statusstr.equals("OFFLINE")) System.out.println("设备离线"); else if(statusstr.equals("ONLINE")) System.out.println("设备在线");

【运行结果】

为了方便测试,直接使用MQTT.fx进行登陆,我们再次运行程序会发现已经查询到设备在线

2、 查询设备影子-属性

(1) 查看查询设备的URI:我们在官方提供的API参考文档中可以看到

(2) 添加URI:

我们再次打开之前配置IAM接入地址的Constants.java文件,路径:JavaApiDemo> src >main>java> com.huawei.util > Constants.java文件

加入/修改下面这句:

public static final String DEVICE_SHADOW_URL = IOTDM_BASE_URL + "/v5/iot/%s/devices/%s/shadow";

(3) 调用接口

(a) 修改参数

打开JavaApiDemo > src > main>java>com.huawei.demo.device > QueryDeviceList.java文件,将我们事先准备的相关参数填入后,右键运行“QueryDeviceList.main()”

(b) 查看运行结果

(c) JSON解析

同样,我们将上面得到的数据复制下来,进行json格式化一下

教程中我们需要的是查询设备影子的属性,我们查看JSON数据可以发现”temp”:”22”是我们需要的,接下来我们进行解析:参考代码

//解析json 例2:查询设备影子 temp属性

ObjectMapper objectMapper = new ObjectMapper(); JsonNode jsonNode = objectMapper.readValue(getContent, JsonNode.class); JsonNode tempNode = jsonNode.get("shadow").get(0).get("reported").get("properties").get("temp"); String tempstr = tempNode.asText(); System.out.println("temp = " + tempstr); System.out.println("温度:" + tempstr+"℃");

【运行结果】

与控制台查看的数据一致

到这里大家就已经掌握了JAVA Demo的基本操作,大家可以试着写一个界面程序进行显示,我写了一个如文章开头所示的界面,bug很多,勉强能用,论坛里大佬很多,就不在这张贴了,有需要的小伙伴可以关注微信公众号“IOT趣制作”,回复关键字“华为云应用java”获取测试界面程序,然后直接加到JavaApiDemo > src > main>java>com.huawei.demo.device >目录下,运行main()即可。

【参考文档及链接】

华为云官方Java Demo使用说明:https://support.huaweicloud.com/devg-iothub/iot_02_3002.html

创建IAM用户教程:https://support.huaweicloud.com/usermanual-iam/iam_02_0001.html

华为云API列表:https://support.huaweicloud.com/api-iothub/iot_06_v5_0003.html

构造请求说明:https://support.huaweicloud.com/api-iothub/iot_06_v5_0090.html

认证鉴权说明:https://support.huaweicloud.com/api-iothub/iot_06_v5_0091.html

开源中国社区的JSON格式化显示工具:https://tool.oschina.net/codeformat/json/

esp8266系列设备接入华为云物联网平台(IOTDA):https://bbs.huaweicloud.com/forum/forum.php?mod=viewthread&tid=179090

IoT Java

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Linux之wget命令
下一篇:Linux内核深度解析之进程管理丨内含赠书福利(二)
相关文章