当前位置:首页 > IT计算机/网络 > 其它相关文档 > 基于Java的华为云物联网应用开发
编制审核批准基于Java的华为云物联网应用开发学习报告SATLAB.2020.0001河北科技大学卫星导航技术研究中心2020年03月07日河北科技大学卫星导航技术研究中心技术报告第2页2021年2月17日星期三目录1前言...................................................................................................................................................................22开发方式...........................................................................................................................................................23API接口简介.....................................................................................................................................................24应用服务器.......................................................................................................................................................35应用接入...........................................................................................................................................................36数据采集...........................................................................................................................................................47订阅推送...........................................................................................................................................................57.1订阅.......................................................................................................................................................57.2推送.......................................................................................................................................................68命令下发...........................................................................................................................................................61前言物联网应用是用户和开发人员进行设备管理、故障检测、业务监控和数据分析的重要工具。现在很多物联网平台都简化了设备接入的复杂性和协议的差异性,为上层应用提供了统一格式的数据,为了开发人员提供了便利可以聚焦于自身业务开发。本团队的物联网应用侧开发基于华为物联网平台,开发工具用到了eclipse开发平台、MySQL数据库以及可视化工具、Tomcat服务器,开发语言是Java。所有开发工具的安装教程这里不在赘述,本文主要讲解一下基于华为物联网平台的应用侧开发过程,物联网整体开发方案如下:设备物联网平台应用服务器应用客户端Web/PC/手机/小程序2开发方式基于物联网的开发,华为物联网平台提供了API和SDK开发应用demo,官网也提供了非常详细的开发文档。API接口开发灵活,根据开发需要调用不同接口,对应用语言限制不高,但是开发工作量和开发难度比集成SDK大。集成SDK开发过程中代码的工作量较小,开发能力的门槛相比直接调用API接口较低,但是相比较API接口,它的开发灵活性稍差,只支持Java、PHP和Python语言。3API接口简介本文介绍的是基于API接口的开发过程。基于华为对IOT行业的深入理解,物联网平台提供通用的API,覆盖完整的物联网设备管理能力,目前常用的API包括(这里没有详细介绍,具体内容见官方文档):河北科技大学卫星导航技术研究中心技术报告第3页2021年2月17日星期三①应用安全接入:应用服务器通过调用这两个接口获取鉴权信息,保证与设备连接,也是调用其他API接口的前提;②数据采集:数据采集接口提供设备的查询、批量设备查询、设备历史数据和历史命令的查询、设备能力查询;③订阅管理:应用通过调用物联网平台的订阅接口订阅设备数据变化通知;④推送通知:应用服务器在平台订阅了通知后,当设备发生变化(设备变更,数据变化等)平台会向应用服务器推送通知消息;⑤命令下发:本部分接口提供命令的创建、删除、查询、批量创建等功能。使用JavaAPIDemo调测戳一下,链接中有Demo程序。4应用服务器基于API和SDK开发应用时,都需要搭建应用服务器,特别注意的是在使用平台的订阅推送功能时,其中的回调地址必须填公网ip,这时就需要用到应用服务器,本人团队开发使用的是弹性云服务器ECS,即租即用,在租好服务器后会获得公网ip,这个ip地址就是我们后续需要用到的。切记在服务器上需配置安全组,把服务器的常用端口打开,如果没打开端口,回调地址获取订阅推送的数据是不能成功的。如果不使用应用服务器,也可使用花生壳穿透自己电脑的内网,也可完成以上工作,但是建议开发者还是使用服务器。5应用接入首先,开发者需要把从官网下载下来的API包导入到自己的工程中,修改Constant.java里的相关参数,如下图,然后找到appAccessSecurity—Authentication.java右键点击RunAs—JavaApplication,控制台出现河北科技大学卫星导航技术研究中心技术报告第4页2021年2月17日星期三200OK并打印出accessToken就是接入成功。6数据采集这里举例,数据采集使用的是dataCollection—QueryBatchDevices.java接口,开发者直接调用这个接口只能把数据打印到控制台上,要调用接口获取特定的数据并显示到应用界面,这里就需要用到用户请求servlet从接口中获取数据。首先,开发者需要新建一个servlet,在post方法里先实例化需调用的接口,然后调用接口中的方法,API中接口方法中会返回一串数据,最后开发者在前端使用js中的post方法去请求刚才新建的servlet,这时就会返回一串json格式的数据包,如下图所示:此时只需要在前端按照这个数据格式去获取想要的数据显示到界面即可。数据采集工作基本就是这个流程剩下的接口调用方法大同小异。注:如果在本地开发,开发者需先把API包中的utils—HttpsUtil.java中的demo路径改成开发者本地的路径,这样才能成功调用。河北科技大学卫星导航技术研究中心技术报告第5页2021年2月17日星期三7订阅推送开发者在调用订阅推送时,就需要用到服务器的公网ip,订阅推送有两种协议:http和https,https需要开发人员注册证书,http则不需要,本开发使用的是http协议。7.1订阅订阅操作可以在工程中直接调用API接口实现订阅功能,也可以去平台完成订阅,订阅管理接口如下:开发者只需把回调地址中的url改成自己的公网ip和端口,把路径改为自己的路径即可订阅成功。在平台订阅主要点击想订阅的信息,填上自己的网址即可订阅成功。河北科技大学卫星导航技术研究中心技术报告第6页2021年2月17日星期三7.2推送订阅成功后,平台有了相应的信息变化就会给服务器发送通知,如果应用客户端想要接收到服务器的通知,开发者可以新建一个servlet作为作为订阅的回调地址,那平台推送的信息就会发送到开发者的回调地址上,开发者在用request.getReader去获取平台推送过来的数据并打印出来,平台发送消息本地控制台就会收到相应的信息。如果开发者有需要,想把推送过来的信息显示到界面,可以选择对数据用数据库进行统一管理,当应用客户端发出请求时可以直接调用数据库的数据显示到客户端。注:推送必须在服务器(或者经过花生壳穿透的电脑上)上进行开发测试,需用到公网ip。8命令下发设备命令下发在API中的订阅接口如下:开发者想实现相应的命令下发功能,直接在应用开发中调用相应的接口即可实现相应的命令下发功能。需要注意的是cmdBody,也就是下发命令的消息体必须是jsonString格式。在上图中的InvokeDeviceServices.java中修改相应参数,然后直接调用即可完成命令下发功能。
本文标题:基于Java的华为云物联网应用开发
链接地址:https://www.777doc.com/doc-7515501 .html