大家好,欢迎来到IT知识分享网。
目录
一、场景介绍
- 物联网卡 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 = L; 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())); } }
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/142152.html