第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的应用侧开发Java Demo使用详细教程(IntelliJ IDEA 开发)相关推荐

  1. java netbeans 教程_netbeans开发java GUI程序 详细教程.pdf

    构建 GUI 应用程序简介 撰稿人:Saleem Gul 和 Tomas Pavek 本入门教程讲述如何创建简单图形用户界面以及如何添加简单后端功能.尤其介绍了如何为 Swing 窗体中的按钮和字段行 ...

  2. 华为云IOT Android应用开发详细教程

    华为云IOT Android应用开发详细教程 (Android Studio开发) 第〇章    简介       大家好,上一期发布的教程叫大家如何利用华为云物联网平台提供的官方Java Demo去 ...

  3. 基于STM32+ESP8266+华为云IoT设计的云端绿化管理系统

    1. 设计需求.硬件环境介绍 1.1 项目背景 绿化管理系统在现实生活.生产中的应用十分广泛,它是集环境感知.规划决策.自动管理等功能于一体的综合系统.目前,在城市道路两旁的区域绿化主要为花.草.树. ...

  4. 聊聊如何在华为云IoT平台进行产品开发

    本文分享自华为云社区<如何基于华为云IoT物联网平台进行产品开发>,作者: Super.雯 . 华为云物联网平台承载着南北向数据互通的功能职责.在华为云物联网平台基础上实现端到端物联网业务 ...

  5. 华为云MVP熊保松谈物联网开发:华为云IoT是首选,小熊派是神器

    摘要:在AI.5G的技术驱动下,物联网行业的发展愈加如火如荼,开发者在技术的快速更迭间,也得乘风破浪跟上新技术的节奏. 在AI.5G的技术驱动下,物联网行业的发展愈加如火如荼,开发者在技术的快速更迭间 ...

  6. 【教程】应用侧连接华为云IoT平台

    文章目录 1.写在前面 2.关于设备侧与华为云IoT平台的连接 3.进入华为云IoT平台 4.接收属性上报,实现数据转发至服务器 4.1.数据转发的总体实现思路 4.2.创建规则触发条件 4.3.创建 ...

  7. 手把手完成智慧路灯的开发,完成设备上云【华为云IoT】

    一.前言 近年来,物联网引领了继计算机.互联网之后世界信息产业的第三次发展浪潮,且逐步在各行各业得到更广泛的应用.物联网的定义是万物互联,表示任何设备都可以连在一起,进行数据交互. 那么物联网到底是什 ...

  8. 华为云IoT智慧物流案例05 | QT应用开发

    华为云IoT智慧物流案例05 | QT应用开发 第一章 新建QT项目验证交叉编译环境 选项设置一览 新建QT项目进行验证(hello_qt) 第二章 学习编写QT智慧物流应用(基于阿正前辈已编译成功的 ...

  9. 华为云IoT智慧物流案例01 | 背景介绍与环境搭建

    华为云IoT智慧物流案例01 | 背景介绍与环境搭建 引言 第一章 背景介绍与案例开发及实现方案的步骤分析 1.1 背景介绍 1.2 智慧物流方案分析 1.3 方案开发想法及流程 1.4 小章总结 第 ...

最新文章

  1. 图解一次手动杀马过程
  2. javaweb学习总结(五)——Servlet开发(一)
  3. msdn画圆弧函数_三角函数常识2020
  4. 苹果7手机严重卡顿_苹果手机仅配备4GB运存都不会卡顿,安卓系统为何要更多内存?...
  5. python标准库之re
  6. docker 清理容器的一些命令,彻底或选择清理
  7. PS系列之 -- 用通道抠图
  8. 限流10万QPS、跨域、过滤器、令牌桶算法-网关Gateway内容柒哥都给你总结在这儿了...
  9. Java实现Socket网络聊天室
  10. 中国人民大学与加拿大女王大学金融硕士项目不仅实现自我升华还能拿到闪亮文凭
  11. “我是技术总监,你干嘛总问我技术细节?”
  12. python中怎么把每一个字符用、隔开_python 实现将list转成字符串,中间用空格隔开...
  13. python批量处理图片颜色反转_Python批量处理图片
  14. PCIE Configuration Space
  15. 10个超赞的jQuery图片滑块动画
  16. 2021计算机考研408计算机学科专业基础综合冲刺复习提纲
  17. magic版本和android版本,华为荣耀Magic进化版和稳定版区别是什么?
  18. [生成函数][DP] Codeforces 891 E. Lust
  19. rstp 转hls_将RTSP流转为浏览器播放
  20. 国防大学计算机学院,国防大学和国防科技大学是同一所学校吗?很多人傻傻都分不清!...

热门文章

  1. 卸载idea步骤(快速彻底)
  2. 转:《你对固态硬盘了解多少》
  3. ps2018首选项出现要求96和8之间的整数怎么办?
  4. improve your Github overview page
  5. NG-ALAIN 边学边记1
  6. 详解BiLSTM及代码实现
  7. 批量训练pytorch练习
  8. chatgpt智能提效职场办公-ppt怎么压缩文件大小
  9. 【题解】士兵训练-C++
  10. 计算机专业本科毕业生去当兵,本科毕业去当兵如何?过来人是这么说的,很有道理!...