目录
一、场景介绍
二、硬件对接(忽略)
三、准备工作
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()));}
}