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

第0章 简介

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

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

第1章 整体流程概述

    一、操作前的准备

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

    三、获取Token

    四、调用接口

第2章 具体详细步骤

一、 操作前的准备

 1、环境准备

  (1) JDK

  (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华为公司推出的一款云端物联网解决方案,作为上位机,它提供了强大的数据处理和分析能力。通过华为云IoT平台,用户可以连接和管理大量的物联网设备,实现设备间的数据交互和信息共享。同时,华为云IoT平台基于大数据和人工智能技术,能够对设备产生的海量数据进行实时分析和挖掘,为用户提供智能化的决策支持。 作为上位机,华为云IoT还具备了良好的可扩展性和定制化能力。用户可以根据自身业务需求,通过华为云IoT平台快速构建所需的物联网解决方案,并进行灵活的功能定制和业务逻辑的扩展。同时,华为云IoT平台还提供了丰富的开发接口和工具,方便开发者进行二次开发和集成,实现更多样化的应用场景。 除此之外,华为云IoT作为上位机还具备了高度的安全性和稳定性。通过严格的数据加密和隐私保护机制,保障物联网数据的安全传输和存储。与此同时,华为云IoT平台还拥有高可用性和可靠性,能够满足用户对设备数据实时性和准确性的要求,保障物联网应用系统的稳定运行。 综上所述,华为云IoT作为上位机,通过其强大的数据处理和分析能力、高度的可扩展性和定制化能力,以及高安全性和稳定性,能够为物联网应用提供全方位的解决方案和支持,助力用户实现智能化物联网应用的快速部署和商业化落地。
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

IOT趣制作

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

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

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

打赏作者

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

抵扣说明:

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

余额充值