电信平台对接CTWing具体实现流程

Posted 星空下的213

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了电信平台对接CTWing具体实现流程相关的知识,希望对你有一定的参考价值。

简介:要实现电信平台对接,需要设备、电信平台、系统进行对接,主要介绍后台获取http请求和指令下发,具体流程如下图:

一、在电信平台上创建设备、产品。

具体参考:官方文档||TCP产品创建

创建产品结果图

创建设备结果图

二、激活电信平台上的设备

使用工具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

中国电信天翼物联网平台CTWing学习笔记——设备接入(TCP协议)

中国电信天翼物联网平台CTWing学习笔记——设备接入(TCP协议)

BC25通过LWM2M连接电信AEP(ctwing)

BC28BC95通过LWM2M连接电信AEP(ctwing)