电信平台对接CTWing具体实现流程
Posted 星空下的213
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了电信平台对接CTWing具体实现流程相关的知识,希望对你有一定的参考价值。
简介:要实现电信平台对接,需要设备、电信平台、系统进行对接,主要介绍后台获取http请求和指令下发,具体流程如下图:
一、在电信平台上创建设备、产品。
创建产品结果图
创建设备结果图
二、激活电信平台上的设备
使用工具TCP&UDPDebug对产品进行激活
我使用的是TCP协议,填入目标ip:tcp.ctwing.cn和端口号:8996,具体如下图:
2.通过文档介绍的格式,发送登录请求:
3.登录请求具体实现介绍
登录报文标识符:0x01 —(需要去掉0x)
deviceId_length:设备id的长度(需要转16进制)
deviceId:设备的id(需要转16进制ASCll码)
password_length:设备的特征串长度(需要转16进制)
password:设备特征串(需要转16进制ASCll码)
ASCll在线转换器1-----http://www.ab126.com/goju/1711.html
ASCll在线转换器2-----https://www.mokuge.com/tool/asciito16/
10进制转16进制-----https://www.matools.com/hex
4.登录成功查看
登录成功返回05 00 00
设备显示在线
设备激活成功
5.可以发送消息进行测试
创建消息跟踪可以查看消息的情况
使用TCP发送消息
0x02 +数据长度(2字节) +业务数据
数据长度转换16进制+业务数据转换ASCll码文件
其中具体格式格式如下 02 00 05 68 65 6c 6c 6f如下图,消息发送成功查看
三、SDK应用部署java项目
创建应用
下载sdk
部署到项目中 sdk具体应用流程介绍
四、java程序获取HTTP消息推送
创建对应的订阅事件,其中订阅地址可以直接推送过去
具体的接收代码
注意:不能使用本地IP,需部署外网才可收到消息,地址一定要写对
package com.optical.controller;
import com.optical.common.Base64;
import com.optical.common.JsonUtil;
import com.optical.common.SDKUtil;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.json.simple.JSONObject;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
@Api(description = "接收电信传回的数据")
@RestController
@RequestMapping(value = "/xitang/ctwing")
public class CTWingController {
public static Logger logger = LoggerFactory.getLogger(CTWingController.class);
//电信传回的数据
@ApiOperation("电信传回的数据")
@RequestMapping(value = "/IoT", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_VALUE)
private ResponseEntity<HttpStatus> updateDeviceData(@RequestBody String DataJson) throws Exception {
JSONObject jsonObject = JsonUtil.stringToJson(DataJson); //获取json格式数据
String payload = String.valueOf(jsonObject.get("payload")); //为空转换null字符串
JSONObject data = JsonUtil.stringToJson(payload); //获取消息
String apPdata = String.valueOf(data.get("APPdata")); //获取单跳数据
String string = Base64.baseToString(apPdata); // BASE64解密 {"type":1,"reason":0}
JSONObject jsonObject2 = JsonUtil.stringToJson(string); //获取json格式数据
Integer type = Integer.parseInt(String.valueOf(jsonObject2.get("type")));
String reason = String.valueOf(jsonObject2.get("reason"));
System.out.println("type:" + type);
System.out.println("reason:" + reason);
if (type == 1){ //跌倒报警触发
//调用方法,发送消息到电信平台
SDKUtil.CreateCommand();
}else if (type == 2){ //跌倒消警
}else if (type == 4){ //人员出现+人员离开
}
return new ResponseEntity<>(HttpStatus.OK);
}
}
五、收到消息进行指令下发
收到指令结果图如下:
/*指令下发*/
public static void CreateCommand() throws Exception {
AepDeviceCommandClient client = AepDeviceCommandClient.newClient()
.appKey(应用管理AppKey).appSecret(应用管理AppSecret)
.build();
CreateCommandRequest request = new CreateCommandRequest();
String bodyString ="{\\n" +
" \\"content\\": {\\"消息内容"\\ },\\n" +
" \\"设备id\\": \\"150734109527\\",\\n" +
" \\"operator\\": \\"随便填\\",\\n" +
" \\"productId\\": \\"产品id\\",\\n" +
" \\"ttl\\": 7200,\\n" +
" \\"level\\": 1\\n" +
"}";
byte[] bytes = ByteUtil.getBytes(bodyString);
request.setBody(bytes);
//具体格式见前面请求body说明
request.setParamMasterKey(设备masterKey);
// single value
System.out.println(client.CreateCommand(request));
client.shutdown();
}
以上是关于电信平台对接CTWing具体实现流程的主要内容,如果未能解决你的问题,请参考以下文章
ctwing电信AEP平台对接涂鸦智能云平台python程序源码
中国电信天翼物联网平台CTWing学习笔记——设备接入(TCP协议)