【CTWing】天翼物联网对接

目录

一、场景介绍

二、硬件对接(忽略)

三、准备工作

Stage 1 :注册账号 --  CTwing 官网

Stage 2 :点击控制台 -- 开通服务 

Stage 3 :创建产品

Stage 4 :添加设备

Stage 5 :订阅方URL地址(设置接口)

Stage 6 :查看设备上报数据

四、接口编写(java)

1. contorller 类

2. 实体类 - CTWingResult.java

3. 实体类 - Payload.java

4. 实体类 - JsonResult.java

5. 工具类 - Base64Util.java


一、场景介绍

  • 物联网卡 NB-IOT
  • 通过http接口订阅设备上报数据

说明:该章节主要讲解

  • 订阅方URL地址(接口),如何设置
  • 接口如何编写

二、硬件对接忽略

三、准备工作

Stage 1 :注册账号 --  CTwing 官网

Stage 2 :点击控制台 -- 开通服务 

开通后需要等到5-120分钟,后台开通权限,才能看到左侧菜单栏

Stage 3 :创建产品

  • 设备管理 -- 产品 -- 创建产品

  • 产品详情 (其中设备型号:ss11-1 ) 

 

Stage 4 :添加设备

  • 设备管理 -- 产品 -- 设备管理 -- 添加设备

Stage 5 :订阅方URL地址设置接口

  • 设备管理 -- 产品 -- 点击产品,进入

  • 设备管理 -- 应用订阅

  • 设置订阅方URL地址(接口地址随便命名)

接口地址为:ip:port/cwt/aiot

Stage 6 :查看设备上报数据

  • 设备管理 -- 设备 -- 点击设备名进入 -- 数据查看

四、接口编写(java)

1. contorller 类

import com.alibaba.fastjson.JSON;
import com.whxph.xphservice.dto.JsonResult;
import com.whxph.xphservice.entity.ctwing.CTWingResult;
import com.whxph.xphservice.service.CWTingService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;

/**
 * Coding by 李炯 on 2022/8/3 11:56
 */
@Api(tags = "天翼CWTing", value = "")
@RestController
@RequestMapping("/cwt")
@Slf4j
public class CWTingController {
    
     //@Autowired
     //private CWTingService cwTingService;

    
    /**
     * @return Boolean
     * @explain 测试Swing
     * @author lijiong
     * @time 2023年04月4日
     */
    @RequestMapping(method = RequestMethod.POST,value = "/aiot" )
    @ApiOperation(value = "测试Swing", notes = "作者:lijiong")
    public JsonResult<String> aiotTest(@RequestBody String DataJson) {
        JsonResult result = new JsonResult();
        log.info("电信CTWing-->{}",DataJson);
        CTWingResult ctWingResult = JSON.parseObject(DataJson,CTWingResult.class);
        //cwTingService.insertDate(ctWingResult);//入库逻辑
        return result.success();
    }

}

2. 实体类 - CTWingResult.java

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

@Data
@AllArgsConstructor
@NoArgsConstructor
public class CTWingResult {
    private int upPacketSN;

    private int upDataSN;

    private String topic;

    private long timestamp;

    private String tenantId;

    private String serviceId;

    private String protocol;

    private String productId;

    private Payload payload;

    private String messageType;

    private String deviceType;

    private String deviceId;

    private String assocAssetId;

    private String IMSI;

    private String IMEI;
}



3. 实体类 - Payload.java

import com.alibaba.fastjson.annotation.JSONField;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

@Data
@AllArgsConstructor
@NoArgsConstructor
public class Payload {

    @JSONField(name = "APPdata")
    private String APPdata;
}

4. 实体类 - JsonResult.java

import com.fasterxml.jackson.annotation.JsonInclude;
import lombok.Data;

import java.io.Serializable;

/**   
 * Copyright: Copyright (c) 2019 
 * 
 * <p>说明: 用户服务层</P>
 * @version: V1.0
 * @author: flying-cattle
 */
@Data
public class JsonResult<T> implements Serializable{
	
	private static final long serialVersionUID = 1071681926787951549L;

    private int flag= Constants.MSG_OK;//1-成功 0-失败

    /**
     *<p> 状态说明</p> //具体提示内容
     */
    private String msg;


    /**
     * <p>返回数据</p>
     */
    @JsonInclude(JsonInclude.Include.NON_NULL)
    private T obj;//附加实体

    public JsonResult() {
    }



    /**
     * <p>返回成功,有数据</p>
     * @return JsonResult
     */
    public JsonResult success() {
    	this.setFlag(Constants.MSG_OK);
    	this.setMsg("成功");
    	return this;
    }
    /**
     * <p>返回成功,有数据</p>
     * @param msg 操作说明
     * @param obj 对象
     * @return JsonResult
     */
    public JsonResult<T> success(String msg,T obj) {
    	this.setFlag(Constants.MSG_OK);
    	this.setMsg(msg);
    	this.setObj(obj);
    	return this;
    }

    /**
     * <p>返回成功,有数据</p>
     * @param obj 对象
     * @return JsonResult
     */
    public JsonResult<T> success(T obj) {
        this.setFlag(Constants.MSG_OK);
    	this.setMsg("操作成功");
    	this.setObj(obj);
    	return this;
    }
    /**
     * <p>返回成功,无数据</p>
     * @param msg 操作说明
     * @return JsonResult
     */
    public JsonResult<T> success(String msg) {
        this.setFlag(Constants.MSG_OK);
    	this.setMsg(msg);
    	this.setObj(null);
    	return this;

    }
    /**
     * <p>返回失败,无数据</p>
     * @param msg 消息
     * @return JsonResult
     */
    public JsonResult<T> error(String msg) {
        this.setFlag(Constants.MSG_FAIL);
    	this.setMsg(msg);
    	this.setObj(null);
    	return this;
    }

    /**
     * <p>返回失败,有数据</p>
     * @param msg 消息
     * @param obj 对象
     * @return JsonResult
     */
    public JsonResult<T> error(String msg,T obj) {
        this.setFlag(Constants.MSG_FAIL);
    	this.setMsg(msg);
    	this.setObj(obj);
    	return this;
    }

}

5. 工具类 - Base64Util.java

作者比较懒,不想记忆具体使用方法,所以写了一个简单的工具类(希望大家不要介意)

import lombok.extern.slf4j.Slf4j;
import java.util.Base64;

@Slf4j
public class Base64Util {

    public static String decode(String str) {
        return new String(Base64.getDecoder().decode(str.getBytes()));
    }
}

posted @ 2023-04-06 14:42  随风落木  阅读(24)  评论(0编辑  收藏  举报  来源