我是靠谱客的博主 老实玫瑰,最近开发中收集的这篇文章主要介绍电信平台对接CTWing具体实现流程,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

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

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

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

创建产品结果图
产品图
创建设备结果图
设备图

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

使用工具TCP&UDPDebug对产品进行激活

我使用的是TCP协议,填入目标ip:tcp.ctwing.cn和端口号:8996,具体如下图:

TCP激活流程

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
部署到项目中 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": 1n" +
                "}";
        byte[] bytes = ByteUtil.getBytes(bodyString);
        request.setBody(bytes);  
          //具体格式见前面请求body说明
        request.setParamMasterKey(设备masterKey);  
          // single value
        System.out.println(client.CreateCommand(request));
        client.shutdown();
    }

最后

以上就是老实玫瑰为你收集整理的电信平台对接CTWing具体实现流程的全部内容,希望文章能够帮你解决电信平台对接CTWing具体实现流程所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(43)

评论列表共有 0 条评论

立即
投稿
返回
顶部