簡介:要實作電信平臺對接,需要設備、電信平臺、系統進行對接,主要介紹后臺獲取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();
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/292573.html
標籤:其他





