线下增加设备接口开发(SDK)
本文通过java代码实现设备的注册功能(使用的是SDK进行开发)包含了请求的封装,签名加密,响应解释,性能优化等
API文档在下载的SDK压缩包中
准备工作
- 需要导入平台提供的两个jar包
- 在选择服务和相应的开发语言后点击“SDK下载”按钮来下载SDK工具包。将下载的Java的SDK工具包进行解压
2. 将jar包导入maven仓库
新建一个springboot项目
1.1 新建springboot项目,导入需要的依赖
<!--平台的两个jar包-->
<dependency><groupId>com.ctg.ag</groupId><artifactId>ctg-ag-sdk-core</artifactId><version>2.5.0-SNAPSHOT</version>
</dependency>
<dependency><groupId>com.ctg.ag</groupId><artifactId>ag-sdk-biz-59497.tar.gz</artifactId><version>20210510.151332-SNAPSHOT</version>
</dependency><!--解析JSon格式数据-->
<dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.2.70</version>
</dependency><!--lombok -->
<dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.18.12</version>
</dependency>
1.2 配置配置文件
在应用页面查看创建应用的app_key和app_secret
- 将app_key和app_secret放入配置文件中,以后若发送改动不需要修改代码,对配置文件进行修改即可
ctWing.APP_KEY= xxxxxxxxx
ctWing.APP_SECRET= xxxxxxxxx
1.3 根据API文档创建对应的dto类
API名称:CreateDevice
请求路径:/device
请求方法:POST
请求参数
名称 | 位置 | 类型 | 必填 | 描述 |
---|---|---|---|---|
MasterKey | HEAD | String | true | MasterKey在该设备所属产品的概况中可以查看 |
请求BODY
- 数据类型:json
内容描述:
{"deviceName": "string", "deviceSn": "string", "imei": "string", "operator": "string", "other": {"autoObserver":0, "imsi":"12545154878451", "pskValue":"ADvNWlkcNq9AfKnk"}, "productId": 0
}
创建other类
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Device {/*"other": {"autoObserver":0,"imsi":"12545154878451","pskValue":"ADvNWlkcNq9AfKnk"},*/private Integer autoObserver; //0.自动订阅 1.取消自动订阅,必填private String imsi; //选填private String pskValue; //选填
}
创建设备的dto
@Data
@AllArgsConstructor
@NoArgsConstructor
public class CreateDeviceDto {/*创建设备的dto*/private String deviceName; //设备名称,必填private String deviceSn; //设备编号,MQTT,T_Link,TCP,HTTP,JT/T808,南向云协议必填private String imei; //imei号,LWM2M,NB网关协议必填private String operator; //操作者,必填private Device device; //LWM2M协议必填参数private Integer productId; //产品ID,必填}
1.4 创建设备的工具类
步骤
- 根据appkey和appsecret创建一个客户端连接对象
- new一个创建设备请求对象
- 将请求参数放入到对应的请求方法中
- 将请求体转换为一个字节数组
- 将字节数组传递给请求
- 客户端调用创建设备方法并获得响应消息
- 关闭客户端连接
@Component
public class CtWingUtil {//绑定配置文件中的参数,以后进行修改不用修改代码private static String APP_KEY;private static String APP_SECRET;@Value("${ctWing.APP_KEY}")public void setAppKey(String appkey) {APP_KEY = appkey;}@Value("${ctWing.APP_SECRET}")public void setAppSecret(String appSecret) {APP_SECRET = appSecret;}//增加设备 后面的参数是API文档中的请求参数public String createDevice(CreateDeviceDto dto,String masterKey){//创建一个客户端连接AepDeviceManagementClient client = AepDeviceManagementClient.newClient().appKey(APP_KEY).appSecret(APP_SECRET).build();CreateDeviceRequest request = new CreateDeviceRequest();request.setParamMasterKey(masterKey);//将对象转换为一个byte数组作为body传递byte[] body = JSON.toJSONBytes(dto);request.setBody(body);CreateDeviceResponse response=null; //为了方便在try外使用该参数//客户端调用方法try {response = client.CreateDevice(request);} catch (Exception e) {e.printStackTrace();}String string = new String(response.getBody());client.shutdown(); //关闭连接返回响应结果return string;}
}
1.5 创建controller层
步骤
- 创建other对象
- 根据other对象构造创建设备dto对象
- 调用工具类,传递创建设备对象和masterKey参数
@RestController
public class MyController {@Autowiredprivate CtWingUtil ctWingUtil;@RequestMapping("/test")public String createDevice(){//other参数定义Device device = new Device(0, "", "");//公共参数定义CreateDeviceDto deviceDto = new CreateDeviceDto("测试4", "862177041088074", "862177041088074", "zhangsan", device, 15047914);String response = ctWingUtil.createDevice(deviceDto, "279142920da340c38449b5ad79ba2817");System.out.println(response);return response;}}
1.6 浏览器输入对应的请求进行测试
1.7 查看平台是否添加设备成功
线下增加设备接口开发(SDK)相关推荐
- Linux下LED设备驱动开发(LED灯实现闪烁)
文章目录 一.配置连接说明 二.更新设备树 (1)将led灯引脚添加到pinctrl子系统 (2)设备树中添加LDE灯的设备树节点 (3)编译更新设备树 三.驱动开发与测试 (1)编写设备驱动代码 ( ...
- Linux下PCI设备驱动程序开发 --- PCI驱动程序实现(三)
<script type="text/javascript"> </script><script type="text/javascript ...
- Linux下PCI设备驱动程序开发[转]
PCI是一种广泛采用的总线标准,它提供了许多优于其它总线标准(如EISA)的新特性,目前已经成为计算机系统中应用最为广泛,并且最为通用的总线标准.Linux的内核能较好地支持PCI总线,本文以Inte ...
- Linux下按键设备驱动开发以及对中断的上半部分和下半部分详细介绍
文章目录 一.编写并且加载设备树插件 (1)检测管脚是否占用 (2)添加设备树插件 (3)加载设备树插件 二.中断相关函数 (1)request_irq中断注册函数 (2)free_irq中断注销函数 ...
- VxWorks设备驱动程序开发指南---驱动程序的分类
8D Spaces Reliability & Stability & Efficiency 目录视图 摘要视图 订阅 VxWorks设备驱动程序开发指南(三)---驱动程序的分类 2 ...
- 【音视频SDK测评】线上K歌软件开发技术选型
摘要 在线K歌软件的开发有许多技术难点,需考虑到音频录制和处理.实时音频传输和同步.音频压缩和解压缩.设备兼容性问题等技术难点外,此外,开发者还应关注音乐版权问题,确保开发的应用合规合法. 前言 前面 ...
- 《Linux设备驱动开发详解 A》一一2.3 接口与总线
本节书摘来华章计算机出版社<Linux设备驱动开发详解 A>一书中的第2章,第2.3节,作者:宋宝华 更多章节内容可以访问云栖社区"华章计算机"公众号查看.1 2.3 ...
- python培训班-Python培训机构_高品质Python线下开发培训班推荐-黑马程序员
Python编程基础基础班1 课时:15天技术点:97项测验:2次学习方式:线下面授 学习目标 1.掌握Python开发环境基本配置|2.掌握运算符.表达式.流程控制语句.数组等的使用|3.掌握字符串 ...
- 在绘制USB2.O设备接口差分线时,应注意以下几点要求:
在绘制USB2.O设备接口差分线时,应注意以下几点要求: ①在元件布局(PCB Layout)时,应将USB2.O芯片放置在离地层最近的信号层,并尽量靠近USB插座,缩短差分线走线距离. ②差分线上不 ...
最新文章
- 使用Nexus配置Maven私有仓库
- 洛谷 CF1043F Make It One 解题报告
- python字典顺序遍历_在Python中,如何按已排序的键顺序遍历字典?
- dotnet 将C#编译为wasm让前端html使用
- 基于知识图谱的问答系统实践
- 【英语学习】【Level 07】U08 Old Stories L2 A good read
- mysql表分区数量限制_MySQL分区表的局限和限制详解
- tcp 四次挥手_TCP三次握手,四次挥手,你真的懂吗?
- 生物信息学biojava|从本地读取并解析遍历genbank文件|从genbank中提取CDS等注释信息
- 计算机应用专科学年鉴定表,计算机应用技术专业学生大一学年自我鉴定.docx
- LoadLibraryA加载dll失败
- 企业邮箱管理员如何管理邮箱
- 【元宇宙经济学】元宇宙经济的四要素
- input、textarea等输入框输入中文时,拼音在输入框内会触发input事件的问题
- Dedecms信息泄露漏洞(CVE-2018-6910)
- 软件测试类型按开发阶段的划分
- hrbust 2242 沼跃鱼
- 开题报告中拟解决的主要问题怎么写?
- 面渣逆袭:Redis连环五十二问,图文详解,这下面试稳了
- Java学习之网络编程实例