API列表

endpoint: https://api-aep.xiot.senthink.com path: 参考接口描述中的请求地址说明

api列表中接口调用必须携带公共请求头,公共请求头如下。

Headers:
参数名称 参数值 是否必须 示例 备注
appId 添加api应用生成的appId
sign 计算的签名值,参考签名计算示例
nonce 随机数,可以使用随机数或者uuid

产品管理

添加产品

接口名称: 添加产品

接口描述: 添加产品

请求地址: /api/senthink/aep/openApi/product/v1/add

传参方式:POST

备注: 无

请求参数

Headers:
参数名称 参数值 是否必须 示例 备注
Content-Type application/json
Body:
名称 类型 是否必须 备注 其他信息
accessType integer 必须 接入方式,1 设备直连, 2 云云对接,3网关接入
authType integer 非必须 (设备直连必填 )认证加密方式,0 AES128
deviceType integer 必须 节点类型 0: 设备 1: 网关
encrypted integer 必须 数据是否加密, 0不加密,1加密
name string 必须 产品名称 4-30个字符,中文算两个字符
netType integer 必须 网络类型,0-WI-FI,1-移动蜂窝数据,2-以太网,4-NB-IOT,-1-其他
payloadFormat integer 必须 数据格式, 0透传,1物模型(云云对接产品在平台为非透传只能填1物模型)
productDesc string 非必须 产品说明 长度不超过100
protocol integer 必须 通信协议 0TCP,1mqtt,2mqtt开放协议,3云云对接,网关接入不填
securityType integer 非必须 安全类型 0 一型一密免注册 1 一型一密预注册 2 一机一密预注册(设备直连必填 ;MQTT开放协议,安全类型只能一机一密预注册)
encrypted integer 非必须 (设备直连必填 )是否加密 0否1是
dataFormat integer 非必须 0 十六进制 ,1 JSON, 2 自定义 (payloadFormat 为1时必传;protocol为2或3时dataFormat只能填2)
ctwingAppId string 非必须 云云对接产品必填
ctwingAppKey string 非必须 云云对接产品必填
ctwingAppSecret string 非必须 云云对接产品必填
ctwingMasterKey string 非必须 云云对接产品必填
ctwingProductId string 非必须 云云对接产品必填
ctwingPayloadFormat integer 非必须 云云对接产品必填,电信平台是否透传 1 透传 0 非透传
gatewayProtocol integer 非必须 网关接入必填,网关接入协议0 Zigbee 1 Lora 2 自定义

响应参数

名称 类型 说明
code string 响应码
msg string 响应码说明
data object 响应内容

data 说明如下

名称 类型 说明
productId string 平台生成的产品标识id
productKey string 产品秘钥
id string 产品唯一id
name string 产品名称
accessType string 接入类型
netType string 网络类型
protocol string 协议类型
deviceType string 设备类型
securityType string 安全类型
authType string 认证方式
payloadFormat string 数据格式
encrypted string 是否加密
productDesc string 产品描述
createAt string 创建时间

请求示例

直连设备示例
{
  "name": "api添加产品测试",
  "accessType": 1,
  "netType":1,
  "protocol": 1,
  "deviceType": 0,
  "securityType": 0,
  "authType": 0,
  "payloadFormat": 0,
  "encrypted":0
}

云云对接产品添加示例
{
  "accessType": 2,
  "ctwingAppId": 66675,
  "ctwingAppKey": "DPtXJK2CZrc",
  "ctwingAppSecret": "vLqJk5H5w7",
  "ctwingMasterKey": "d8ad99856eab4f46822d704b5bb2b2ea",
  "ctwingProductId": 15074825,
  "dataFormat": 0,
  "deviceType": 0,
  "name": "openapi云云对接产品",
  "netType": 1,
  "payloadFormat": 0,
  "productDesc": "这是产品信息",
  "ctwingPayloadFormat":"1",
  "productId": "",
  "protocol": 1
}

子设备产品添加示例
{
    "accessType": 3,
    "deviceType": 0,
    "protocol": 1,
    "encrypted": 0,
    "netType": 4,
    "securityType": 1,
    "name": "api添加子设备产品1",
    "authType": 0,
    "payloadFormat": "1",
    "productDesc": "产品描述",
    "dataFormat": 1,
    "gatewayProtocol": "0"
}

响应示例

直连设备:
{
  "code": "8001",
  "msg": "操作成功",
  "data": {
    "productId": "30DE513B",
    "productKey": "7313D093201946494C1C81E3E93B5D11",
    "id": "601e83a9ffc81f7739951e82",
    "name": "api添加产品测试7",
    "accessType": "设备直连",
    "netType": "移动蜂窝数据",
    "protocol": "MQTT",
    "deviceType": "设备",
    "securityType": "一型一密免注册",
    "authType": "AES128",
    "payloadFormat": "透传",
    "encrypted": "不加密",
    "productDesc": null,
    "createAt": "2021-02-06 21:43:48"
  }
}
云云对接产品:
{
  "code": "8001",
  "msg": "操作成功",
  "data": {
    "productId": "A570A443",
    "productKey": "B1D1EBB81260CA9A9C1A07A04D8CBA9B",
    "id": "617f98be90a57f1fdff43039",
    "name": "openapi云云对接产品1",
    "accessType": "云云对接",
    "netType": "移动蜂窝数据",
    "protocol": "MQTT",
    "deviceType": "设备",
    "securityType": null,
    "authType": null,
    "payloadFormat": "透传",
    "encrypted": "不加密",
    "productDesc": "这是产品信息",
    "createAt": "2021-11-01 15:35:26"
  }
}

子设备产品:
{
    "code": "8001",
    "msg": "操作成功",
    "data": {
        "productId": "298DAB80",
        "productKey": "200A7F9FEA848DDD10936E857206A494",
        "id": "61ea56d8fc66163ed7f19888",
        "name": "api添加子设备产品1",
        "accessType": "网关接入",
        "netType": "NB-IOT",
        "protocol": "MQTT",
        "deviceType": "设备",
        "securityType": null,
        "authType": null,
        "payloadFormat": "非透传",
        "encrypted": "不加密",
        "productDesc": "产品描述",
        "createAt": "2022-01-21 14:46:47"
    }
}

错误码

code code中文描述 详细信息 处理建议
4001 操作失败 错误详情 根据错误详细信息,检查输入数据输入格式

删除产品

接口名称: 删除产品

接口描述: 删除产品

请求地址: /api/senthink/aep/openApi/product/v1/delete 传参方式:POST

备注: 无

请求参数

Headers:
参数名称 参数值 是否必须 示例 备注
Content-Type application/json
Body:
名称 类型 是否必须 备注 其他信息
id string 非必须 id 产品唯一id

返回数据

名称 类型 备注 其他信息
code string 响应码
data boolean 响应数据
msg string 响应描述

请求示例

{
  "id": "601ba1affc73a85454cdae21"
}

响应示例

{
  "code": "8001",
  "msg": "操作成功",
  "data": true
}

错误码

code code中文描述 详细信息 处理建议
4301 产品不存在 请检查输入参数
4302 产品下有在线设备,请先手动删除在线设备 请先删除产品下所有在线的设备

编辑产品

接口名称: 编辑产品

接口描述: 编辑产品

请求地址: /api/senthink/aep/openApi/product/v1/edit

传参方式:POST

备注: 无

请求参数

Headers:
参数名称 参数值 是否必须 示例 备注
Content-Type application/json
Body:
名称 类型 是否必须 备注 其他信息
id string 必须 产品id字段
name string 必须 产品名称
productDesc string 非必须 产品说明

返回数据

名称 类型 备注 其他信息
code string 响应码
data boolean 响应数据
msg string 响应描述

请求示例

{
  "id": "617f601fc496415b0adfa0fe",
  "name": "智能钓鱼竿子",
  "productDesc": "崭新的描述,后台测试产品"
}

响应示例

{
"code":"8001",
"msg":"操作成功",
"data":true
}

错误码

code code中文描述 详细信息 处理建议
4301 产品不存在 请检查输入参数
4102 请求参数有误 请检查参数,productDesc 为必填项
4001 操作失败 错误详情 请根据错误详情,检查输入参数

产品列表

接口名称: 产品列表

接口描述: 列表产品

请求地址: /api/senthink/aep/openApi/product/v1/list

传参方式:POST

备注: 无

请求参数

Headers:
参数名称 参数值 是否必须 示例 备注
Content-Type application/json
Body:

返回数据

名称 类型 备注 其他信息
code string 响应码
data object [] 响应数据 **item 类型:** 产品列表
msg string 响应描述

data中的每个产品的数据结构是:

名称 类型 备注 其他信息
accessType integer 接入方式,1 设备直连, 2 云云对接
authType integer 认证加密方式,0 AES128
deviceType integer 节点类型 0: 设备 1: 网关
encrypted integer 数据是否加密, 0不加密,1加密
id string 产品唯一id
name string 产品名称
netType integer 网络类型,0-2G,1-3G,2-4G,3-5G,4-catOne,5-Nbiot
payloadFormat integer 数据格式, 0透传,1加密
productDesc string 产品说明
productId string 平台生成的产品标识id
protocol integer 通信协议 0TCP,1mqtt,2mqtt开放协议,3云云对接
securityType integer 安全类型 0 一型一密免注册 1 一机一密预注册 2 一机一密免注册
nodeTypeEnum object 设备类型枚举
protocolEnum object

请求示例

{}

响应示例

{
  "code": "8001",
  "msg": "操作成功",
  "data": {
    "data": {
      "records": [
        {
          "id": "5fe4468d889d320e238d447b",
          "name": "后端调试用-tcp-免注册",
          "productId": "C1168332",
          "protocol": 0,
          "deviceNum": 0,
          "deviceType": 0,
          "createAt": "2020-12-24 15:43:09"
        },
        {
          "id": "5fe4468d889d320e238d447e",
          "name": "后端调试用-mqtt-免注册",
          "productId": "9ACB2DCC",
          "protocol": 0,
          "deviceNum": 1,
          "deviceType": 0,
          "createAt": "2020-12-24 15:43:09"
        },
      ],
      "pages": 2,
      "current": 1,
      "size": 10,
      "searchCount": true,
      "total": 2,
      "optimizeCount": true,
      "offset": 0,
      "limit": 2147483647,
      "asc": true,
      "orderByField": null
    },
    "nodeTypeEnum": {
      "0": "设备",
      "1": "网关"
    },
    "protocolEnum": {
      "0": "TCP",
      "1": "MQTT"
    }
  }
}

查询产品

接口名称: 查询产品

接口描述: 查询产品

请求地址: /api/senthink/aep/openApi/product/v1/query

传参方式:POST

备注: 无

请求参数

Headers:
参数名称 参数值 是否必须 示例 备注
Content-Type application/json
Body:
名称 类型 是否必须 备注 其他信息
id string 非必须 id

返回数据

名称 类型 备注 其他信息
code string 响应码
data object
msg string 响应描述

data的数据结构与产品列表接口的列表元素一致:

名称 类型 备注 其他信息
accessType string 接入方式
authType string 认证加密方式
deviceType string 节点类型
encrypted string 数据是否加密
id string 产品唯一id
name string 产品名称
netType string 网络类型
payloadFormat string 数据格式
productDesc string 产品说明
productId string 平台生成的产品标识id
protocol string 通信协议
securityType string 安全类型 0 一型一密免注册 1 一机一密预注册 2 一机一密免注册
topic List<Object> 产品如果为mqtt产品为topic列表, tcp产品则为null

请求示例:

{
  "id": "601ba1affc73a85454cdae21"
}

响应示例

{
  "code": "8001",
  "msg": "操作成功",
  "data": {
    "id": "601ba1affc73a85454cdae21",
    "name": "智能电动车",
    "accessType": 1,
    "netType": 1,
    "protocol": 1,
    "deviceType": 0,
    "securityType": 0,
    "authType": 0,
    "payloadFormat": 0,
    "encrypted": 0,
    "productDesc": null,
    "productId": "AB90E2E0"
    "topic": null
  }
}

mqtt 产品详情如下

{
  "code": "8001",
  "msg": "操作成功",
  "data": {
    "productId": "30DE513B",
    "productKey": "7313D093201946494C1C81E3E93B5D11",
    "id": "601e83a9ffc81f7739951e82",
    "name": "api添加产品测试7",
    "accessType": "设备直连",
    "netType": "移动蜂窝数据",
    "protocol": "MQTT",
    "deviceType": "设备",
    "securityType": "一型一密免注册",
    "authType": "AES128",
    "payloadFormat": "透传",
    "encrypted": "不加密",
    "productDesc": null,
    "createAt": null,
    "topic": [
      {
        "function": "认证",
        "topic": "/sys/device/auth",
        "permission": 0,
        "desc": "用于设备认证"
      },
      {
        "function": "入网",
        "topic": "/sys/device/join",
        "permission": 0,
        "desc": "用于设备入网"
      },
      {
        "function": "心跳",
        "topic": "/sys/EEF63A10/30DE513B/${deviceId}/heartbeat",
        "permission": 0,
        "desc": "用于心跳上报"
      },
      {
        "function": "上报",
        "topic": "/sys/EEF63A10/30DE513B/${deviceId}/uplink",
        "permission": 0,
        "desc": "用于数据上报"
      },
      {
        "function": "下行",
        "topic": "/sys/EEF63A10/30DE513B/${deviceId}/downlink",
        "permission": 1,
        "desc": "接收下行指令"
      }
    ],
    "deviceCnt": 0
  }
}

错误码

code code中文描述 详细信息 处理建议
4301 产品不存在 请检查输入参数

获取产品物模型TSL

接口名称:获取产品物模型TSL

接口描述:暂无

请求地址:/api/senthink/aep/openApi/product/v1/getTsl

传参方式:POST

备注:暂无

请求参数

Headers
参数名称 参数值 是否必须 示例 备注
Content-Type application/json
Body
名称 类型 是否必须 备注 其他信息
id string 必须 产品productId

返回数据

名称 类型 是否必须 备注 其他信息
code string 必须 状态码
msg string 必须 响应消息
data string 必须 响应数据(产品TSL数据)

请求示例

{
    "id":"7F375F1C"
}

响应示例

{
    "code": "8001",
    "msg": "操作成功",
    "data": "{\"profile\":{\"version\":\"1.0\",\"productKey\":\"91EDBA9A376ACB1CFA04791B3B0701AA\",\"productModelId\":\"61ea248bab40077dc259c4f0\"},\"properties\":[{\"identifier\":\"subNodeStatus\",\"name\":\"子节点状态\",\"dataType\":{\"type\":\"int32\",\"spec\":{\"min\":\"1\",\"max\":\"2\",\"step\":\"1\",\"unit\":\"stepCount\"}},\"accessMode\":\"r\"},{\"identifier\":\"electricity\",\"name\":\"电量\",\"dataType\":{\"type\":\"int32\",\"spec\":{\"min\":\"0\",\"max\":\"100\",\"step\":\"1\",\"unit\":\"%\"}},\"accessMode\":\"r\"},{\"identifier\":\"joinStatus\",\"identifierOld\":\"joinStatus\",\"name\":\"从节点入网状态\",\"dataType\":{\"type\":\"int32\",\"spec\":{\"min\":\"0\",\"max\":\"1\",\"step\":\"1\",\"unit\":\"pcs\"}},\"accessMode\":\"rw\"},{\"identifier\":\"ledStatus\",\"identifierOld\":\"ledStatus\",\"name\":\"led状态\",\"dataType\":{\"type\":\"int32\",\"spec\":{\"min\":\"0\",\"max\":\"1\",\"step\":\"1\",\"unit\":\"pcs\"}},\"accessMode\":\"rw\"},{\"identifier\":\"command\",\"name\":\"命令字\",\"dataType\":{\"type\":\"int32\",\"spec\":{\"min\":\"0\",\"max\":\"10000\",\"step\":\"1\",\"unit\":\"pcs\"}},\"accessMode\":\"rw\"},{\"identifier\":\"temperature\",\"identifierOld\":\"temperature\",\"name\":\"从节点温度\",\"dataType\":{\"type\":\"float\",\"spec\":{\"min\":\"-1000.0\",\"max\":\"1000.0\",\"step\":\"1.0\",\"unit\":\"°C\"}},\"accessMode\":\"rw\"},{\"identifier\":\"humidity\",\"name\":\"从节点湿度\",\"dataType\":{\"type\":\"float\",\"spec\":{\"min\":\"-1000.0\",\"max\":\"1000.0\",\"step\":\"1.0\",\"unit\":\"pcs\"}},\"accessMode\":\"rw\"},{\"identifier\":\"channel\",\"name\":\"主节点信道\",\"dataType\":{\"type\":\"int32\",\"spec\":{\"min\":\"0\",\"max\":\"10000\",\"step\":\"1\",\"unit\":\"pcs\"}},\"accessMode\":\"rw\"},{\"identifier\":\"subNodeId\",\"name\":\"从节点ID\",\"dataType\":{\"type\":\"text\",\"spec\":{\"length\":10240}},\"accessMode\":\"rw\"},{\"identifier\":\"nodeId\",\"name\":\"主节点ID\",\"dataType\":{\"type\":\"text\",\"spec\":{\"length\":10240}},\"accessMode\":\"rw\"}],\"events\":[{\"identifier\":\"test3\",\"name\":\"测试事件3\",\"type\":\"warn\",\"outputData\":[]},{\"identifier\":\"test2\",\"name\":\"测试事件2\",\"type\":\"info\",\"outputData\":[]}],\"services\":[{\"identifier\":\"ledcontrol\",\"identifierOld\":\"ledcontrol\",\"name\":\"led控制\",\"callType\":\"sync\",\"inputData\":[{\"identifier\":\"nodeId\",\"identifierOld\":\"nodeId\",\"name\":\"主节点ID\",\"dataType\":{\"type\":\"text\",\"spec\":{\"length\":10240}}},{\"identifier\":\"subNodeId\",\"identifierOld\":\"subNodeId\",\"name\":\"子节点ID\",\"dataType\":{\"type\":\"text\",\"spec\":{\"length\":10240}}},{\"identifier\":\"command\",\"identifierOld\":\"command\",\"name\":\"命令字\",\"dataType\":{\"type\":\"int32\",\"spec\":{\"min\":\"0\",\"max\":\"10000\",\"step\":\"1\",\"unit\":\"pcs\"}}},{\"identifier\":\"joinStatus\",\"identifierOld\":\"joinStatus\",\"name\":\"入网状态\",\"dataType\":{\"type\":\"int32\",\"spec\":{\"min\":\"0\",\"max\":\"1\",\"step\":\"1\",\"unit\":\"pcs\"}}},{\"identifier\":\"ledStatus\",\"identifierOld\":\"ledStatus\",\"name\":\"led状态\",\"dataType\":{\"type\":\"int32\",\"spec\":{\"min\":\"0\",\"max\":\"1\",\"step\":\"1\",\"unit\":\"pcs\"}}}],\"outputData\":[]}]}"
}

推送应用管理

添加推送应用

接口名称: 添加推送应用

接口描述: 添加推送应用

请求地址: /api/senthink/aep/openApi/pushApp/v1/add

传参方式:POST

备注: 无

请求参数

Headers:
参数名称 参数值 是否必须 示例 备注
Content-Type application/json
Body:
名称 类型 是否必须 备注 其他信息
appName string 必须 应用名称
httpPushInfo object 非必须 http推送详情(如果pushType=0则该字段必须) **备注:** http推送详情
mqttPushInfo object 非必须 mqtt 推送详情(如果pushType=1则该字段必须) **备注:** mqtt 推送详情
rabbitMqPushInfo object 非必须 rabbitmq推送详情(如果pushType=2则该字段必须) **备注:** rabbitmq推送详情
pushType integer 必须 推送类型,0-http,1-mqtt,2-rabbitmq
subProductDocIds string [] 必须 关联产品的唯一id
status string 必须 是否启用 0 禁用 1 启用

httpPushInfo的结构:

名称 类型 是否必须 备注 其他信息
httpConnectRemote string 必须 设备心跳消息推送URL 必须http/https,长度不超过255
httpHeartBeatRemote string 必须 设备上线/掉线推送URL 必须http/https,长度不超过255
httpNeedVerify integer 必须 是否校验 **format:** int32
httpOtaResultRemote string 必须 OTA升级结果推送URL 必须http/https,长度不超过255
httpUplinkRemote string 必须 上行应用数据推送URL 必须http/https,长度不超过255

mqttPushInfo结构:

名称 类型 是否必须 备注 其他信息
mqttAdmin string 必须 用于推送的MQTT用户
mqttBroker string 必须 目的MQTT服务器地址
mqttPassword string 必须 用于推送的MQTT密码
mqttPort integer 必须 目的MQTT服务器端口

rabbitmqPushInfo结构:

名称 类型 是否必须 备注 其他信息
rabbitAdmin string 必须 RabbitMq用户名
rabbitExchangePrefix string 必须 上行应用数据推送Exchange
rabbitPassword string 必须 用于推送的RabbitMq密码
rabbitBroker string 必须 目的RabbitMq服务器地址
rabbitPort integer 必须 目的RabbitMq服务器端口
rabbitVHost string 必须 用于推送的RabbitMq虚拟主机

返回数据

名称 类型 备注 其他信息
code string 响应码
data object 响应数据 **备注:** 响应数据
msg string 响应描述

data 说明如下

名称 类型 备注 其他信息
id string 应用唯一id
appSecret string 应用秘钥
status string 状态0禁用 1启用
appName string 应用名称
createAt string 创建时间
subProductDocIds string 订阅产品唯一id列表
subProductNames string 订阅产品名称列表
pushType string 推送类型 0-http, 1-mqtt, 2-rabbitmq
httpPushInfo string 如果是http应用则有该字段,结构参考上面httpPushInfo结构
mqttPushInfo string 响应码 如果是mqtt应用则有该字段
rabbitMqPushInfo string 响应码 如果是rabbitMq应用则有该字段

添加mqtt应用和rabbitmq应用之后,系统会为其生成添加相关信息

mqttPushInfo结构:

名称 类型 备注 其他信息
mqttAdmin string 用于推送的MQTT用户
mqttBroker string 目的MQTT服务器地址
mqttPassword string 用于推送的MQTT密码
mqttPort integer 目的MQTT服务器端口
mqttQos integer mqtt消息质量
mqttUplinkTopic string mqtt上行数据Topic
mqttConnectTopic string mqtt连接类消息Topic
mqttHeartBeatTopic string mqtt心跳类消息Topic
mqttOtaResultTopic string mqttOta升级结果通知类消息Topic
pushDataFormat 推送数据格式 JSON

rabbitmqPushInfo结构:

名称 类型 备注 其他信息
rabbitAdmin string RabbitMq用户名
rabbitExchangePrefix string 上行应用数据推送Exchange
rabbitPassword string 用于推送的RabbitMq密码
rabbitBroker string 目的RabbitMq服务器地址
rabbitPort integer 目的RabbitMq服务器端口
rabbitVHost string 用于推送的RabbitMq虚拟主机
rabbitUplinkExchange string rabbitmq上行消息交换机
rabbitConnectExchange string rabbitmq连接类消息交换机
rabbitHeartBeatExchange string rabbitmq心跳消息交换机
rabbitOtaResultExchange string rabbitmqOta升级结果通知交换机
pushDataFormat string JSON

请求示例

备注: subProductDocIds 为产品的唯一id,可以通过获取产品列表或者详情,对应id字段

1 http类型推送

{
  "appName": "智能钓鱼竿子推送应用",
  "httpPushInfo": {
    "httpConnectRemote": "localhost:8080/receive/conn",
    "httpHeartBeatRemote": "localhost:8080/receive/heart",
    "httpOtaResultRemote": "localhost:8080/receive/ota",
    "httpUplinkRemote": "localhost:8080/receive/uplink",
    "httpNeedVerify":0
  },
  "pushType": 0,
  "status": 1,
  "subProductDocIds": [
    "5ff59e6350189b67bf49cc08"
  ]
}

响应

{
  "code": "8001",
  "msg": "操作成功",
  "data": {
    "id": "601f445c1cf43b639837cfe2",
    "appSecret": "2B5248825C0470FA1B6CF9EAAF02F491",
    "status": "启用",
    "appName": "apiHttp智能钓鱼竿子推送应用3",
    "createAt": "2021-02-07 09:37:32",
    "subProductDocIds": [
      "601ba0f9fc73a85454cdae20"
    ],
    "subProductNames": [
      "api添加产品测试"
    ],
    "pushType": "HTTP",
    "httpPushInfo": {
      "httpUplinkRemote": "localhost:8080/receive/uplink",
      "httpHeartBeatRemote": "localhost:8080/receive/heart",
      "httpConnectRemote": "localhost:8080/receive/conn",
      "httpOtaResultRemote": "localhost:8080/receive/ota",
      "httpNeedVerify": 0
    }
  }
}

2 rabbitmq类型推送

{
  "appName": "智能钓鱼竿子推送应用",
  "rabbitMqPushInfo": {
    "rabbitAdmin": "iotTest",
    "rabbitBroker": "106.15.251.107",
    "rabbitExchangePrefix": "any",
    "rabbitPassword": "iotTest",
    "rabbitPort": 5672,
    "rabbitVHost": "xiot"
  },
  "pushType": 2,
  "status": 1,
  "subProductDocIds": [
    "5ff59e6350189b67bf49cc08"
  ]
}

响应

{
  "code": "8001",
  "msg": "操作成功",
  "data": {
    "id": "601f44a41cf43b639837cfe3",
    "appSecret": "6A02638ABFDC4EE57D15EBE5F1BD2BBC",
    "status": "启用",
    "appName": "apiRabbit智能钓鱼竿子推送应用",
    "createAt": "2021-02-07 09:38:44",
    "subProductDocIds": [
      "601ba0f9fc73a85454cdae20"
    ],
    "subProductNames": [
      "api添加产品测试"
    ],
    "pushType": "RABBITMQ",
    "rabbitMqPushInfo": {
      "rabbitBroker": "106.15.251.107",
      "rabbitPort": 5672,
      "rabbitAdmin": "iotTest",
      "rabbitPassword": "iotTest",
      "rabbitVHost": "xiot",
      "rabbitUplinkExchange": "any-app-data",
      "rabbitConnectExchange": "any-connect",
      "rabbitHeartBeatExchange": "any-heartbeat",
      "rabbitOtaResultExchange": "any-ota-result",
      "rabbitExchangePrefix": "any",
      "pushDataFormat": "JSON"
    }
  }
}

3 mqtt类型推送

{
  "appName": "智能电动车mqtt推送",
  "mqttPushInfo": {
    "mqttAdmin": "admin",
    "mqttBroker": "tcp://106.15.251.107:1883",
    "mqttPassword": "chengw",
    "mqttPort": 1883
  },
  "pushDataFormat": 1,
  "pushType": 1,
  "status": 1,
  "subProductDocIds": [
    "5ff59e6350189b67bf49cc08"
  ]
}

响应

{
  "code": "8001",
  "msg": "操作成功",
  "data": {
    "id": "601f44dd1cf43b639837cfe4",
    "appSecret": "3FD1F8F6EB3423CA3F10BD9C359414B5",
    "status": "启用",
    "appName": "apiMqtt智能钓鱼竿子推送应dd用",
    "createAt": "2021-02-07 09:39:41",
    "subProductDocIds": [
      "601ba0f9fc73a85454cdae20"
    ],
    "subProductNames": [
      "api添加产品测试"
    ],
    "pushType": "MQTT",
    "mqttPushInfo": {
      "mqttBroker": "tcp://106.15.251.107:1883",
      "mqttPort": 1883,
      "mqttAdmin": "admin",
      "mqttPassword": "chengw",
      "mqttQos": 2,
      "mqttUplinkTopic": "jTKgcDTFENwYHlYGtprM/app-data",
      "mqttConnectTopic": "jTKgcDTFENwYHlYGtprM/connect",
      "mqttHeartBeatTopic": "jTKgcDTFENwYHlYGtprM/heartbeat",
      "mqttOtaResultTopic": "jTKgcDTFENwYHlYGtprM/ota-result",
      "pushDataFormat": "JSON"
    }
  }
}

错误码

code code中文描述 详细信息 处理建议
4102 请求参数有误 请检查httpPushInfo/mqttPushInfo/rabbitMqPushInfo内属性是否全部填充,格式格式是否正确
4301 产品不存在 请检查subProductDocIds参数是否正确
4501 无法连接到您的推送地址 请检查mqttPushInfo/rabbitMqPushInfo地址,账号,密码是否正确,注:http不判断地址是否正确

删除推送应用

接口名称: 删除推送应用

接口描述: 删除推送应用

请求地址: /api/senthink/aep/openApi/pushApp/v1/delete

传参方式:POST

备注: 无

请求参数

Headers:
参数名称 参数值 是否必须 示例 备注
Content-Type application/json
Body:
名称 类型 是否必须 备注 其他信息
id string 必须 应用id

返回数据

名称 类型 备注 其他信息
code string 响应码
data object 响应数据 **备注:** 响应数据
msg string 响应描述

请求示例

{
  "id": "601bb356112352169e31a57c"
}

响应示例

{
  "code": "8001",
  "msg": "操作成功",
  "data": "操作成功"
}

错误码

code code中文描述 详细信息 处理建议
4503 推送应用不存在 请检查参数是否正确

编辑推送应用

接口名称: 编辑推送应用

接口描述: 编辑推送应用

请求地址: /api/senthink/aep/openApi/pushApp/v1/edit

传参方式:POST

备注: 无

请求参数

Headers:
参数名称 参数值 是否必须 示例 备注
Content-Type application/json
Body:
名称 类型 是否必须 备注 其他信息
id string 必须 应用id
appName string 非必须 应用名称
httpPushInfo object 非必须 http推送详情 **备注:** http推送详情
mqttPushInfo object 非必须 mqtt 推送详情 **备注:** mqtt 推送详情
rabbitMqPushInfo object 非必须 rabbitmq推送详情 **备注:** rabbitmq推送详情
subProductDocIds string [] 非必须 关联产品的唯一id **item 类型:** string

httpPushInfo的结构:

名称 类型 是否必须 备注 其他信息
httpConnectRemote string 必须 设备心跳消息推送URL
httpHeartBeatRemote string 必须 设备上线/掉线推送URL
httpNeedVerify integer 必须 是否校验0不校验1校验
httpOtaResultRemote string 必须 OTA升级结果推送URL
httpUplinkRemote string 必须 上行应用数据推送URL

mqttPushInfo结构:

名称 类型 是否必须 备注 其他信息
mqttAdmin string 必须 用于推送的MQTT用户
mqttBroker string 必须 目的MQTT服务器地址
mqttPassword string 必须 用于推送的MQTT密码
mqttPort integer 必须 目的MQTT服务器端口
mqttUplinkTopic string 必须 mqtt上行数据Topic
mqttConnectTopic string 必须 mqtt连接类消息Topic
mqttHeartBeatTopic string 必须 mqtt心跳类消息Topic
mqttOtaResultTopic string 必须 mqttOta升级结果通知类消息Topic

rabbitmqPushInfo结构:

名称 类型 是否必须 备注 其他信息
rabbitAdmin string 必须 RabbitMq用户名
rabbitExchangePrefix string 必须 上行应用数据推送Exchange
rabbitPassword string 必须 用于推送的RabbitMq密码
rabbitBroker string 必须 目的RabbitMq服务器地址
rabbitPort integer 必须 目的RabbitMq服务器端口
rabbitVHost string 必须 用于推送的RabbitMq虚拟主机
rabbitUplinkExchange string 必须 rabbitmq上行消息交换机
rabbitConnectExchange string 必须 rabbitmq连接类消息交换机
rabbitHeartBeatExchange string 必须 rabbitmq心跳消息交换机
rabbitOtaResultExchange string 必须 rabbitmqOta升级结果通知交换机

返回数据

名称 类型 备注 其他信息
code string 响应码
data object 响应数据 **备注:** 响应数据
msg string 响应描述

请求示例

编辑http推送应用

{
  "id": "601bbdb339fa955d3accf378",
  "appName": "智能电动自行车http推送",
  "httpPushInfo": {
    "httpConnectRemote": "localhost:8080/receive/conn",
    "httpHeartBeatRemote": "localhost:8080/receive/heart",
    "httpOtaResultRemote": "localhost:8080/receive/ota",
    "httpUplinkRemote": "localhost:8080/receive/uplink",
    "httpNeedVerify":0
  },
  "pushDataFormat": 0,
  "pushType": 0,
  "subProductDocIds": [
    "601ba0f9fc73a85454cdae20"
  ]
}

编辑rabbitmq 推送

请求示例

{
  "id": "601bbd7639fa955d3accf377",
  "appName": "智能电动自行车rabbitmq推送",
  "rabbitMqPushInfo": {
    "rabbitAdmin": "xiotAdmin",
    "rabbitBroker": "localhost",
    "rabbitExchangePrefix": "push-exchange",
    "rabbitPassword": "xiotPassword",
    "rabbitPort": 5672,
    "rabbitVHost": "xiot"
  },
  "pushDataFormat": 1,
  "pushType": 2,
  "status": 1,
  "subProductDocIds": [
    "601ba0f9fc73a85454cdae20"
  ]
}

编辑mqtt #### 请求示例

{
  "id": "601bbd7639fa955d3accf377",
  "appName": "智能电动自行车mqtt推送",
  "rabbitMqPushInfo": {
    "rabbitAdmin": "iotTest",
    "rabbitBroker": "106.15.251.107",
    "rabbitExchangePrefix": "any1",
    "rabbitPassword": "iotTest",
    "rabbitPort": 5672,
    "rabbitVHost": "xiot",
    "rabbitUplinkExchange": "any-app-data",
    "rabbitConnectExchange": "any-connect",
    "rabbitHeartBeatExchange": "any-heartbeat",
    "rabbitOtaResultExchange": "any-ota-result"
  },
  "pushDataFormat": 1,
  "pushType": 2,
  "status": 1,
  "subProductDocIds": [
    "601ba0f9fc73a85454cdae20"
  ]
}

响应示例

{
  "code": "8001",
  "msg": "操作成功",
  "data": "操作成功"
}

错误码

code code中文描述 详细信息 处理建议
4503 推送应用不存在 请检查参数id是否正确
4102 请求参数有误 请检查httpPushInfo/mqttPushInfo/rabbitMqPushInfo内属性是否全部填充,格式格式是否正确
4301 产品不存在 请检查subProductDocIds参数是否正确
4501 无法连接到您的推送地址 请检查mqttPushInfo/rabbitMqPushInfo地址,账号,密码是否正确,注:http不判断地址是否正确

查询推送应用

接口名称: 查询推送应用 接口描述: 查询推送应用

请求地址: /api/senthink/aep/openApi/pushApp/v1/query 传参方式:POST

备注: 无

请求参数

Headers:
参数名称 参数值 是否必须 示例 备注
Content-Type application/json
Body:
名称 类型 是否必须 备注 其他信息
id string 必须 推送应用id

返回数据

名称 类型 备注 其他信息
code string 响应码
data object
msg string 响应描述

data的数据结构如下:

名称 类型 备注 其他信息
id string 应用id(兼数据库id)
appName string 应用名称
appSecret string 应用secret
companyId string
createAt string 创建时间 yyyy-MM-dd HH:mm:ss
httpPushInfo object
mqttPushInfo object
pushDataFormat integer 推送消息格式,0-protoBuf,1-json
pushType integer 推送类型,0-http,1-mqtt,2-rabbitmq
rabbitMqPushInfo object
status integer 应用是否启用,0 禁用 1 启用 -1 删除
subProductDocIds string [] 关联产品的唯一id
subProductNames string [] 关联产品的名称

httpPushInfo的结构:

名称 类型 备注 其他信息
httpConnectRemote string 设备心跳消息推送URL
httpHeartBeatRemote string 设备上线/掉线推送URL
httpNeedVerify integer 是否校验
httpOtaResultRemote string OTA升级结果推送URL
httpUplinkRemote string 上行应用数据推送URL

mqttPushInfo结构:

名称 类型 备注 其他信息
mqttAdmin string 用于推送的MQTT用户
mqttBroker string 目的MQTT服务器地址
mqttPassword string 用于推送的MQTT密码
mqttPort integer 目的MQTT服务器端口
mqttUplinkTopic string mqtt上行数据Topic
mqttConnectTopic string mqtt连接类消息Topic
mqttHeartBeatTopic string mqtt心跳类消息Topic
mqttOtaResultTopic string mqttOta升级结果通知类消息Topic

rabbitmqPushInfo结构:

名称 类型 备注 其他信息
rabbitAdmin string RabbitMq用户名
rabbitExchangePrefix string 上行应用数据推送Exchange
rabbitPassword string 用于推送的RabbitMq密码
rabbitBroker string 目的RabbitMq服务器地址
rabbitPort integer 目的RabbitMq服务器端口
rabbitVHost string 用于推送的RabbitMq虚拟主机
rabbitUplinkExchange string rabbitmq上行消息交换机
rabbitConnectExchange string rabbitmq连接类消息交换机
rabbitHeartBeatExchange string rabbitmq心跳消息交换机
rabbitOtaResultExchange string rabbitmqOta升级结果通知交换机

请求示例

{
  "id": "601bbdba39fa955d3accf379"
}

响应示例

{
  "code": "8001",
  "msg": "操作成功",
  "data": {
    "id": "601bbdba39fa955d3accf379",
    "appSecret": "04886D03DF99B7CFF9A70C48A0AFD943",
    "companyId": "EEF63A10",
    "status": 1,
    "appName": "智能电动车mqtt推送",
    "createAt": "2021-02-04 17:26:18",
    "subProductDocIds": [
      "601ba0f9fc73a85454cdae20"
    ],
    "subProductNames": [
      "智能电动车"
    ],
    "pushType": 1,
    "pushDataFormat": 1,
    "httpPushInfo": null,
    "mqttPushInfo": {
      "mqttBroker": "tcp://localhost:1883",
      "mqttPort": 1883,
      "mqttAdmin": "admin",
      "mqttPassword": "xxxx",
      "mqttQos": 2,
      "mqttUplinkTopic": "uplink",
      "mqttConnectTopic": "connect",
      "mqttHeartBeatTopic": "heartbeat",
      "mqttOtaResultTopic": "otaResult"
    },
    "rabbitMqPushInfo": null
  }
}

错误码

code code中文描述 详细信息 处理建议
4503 推送应用不存在 请检查参数id是否正确

推送应用分页查询

接口名称: 推送应用分页查询 接口描述: 推送应用分页查询 请求地址: /api/senthink/aep/openApi/pushApp/v1/getByPage 传参方式:POST

备注: 无

请求参数

Headers:
参数名称 参数值 是否必须 示例 备注
Content-Type application/json
Body:
名称 类型 是否必须 备注 其他信息
page integer 非必须 页码,默认1
pageSize integer 非必须 页大小,默认10
search string 非必须 appName 模糊查询

返回数据

名称 类型 备注 其他信息
code string 响应码
data object
msg string 响应描述

data:

名称 类型 备注 其他信息
List<PushAppInfo> string 应用列表
pages integer 总页数
current integer 当前页
size integer 页大小 yyyy-MM-dd HH:mm:ss
total integer 总条数

PushAppInfo 结构如下

名称 类型 备注 其他信息
id string 应用id(兼数据库id)
appName string 应用名称
appSecret string 应用secret
companyId string
createAt string 创建时间 **format:** yyyy-MM-dd HH:mm:ss
httpPushInfo object
mqttPushInfo object
pushDataFormat integer 推送消息格式,0-protoBuf,1-json
pushType integer 推送类型,0-http,1-mqtt,2-rabbitmq
rabbitMqPushInfo object
status integer 应用是否启用,0 禁用 1 启用 -1 删除
subProductDocIds string [] 关联产品的唯一id
subProductNames string [] 关联产品的名称

httpPushInfo/mqttPushInfo/rabbitMqPushInfo 参考推送应用详情

设备管理

添加设备

接口名称: 添加设备 接口描述: 添加设备

请求地址: /api/senthink/aep/openApi/nodes/v1/add 传参方式:POST

备注: 无

请求参数

Headers:
参数名称 参数值 是否必须 示例 备注
Content-Type application/json
Body:
名称 类型 是否必须 备注 其他信息
deviceName string 非必须 设备名称
nodeEui string 必须 智能设备的设备号
productDocId string 必须 产品唯一id

返回数据

名称 类型 备注 其他信息
code string 响应码
data object
msg string 响应描述

data 的数据结构如下

名称 类型 备注 其他信息
id string 设备唯一id
mqttAccount object[] mqtt开放协议设备的账户信息
nodeEui string 设备编号,厂商自定义 小写字母,大写字母,数字,长度4-32
deviceSecret string 设备Secret
openID string 厂商id
productID string 产品标识id
productKey string 产品key

请求示例

{
  "deviceName": "智能电动车001",
  "nodeEui": "123456456222010",
  "productDocId": "601ba0f9fc73a85454cdae20"
}

响应示例

{
  "code": "8001",
  "msg": "操作成功",
  "data": {
    "id": "61542f256d6429794f3ec4b5",
    "nodeEui": "123456456222012",
    "deviceSecret": "D9A89F2591C52A94D55E685DA2195D90",
    "openID": "3806E26C",
    "productID": "66E6128D",
    "productKey": "FC10402C55B1CA13A69B907128E4DFFD",
    "mqttAccount": {
      "transUsername": "3806E26C-66E6128D-123456456222012",
      "transPassword": "D9A89F2591C52A94D55E685DA2195D90",
      "authUsername": null,
      "authPassword": null
    }
  }
}

错误码

code code中文描述 详细信息 处理建议
4405 设备数超上限,请联系管理员处理 请联系平台管理员处理
4409 设备号已存在 请更换设备号
4301 产品不存在 请检查productDocId参数
4421 电信云对接设备ID格式不正确 必须为15位数字且全球唯一 请检查设备ID的格式

删除设备

接口名称: 查询推送应用 接口描述: 查询推送应用

请求地址: /api/senthink/aep/openApi/nodes/v1/delete 传参方式:POST

备注: 无

请求参数

Headers:
参数名称 参数值 是否必须 示例 备注
Content-Type application/json
Body:
名称 类型 是否必须 备注 其他信息
nodeEui string 必须 设备编号
delCloud boolean 是否删除云云对接对应平台的设备

返回数据

名称 类型 备注 其他信息
code string 响应码
data boolean 响应数据
msg string 响应描述

请求示例

{
    "nodeEui": "00197"
}

响应示例

{
    "code": "8001",
    "msg": "操作成功",
    "data": "操作成功"
}

错误码

code code中文描述 详细信息 处理建议
4410 设备不存在 请检查参数id是否正确

编辑设备

接口名称: 查询推送应用 接口描述: 查询推送应用

请求地址: /api/senthink/aep/openApi/nodes/v1/edit 传参方式:POST

备注: 无

请求参数

Headers:
参数名称 参数值 是否必须 示例 备注
Content-Type application/json
Body:
名称 类型 是否必须 备注 其他信息
nodeEui string 必须 设备编号
deviceName string 必须 设备名称

返回数据

名称 类型 备注 其他信息
code string 响应码
data boolean 响应数据
msg string 响应描述

请求示例

{
    "nodeEui": "00196",
    "deviceName": "device_00196"
}

响应示例

{
    "code": "8001",
    "msg": "操作成功",
    "data": "操作成功"
}

错误码

code code中文描述 详细信息 处理建议
4410 设备不存在 请检查参数id是否正确
4102 请求参数有误 请检查请求参数,设备名称不能为空
4001 操作失败 详细信息 请根据详细信息,修改请求参数

设备分页查询

接口名称: 查询推送应用 接口描述: 查询推送应用

请求地址: /api/senthink/aep/openApi/nodes/v1/getByPage 传参方式:POST

备注: 无

请求参数

Headers:
参数名称 参数值 是否必须 示例 备注
Content-Type application/json
Query:
参数名称 是否必须 示例 备注
connectStatus 连接状态,为空或者缺省为所有状态
enableStatus 启用状态,为空或者缺省为所有状态
page 当前页码
pageSize 每页数量
productDocId 产品唯一id,为空或者缺省为所有状态
search 模糊搜索词
Body:
名称 类型 是否必须 备注 其他信息
connectStatus number 非必须 在线状态 0 离线 1 在线 -1 未激活
enableStatus number 非必须 0 禁用 1启用
page number 非必须 当前页
pageSize number 非必须 页大小
productDocId string 非必须 设备归属产品标识id
search string 非必须 模糊搜索,匹配字段nodeEui,deviceName

返回数据

名称 类型 备注 其他信息
code string 响应码
data object 响应数据 **备注:** 响应数据
msg string 响应描述

data的数据结构为:

名称 类型 备注 其他信息
current integer 当前页数
pages integer 总页数
records List<NodeInfo> 查询到的结果集
size integer 每页显示数量
total integer 数据总数(所有页)

NodeInfo结构为:

名称 类型 备注 其他信息
id string 设备唯一id
productId string 产品标识id
productName string 产品名称
nodeEui string 设备号
deviceName string 设备名称
deviceType integer 节点类型 0: 设备 1: 网关
deviceSecret string 设备密钥
connected integer 是否在线 1-在线;0-离线,-1未激活
createAt string 创建时间 yyyy-MM-dd HH:mm:ss
activeAt string 智能设备激活时间 null表示未激活 yyyy-MM-dd HH:mm:ss
lastJoinAt string 最后一次入网时间 null表示未入网
lastHeartBeatAt integer 最后一次心跳时间 null 表示还未上报过心跳
status string 状态 0 禁用,1 启用

请求示例

无参示例

备注: 请求参数可以为空,则为不带条件查询,默认分页参数,page=1 , pageSize=10

{}

全参示例

{
  "connectStatus": -1,
  "enableStatus": 1,
  "page": 1,
  "pageSize": 10,
  "productDocId": "601ba0f9fc73a85454cdae20",
  "search": "123456456222010"
}

响应示例

{
  "code": "8001",
  "msg": "操作成功",
  "data": {
    "connectEnum": {
      "0": "离线",
      "-1": "未激活",
      "1": "在线"
    },
    "statusEnum": {
      "0": "禁用",
      "1": "启用"
    },
    "data": {
      "records": [
        {
          "id": "603716ef1fe38858926853d8",
          "productId": "11765942",
          "productName": "TCP产品",
          "nodeEui": "1234564562",
          "deviceName": "api添加设备2 ",
          "deviceType": 0,
          "deviceSecret": "0140321977C6E44130F59C6AE0EB9EE0",
          "connected": -1,
          "createAt": "2021-02-25 11:18:07",
          "activeAt": null,
          "lastJoinAt": null,
          "lastHeartbeatAt": null,
          "status": 1
        },
        {
          "id": "603716e31fe38858926853d7",
          "productId": "11765942",
          "productName": "TCP产品",
          "nodeEui": "123456456",
          "deviceName": "api添加设备 ",
          "deviceType": 0,
          "deviceSecret": "29984CE9A60F33CEBED6623885AE4428",
          "connected": -1,
          "createAt": "2021-02-25 11:17:55",
          "activeAt": null,
          "lastJoinAt": null,
          "lastHeartbeatAt": null,
          "status": 1
        }
      ],
      "pages": 1,
      "current": 1,
      "size": 10,
      "total": 2
    },
    "nodeTypeEnum": {
      "0": "设备",
      "1": "网关"
    }
  }
}

设备详情

接口名称: 查询设备详情 接口描述: 查询设备详情

请求地址: /api/senthink/aep/openApi/nodes/v1/query 传参方式:POST

备注: 无

请求参数

Headers:
参数名称 参数值 是否必须 示例 备注
Content-Type application/json
Body:
名称 类型 是否必须 备注 其他信息
nodeEui string 必须 设备编号

返回数据

名称 类型 备注 其他信息
code string 响应码
data object
msg string 响应描述

data的格式如下:

名称 类型 备注 其他信息
accessType integer 接入方式0 tcp 1 mqtt
activeAt string 智能设备激活时间 yyyy-MM-dd HH:mm:ss
authType integer 认证加密方式,0 AES128
companyId string 所属公司id
connected integer 是否在线 1-在线;0-离线,-1未激活
createAt string 创建时间 yyyy-MM-dd HH:mm:ss
ctwingProductId string 电信Ctwing平台产品Id
ctwingMasterKey string 电信Ctwing平台产品MasterKey
ctwingAppId string 电信Ctwing平台产品appId
ctwingAppKey string 电信Ctwing平台产品 appKey
deviceName string 设备名称
deviceSecret string 设备密钥
deviceType integer 节点类型 0: 设备 1: 网关
encrypted integer 是否加密 0 不加密 1 加密
hardVer string 硬件版本
id string 设备数据库id
lastDisconnectAt string 智能设备最近一次离线时间 yyyy-MM-dd HH:mm:ss
lastHeartbeatAt string 智能设备最近一次心跳时间 yyyy-MM-dd HH:mm:ss
lastJoinAt string 智能设备最近一次入网时间 yyyy-MM-dd HH:mm:ss
localLogReport integer 本地日志上报使能 ,0禁用,1启用
mqttAccount object [] 通信方式为MQTT开放协议的设备的登录
modeId string 设备物模型id
netType integer 网络类型0-2G,1-3G,2-4G,3-5G,4-catOne,5-Nbiot
nodeEui string 智能设备的设备号
otaType integer 设备升级方式 0: tcp 1: http
online bool 设备是否在线 true-在线;false-离线
payloadFormat integer 数据格式, 0透传,1非透传
productDocId string 智能设备所属产品的数据库id
productId string 智能设备所属产品的产品标识id
productKey string 智能设备所属产品的产品ProductKey
productName string 产品名称
protocol integer 通信协议,0TCP,1mqtt,2mqtt开放协议,3云云对接
securityType integer 安全类型 0 一型一密免注册 1 一型一密预注册 2 一机一密预注册
sessionKey string 智能设备的sessionKey:用于对应用数据进行加密解密
softVer string 软件版本
status integer 设备使能,0禁用,1启用
topic object [] 通信方式为MQTT的设备的Topic信息
desc string 描述
function string 功能
permission integer 操作权限,0发布,1订阅
topic string topic
uniqueId string 设备平台id(仅用于MQTT设备)
versionReportAt string 版本上报时间 yyyy-MM-dd HH:mm:ss
groupPoList object [] 设备分组信息
gatewayProtocol integer 网关接入协议0 Zigbee 1 Lora 2 自定义
gatewayInfo object [] 接入网关信息
upNodeId string 子设备的网关设备id
sessionKey string 智能设备的session:用于对应用数据进行加密解密
relationTime date 创建关联时间
relationState integer 关联状态,0未关联,1已关联,2解除中

请求示例

{
    "nodeEui": "0000005"
}

响应示例

{
  "code": "8001",
  "msg": "操作成功",
  "data": {
    "id": "601bd344ae7172378618130c",
    "productDocId": "601ba0f9fc73a85454cdae20",
    "productId": "0C9ACD5E",
    "productKey": "F9D9F610E9AE28267CA265BA74EDF562",
    "nodeEui": "123456456222010",
    "deviceName": "智能电动车001",
    "uniqueId": "9D56DE0D216A4AA38A550900302DEA35",
    "deviceSecret": "EDE39469BFBD5D53B1DDF3A5A952DB9C",
    "companyId": "EEF63A10",
    "connected": -1,
    "activeAt": null,
    "lastJoinAt": null,
    "lastHeartbeatAt": null,
    "lastDisconnectAt": null,
    "status": 1,
    "localLogReport": null,
    "createAt": "2021-02-04 18:58:12",
    "sessionKey": null,
    "productName": "智能电动车",
    "accessType": 1,
    "netType": 1,
    "protocol": 1,
    "deviceType": 0,
    "securityType": 0,
    "encrypted": 0,
    "authType": 0,
    "payloadFormat": 0,
    "topic": [
      {
        "function": "认证",
        "topic": "/sys/device/auth",
        "permission": 0,
        "desc": "用于设备认证"
      },
      {
        "function": "入网",
        "topic": "/sys/device/join",
        "permission": 0,
        "desc": "用于设备入网"
      },
      {
        "function": "心跳",
        "topic": "/sys/EEF63A10/0C9ACD5E/123456456222010/heartbeat",
        "permission": 0,
        "desc": "用于心跳上报"
      },
      {
        "function": "上报",
        "topic": "/sys/EEF63A10/0C9ACD5E/123456456222010/uplink",
        "permission": 0,
        "desc": "用于数据上报"
      },
      {
        "function": "下行",
        "topic": "/sys/EEF63A10/0C9ACD5E/123456456222010/downlink",
        "permission": 1,
        "desc": "接收下行指令"
      }
    ],
    "hardVer": null,
    "softVer": null,
    "versionReportAt": null,
    "otaType": null,
    "mqttAccount": {
      "transUsername": "3806E26C-66E6128D-123456789",
      "transPassword": "1F5E5812FC56076ADC135827E07CE503",
      "authUsername": null,
      "authPassword": null
    },
    "modeId": null,
    "ctwingProductId": null,
    "ctwingMasterKey": null,
    "ctwingAppId": null,
    "ctwingAppKey": null,
    "ctwingAppSecret": null,
    "online": false
  }
}

错误码

code code中文描述 详细信息 处理建议
4410 设备不存在 请检查参数id是否正确

透传命令下发

接口名称: 透传命令下发

接口描述: 仅支持透传(包括普通的透传和自定义Topic透传命令下发),物模型的属性设置、属性查询、服务调用都不走该接口逻辑。

请求地址: /api/senthink/aep/openApi/nodes/v1/instruct

传参方式:POST

备注: 无

请求参数

Headers:
参数名称 参数值 是否必须 示例 备注
Content-Type application/json
Body:
名称 类型 是否必须 备注 其他信息
nodeEui string 必须 设备号
debugType integer 必须 调试类型:0-普通透传 1-自定义Topic下发
instruction string 必须 下发命令内容
instructionType integer 非必须 0:十六进制,1:字符串
topic string 非必须 自定义Topic

返回数据

名称 类型 备注 其他信息
code string 响应码
data boolean 响应数据
msg string 响应描述

请求示例

{
  "nodeEui": "1000001",
  "instruction": "FFFF",
  "instructionType": 0,
  "debugType": 0
}

响应示例

{
    "code": "8001",
    "msg": "操作成功",
    "data": "操作成功"
}

错误码

code code中文描述 详细信息 处理建议
4001 操作失败 详细信息 请根据错误信息检查输入参数
4410 设备不存在 请检查nodeEui参数
4414 设备不在线 设备不在线
4413 设备已经被禁用 设备已经被禁用
4422 参数校验失败 建议检查参数并重试

属性设置

接口名称: 属性设置 接口描述: 当产品为物模型产品时,下发指令设置产品属性,调用前提,产品已定义物模型,且设置的属性为可写可读属性

请求地址: /api/senthink/aep/openApi/model/v1/propertySet 传参方式:POST

备注: 无

请求参数

Headers:
参数名称 参数值 是否必须 示例 备注
Content-Type application/json
Body:
名称 类型 是否必须 备注 其他信息
nodeEui string 必须 设备编号
identify string 必须 属性标识
value string 必须 设置值

返回数据

名称 类型 备注 其他信息
code string 响应码
data boolean 响应数据
msg string 响应描述

请求示例

{
    "nodeEui": "00196",
    "identify": "humidity",
    "value": "44"
}

响应示例

{
  "code": "8001",
  "msg": "操作成功",
  "data": true
}

错误码

code code中文描述 详细信息 处理建议
4001 操作失败 详细信息 请根据错误信息检查输入参数
4414 设备不在线 设备不在线

属性查询

接口名称: 属性设置 接口描述: 当产品为物模型产品时,下发指令查询产品属性,调用前提,产品已定义物模型,且查询的属性已定义

请求地址: /api/senthink/aep/openApi/model/v1/propertyAsk 传参方式:POST

备注: 设备收到平台下发属性查询指令后应该通过属性上报属性

请求参数

Headers:
参数名称 参数值 是否必须 示例 备注
Content-Type application/json
Body:
名称 类型 是否必须 备注 其他信息
nodeEui string 必须 设备编号
identify string 必须 属性标识

返回数据

名称 类型 备注 其他信息
code string 响应码
data boolean 响应数据
msg string 响应描述

请求示例

{
  "nodeEui": "00196",
  "identify": "humidity"
}

响应示例

{
  "code": "8001",
  "msg": "操作成功",
  "data": true
}

错误码

code code中文描述 详细信息 处理建议
4001 操作失败 详细信息 请根据错误信息检查输入参数
4414 设备不在线 设备不在线

服务调用

接口名称: 服务调用 接口描述: 当产品为物模型产品时,可以通过服务调用来进行指令下发,服务调用分为同步调用和异步条用,其返回结果相应不同,异步结果立即返回,同步调用其结果会在10s内返回,如果10s后才返回结果,则返回结果和异步调用结果一致,调用前提,产品已定义物模型,并且调用的服务标识和参数和定义的一致

请求地址: /api/senthink/aep/openApi/model/v1/serviceCall

传参方式:POST

备注: 无

请求参数

Headers:
参数名称 参数值 是否必须 示例 备注
Content-Type application/json
Body:
名称 类型 是否必须 备注 其他信息
nodeEui string 必须 设备编号
identify string 必须 属性标识
value string 必须 服务输入参数,json格式字符串,和定义服务的输入参数一致 例:"{\"on\":1}"

返回数据

名称 类型 备注 其他信息
code string 响应码
data boolean 响应数据
msg string 响应描述

请求示例

{
  "nodeEui": "00196",
  "identify": "sum",
  "value": "{"a":28,"b": 28}"
}

响应示例

同步结果:
{
  "code": "8001",
  "msg": "操作成功",
  "data": true
}

异步结果:
{
    "code": "8001",
    "msg": "操作成功",
    "data": {
        "outputData": {
            "Result": "Success"
        },
        "messageId": 1251017933
    }
}

错误码

code code中文描述 详细信息 处理建议
4001 操作失败 详细信息 请根据错误信息检查输入参数
4414 设备不在线 设备不在线

自定义Topic下发(透传)

接口名称:自定义Topic下发指令

接口描述:也是透传下发,和普通透传下发的区别是该方式使用的是自定义的Topic进行透传

请求地址:/api/senthink/aep/openApi/nodes/v1/custom/instruct

传参方式:POST

备注:要提前定义好Topic才能使用

请求参数

Headers:

参数名称 参数值 是否必须 示例 备注
Content-Type application/json

Body:

名称 类型 是否必须 备注 其他信息
nodeEui string 必须 设备编号
topic string 必须 自定义Topic
instruction string 必须 指令内容

返回数据

名称 类型 备注 其他信息
code string 响应码
data boolean 响应数据
msg string 响应描述

请求示例

{
  "nodeEui": "00196",
  "topic": "/sys/sub/520CFD08/B63131F8/00196/custom/lei_test",
  "instruction": "123!"
}

响应示例

{
    "code": "8001",
    "msg": "操作成功",
    "data": "操作成功"
}

批量注册设备

接口名称:批量注册设备

接口描述:无

请求地址:/api/senthink/aep/openApi/nodes/v1/batchAdd

传参方式:POST

备注:无

请求参数

Headers:

参数名称 参数值 是否必须 示例 备注
Content-Type application/json

Body

名称 类型 是否必须 备注 其他信息
productId string 必须 产品Id
nodes object[] 必须 设备信息

参数nodes结构如下:

参数名 类型 是否必须 备注
deviceEui string 设备号
deviceName string 备注名称

返回数据

名称 类型 备注 其他信息
code string 响应码
data boolean 响应数据
msg string 响应描述

请求示例

{
  "productId": "4D163A46",
  "nodes": [
    {
      "deviceEui": "M10000004",
      "deviceName": ""
    },
    {
      "deviceEui": "M12",
      "deviceName": ""
    },
    {
      "deviceEui": "",
      "deviceName": ""
    }
  ]
}

响应示例

{
    "code": "8001",
    "msg": "操作成功",
    "data": {
        "successNum": 0,
        "failNum": 3,
        "certificateKey": null,
        "failExcelUrl": null,
        "failReasons": [
            {
                "deviceEui": "",
                "deviceName": "",
                "failReason": "设备编号缺失",
                "code": "4419"
            },
            {
                "deviceEui": "M12",
                "deviceName": "",
                "failReason": "deviceEui格式非法",
                "code": "4400"
            },
            {
                "deviceEui": "M10000004",
                "deviceName": "",
                "failReason": "设备号已存在",
                "code": "4409"
            }
        ]
    }
}

查询设备物模型属性列表

接口名称:查询设备物模型属性列表

接口描述:该接口用于查询物模型设备的物模型属性以及当前的属性值

请求地址:/api/senthink/aep/openApi/model/v1/getPropertyReportList

传参方式:POST

备注:暂无

请求参数

Headers

参数名称 参数值 是否必须 示例 备注
Content-Type application/json application/json

Body

名称 类型 是否必须 备注
nodeEui string 必须 设备号

返回数据

名称 类型 备注 其他信息
code string 响应码
data object 响应数据
msg string 响应描述

请求示例

{
    "nodeEui":"41086873905413635700"
}

响应示例

{
    "code": "8001",
    "msg": "操作成功",
    "data": {
        "records": [
            {
                "id": "c67cd258-57bd-45a2-a92c-3511aced3521",
                "time": "2022-05-12T03:34:27.436Z",
                "companyId": null,
                "productId": "910AB0D4",
                "nodeEui": null,
                "identifier": "BatWorkModeCtl",
                "accessMode": "rw",
                "name": "电池工作模式切换",
                "value": "0000"
            }
        ],
        "pages": 1,
        "current": 1,
        "size": 10,
        "searchCount": true,
        "total": 0,
        "optimizeCount": true,
        "offset": 0,
        "limit": 2147483647,
        "asc": true,
        "orderByField": null
    }
}

查询设备单个物模型属性

接口名称:查询设备单个物模型属性

接口描述:用于查询设备某个物模型属性的历史上报记录

请求地址:/api/senthink/aep/openApi/model/v1/getPropertyReportSingleList

传参方式:POST

备注:暂无

请求参数

Headers

参数名称 参数值 是否必须 示例 备注
Content-Type application/json application/json

Body

名称 类型 是否必须 备注
nodeEui string 必须 设备号
search string 必须 属性标识

返回数据

名称 类型 备注 其他信息
code string 响应码
data object 响应数据
msg string 响应描述

请求示例

{
    "nodeEui":"41086873905413635700",
    "search":"socStandard"
}

响应示例

{
    "code": "8001",
    "msg": "操作成功",
    "data": {
        "records": [
            {
                "id": "d83bfc52-5ba1-49e9-810d-54048ca25002",
                "time": "2022-05-12T03:34:27.436Z",
                "companyId": "FFDEA01F",
                "productId": "910AB0D4",
                "nodeEui": "41086873905413635700",
                "identifier": "socStandard",
                "accessMode": "rw",
                "name": "soc低电量阈值",
                "value": "30"
            },
            {
                "id": "cfc8a81b-ba5b-4c92-96ae-a3263bb05071",
                "time": "2022-05-12T03:15:55.715Z",
                "companyId": "FFDEA01F",
                "productId": "910AB0D4",
                "nodeEui": "41086873905413635700",
                "identifier": "socStandard",
                "accessMode": "rw",
                "name": "soc低电量阈值",
                "value": "30"
            }
        ],
        "pages": 1,
        "current": 1,
        "size": 10,
        "searchCount": true,
        "total": 4,
        "optimizeCount": true,
        "offset": 0,
        "limit": 2147483647,
        "asc": true,
        "orderByField": null
    }
}

分页查询服务

接口名称:分页查询服务

接口描述:该接口用于分页查询设备的物模型服务调用历史

请求地址:/api/senthink/aep/openApi/model/v1/getServiceCallList

传参方式:POST

备注:暂无

请求参数

Headers

参数名称 参数值 是否必须 示例 备注
Content-Type application/json application/json

Body

名称 类型 是否必须 备注
page integer 必须 当前页
pageSize integer 必须 每页数据量
nodeEui string 必须 设备号
search string 非必须 服务标识
messageIds array 非必须 服务调用的messageId集合

返回数据

名称 类型 备注 其他信息
code string 响应码
data object 响应数据
msg string 响应描述

请求示例

{
    "nodeEui": "009569BC3738",
    "page": 1,
    "pageSize": 1,
    "search": "call_scene"
}

响应示例

{
    "code": "8001",
    "msg": "操作成功",
    "data": {
        "records": [
            {
                "id": "27c0f901-0eca-416a-9290-1f1b68ef5619",
                "time": "2022-05-16T06:36:21.931Z",
                "companyId": "F192AA50",
                "productId": "ED9322C2",
                "nodeEui": "009569BC3738",
                "identifier": "call_scene",
                "name": "场景调用",
                "inputData": "{\"index\":\"20000000003\"}",
                "ouputData": null
            }
        ],
        "pages": 4,
        "current": 1,
        "size": 10,
        "searchCount": true,
        "total": 32,
        "optimizeCount": true,
        "offset": 0,
        "limit": 2147483647,
        "asc": true,
        "orderByField": null
    }
}

分页查询事件

接口名称:分页查询事件

接口描述:该接口用于分页查询设备事件上报的历史

请求地址:/api/senthink/aep/openApi/model/v1/getEventReportList

传参方式:POST

备注:暂无

请求参数

Headers

参数名称 参数值 是否必须 示例 备注
Content-Type application/json application/json

Body

名称 类型 是否必须 备注
page integer 必须 当前页
pageSize integer 必须 每页数据量
nodeEui string 必须 设备号
search string 非必须 事件标识

返回数据

名称 类型 备注 其他信息
code string 响应码
data object 响应数据
msg string 响应描述

请求示例

{
    "nodeEui": "mqttModelHex2022",
    "page": 1,
    "pageSize": 1,
    "search": "sum"
}

响应示例

{
    "code": "8001",
    "msg": "操作成功",
    "data": {
        "data": {
            "records": [],
            "pages": 1,
            "current": 1,
            "size": 10,
            "searchCount": true,
            "total": 0,
            "optimizeCount": true,
            "offset": 0,
            "limit": 2147483647,
            "asc": true,
            "orderByField": null
        },
        "optEnum": {
            "warn": "告警",
            "erro": "紧急",
            "info": "普通"
        }
    }
}

固件管理

添加小固件(表单格式)

接口名称: 添加小固件

接口描述: 添加小固件

请求地址: /api/senthink/aep/openApi/firmware/v1/add

传参方式:POST

备注

  • 添加固件接口,sign值计算方法与通用签名计算方法不同,请参考如何调用API中固件上传签名计算示例
  • 该接口适合上传较小固件,大小限制在50MB以内

请求参数

Headers:
参数名称 参数值 是否必须 示例 备注
Content-Type multipart/form-data; boundary=<calculated when request is sent>
Content-Length <calculated when request is sent>
Host <calculated when request is sent>
form-data参数:
名称 类型 是否必须 备注 其他信息
name string 必须 固件名称(长度4-30)
file file 必须 固件文件(不限制文件格式,可直接上传固件源文件,若上传.zip格式则需要设备端解压)
hardVer string 非必须 适配硬件版本
softVer string 必须 固件版本(同一模块下,固件版本不能重复)
productId string 必须 产品标识Id,对应产品详情productId字段
remark string 非必须 备注 (长度不超过100)
module string 必须 模块标识
signMethod string 必须 签名算法,目前只支持md5

返回数据

名称 类型 备注 其他信息
code string 响应码
data object
msg string 响应描述

data 结构如下

名称 类型 备注 其他信息
firmwareId string 固件id
createAt string 上传时间

请求示例

参数格式为form-data

参数名 参数值 是否必须 备注 其他信息
name api测试上传 必须 固件名称
file 文件 必须 固件文件,支持zip格式和.bin格式
hardVer V1.0.1 非必须 适配硬件版本
softVer V1.0.2 必须 固件版本(同一模块下,固件版本不能重复)
productId 11965942 必须 产品标识Id,对应产品详情productId字段
remark 固件上传 非必须 备注
moduleId 6180e5a27571341cc90f7bb5 必须 模块Id(模块详情中返回的id)
signMethod md5 必须 签名算法,目前只支持md5

响应示例

{
  "code": "8001",
  "msg": "操作成功",
  "data": {
    "firmwareId": "603735ebee27c95a9c9ed3dd",
    "createAt": "2021-02-25 13:30:18"
  }
}

错误码

code code中文描述 详细信息 处理建议
4610 productId不能为空 请检查productId参数
4611 固件名称不能为空 请检查name参数是否合法
4612 固件版本不能为空 请检查softVer字段不能为空
4613 同名固件已存在,请重新命名固件名称 请更换固件名称
4301 产品不存在 请检查productId参数
4601 文件不存在或者为空 请检查file参数和固件文件是否合法
4603 文件格式不正确 请检查固件文件格式只能为.zip 或.bin
4620 固件名称不合法 请检查固件名称name字段格式是否合法
4621 固件备注不合法 请检查固件备注是否合法

获取OSS文件上传STS凭证

接口名称: 获取OSS文件上传STS凭证

接口描述: 对于比较大的固件,考虑到其上传会消耗大量的时间,而造成的用户体验感降低,平台开放接口,授权STS凭证给用户,用户拿着STS凭证即可直接把文件上传到OSS服务器 ,而不经过平台的转发

请求地址: /api/senthink/aep/openApi/oss/v1/fileUpload/getStsCredit

传参方式:POST

备注: STS凭证具有有效期,用户应在有效期内使用STS凭证完成文件上传,否则需要重新获取

请求参数

Headers:
参数名称 参数值 是否必须 示例 备注
Content-Type application/json application/json
Body:
名称 类型 是否必须 备注 其他信息
type integer 必须 文件夹类型(1-设备证书存储的目录 2-固件存储的目录 3-设备本地日志存储的目录)

返回数据

名称 类型 备注 其他信息
code string 响应码
data object 响应数据 **备注:** 响应数据
msg string 响应描述

data数据结构如下:

类型 备注 其他信息
endPoint string OSS访问域名
accessKeyId string OSS秘钥ID
accessKeySecret string OSS秘钥
stsToken string STS凭证
expiation long STS凭证有效期
bucket string OSS桶
deviceCertificateDir string 设备证书存放目录
otaFirmwareDir string 固件存放目录
deviceLocalLogDir string 设备本地日志存放目录

请求示例

{
    "type": 3
}

响应示例

{
    "code": "8001",
    "msg": "操作成功",
    "data": {
        "endPoint": "oss-cn-zhangjiakou.aliyuncs.com",
        "accessKeyId": "STS.NUFecVWgdmnFT2H2RJkQhphp7",
        "accessKeySecret": "9kyzn7SxFfAUdEVtNA382GD7vYZJxsYGasoMeaDjiAT8",
        "stsToken": "CAISqQJ1q6Ft5B2yfSjIr5bzLtniurhF2qytVhT51lIfZ95En63b1Tz2IHFMeXZuCOkXs/0znGxS7vgTlrxpQppyWFfJd/xr449M8ASnVIzIvsHtDBiObi7iSwapEBfe8JL4foeQFaHFGJqEb1TDiVU8o9/TfimjWFqIKICAjYUdAP0cQgi/a0ghZrJRPRAwkNIGEnHTOP2xSEiI5FDdF011oAFxpHpi4KCkuK2m5wHZkUfxx51fxcz4KYP2aNJ3btUtEYWp0fdqM7HM1jJQ6h5Jsbd3i7ADuxW/54DMUwMLukrabbGMqIAydzUUPPZqR/R2y9HnjuB9t+DpkID69g1AJ+k9UV6EFdj9n5WVQbL0b4phKeyjZSXXsMqGM57uqBMlZm4LhbfZmUbihBQagAFsIFuMU7JdhU7sbKPmLKJDCuE1bpdDmTCl7GaivGpglfNHYIyvYDhxTGUKbnxjRelA/5kKrqq8UbZH5WID03iZXOLSB3TaNDdb9xOrJQqh74bIN08Ym6Cc+AbspiLAVt8sHifbXXa7RoIMQ9s4j37GudtfVLnowTXsr5jdgothmw==",
        "expiation": 1639366305000,
        "bucket": "test-senthink-xiot",
        "deviceCertificateDir": "",
        "otaFirmwareDir": "",
        "deviceLocalLogDir": "deviceLocalLog"
    }
}

使用STS凭证上传大文件示例

  • 后端服务接口:
/**
* @param 文件
*/
@PostMapping("/test")
public String testUpload(@RequestBody MultipartFile file) throws IOException {

    //OSS域名
    String endPoint = "oss-cn-zhangjiakou.aliyuncs.com";

    //临时秘钥ID
    String accessKeyId = "STS.NUiiET5QNWYg6SmFU8PH19tco";

    //临时秘钥
    String accessKeySecret = "A6itEMiLHZgMHaBKvbZJKnySTADYLFnj3fd3eu2MKMQ7";

    //临时stsToken
    String stsToken = "CAISvQJ1q6Ft5B2yfSjIr5bcIv/g2I5v4JuMNHXcolVtXMcd1rHIjTz2IHFMeXZuCOkXs/" +
        "0znGxS7vgTlrxpQppyWFfJd/xr449M8ASnVIzIvsHtW2GqZyniSwapEBfe8JL4g4ybJYqvkJ7PBnnAkih" +
        "su+qYERypQ12iN7CQlJdjda55dwKkbD1Adp40Qwx5s50iKGf2P/SgOQKI+m3LFxhQpxZbg2Fy4riW6enmvHi" +
        "4tlDhzfIPrIncO4Wta9IWXK1ySNCoxud7BOCjmCdb8EpN77wkzv4GqyvKpc3YGFRX/xWHNemR4txoMEg7RNBjS" +
        "v8U9qKlyqEm4bSJytms8XsXY7EJCRa4bZu73c7JFNmuMtsEbrvhMxzPqIvebsSq7VJ9MC9CaFsWIYJ/e2USExUpTS" +
        "rBOq6g5EB71pRB12sruxqAAUiGNHBhvhUF7FgEBMwNVydwuJ9PHgojndyKlJFnyHkvTxEchEw8mYbVw8a0hf9Bh3HNmkCe" +
        "16OIXXDQD0A0IL0bg6Syq0i9wW29/uwjpJEg1CoVfu5lmWE9f9DpzYqizC+/ZWds1NP6m8wKbMvM806LZioRJ2LeKXjKPvrSkmnm";

    //OSS桶
    String bucket = "test-senthink-xiot";

    //文件存储目录
    String fileDir = "otaFirmwareDir";

    //验证文件不为空
    if (file == null || file.isEmpty()) {
        return "操作失败:文件为空";
    }

    //设置协议为https
    ClientBuilderConfiguration configuration = new ClientBuilderConfiguration();
    configuration.setProtocol(Protocol.HTTPS);

    //初始化OSS客户端
    OSS oss = new OSSClientBuilder().build(endPoint,
                                           accessKeyId,
                                           accessKeySecret,
                                           stsToken,
                                           configuration);

    //文件标识
    String fileKey = fileDir + "/" + System.currentTimeMillis() + file.getOriginalFilename();

    //上传文件
    oss.putObject(bucket,fileKey , new ByteArrayInputStream(file.getBytes()));

    //设置文件的访问权限为公共读
    oss.setObjectAcl(bucket,fileKey, CannedAccessControlList.PublicRead);

    //设置过期时间100年(用户可以按照需求自行设置),
    Date expiration = new Date(System.currentTimeMillis() + 60 * 1000L * 60 * 24);

    //获取文件的访问地址
    String url = oss.generatePresignedUrl(bucket, fileKey, expiration).toString();
    return url;
}
  • 前端测试:使用postman测试如下

测试

添加大固件(JSON格式)

接口名称: 添加大固件 接口描述: 添加大固件

请求地址: /api/senthink/aep/openApi/firmware/v1/addLargeFirmware

传参方式:POST

备注

  • 调用该接口保存固件信息时,用户需按顺序完成以下操作:

    1. 已经调用平台开放的获取STS凭证的接口获取到了STS凭证
    2. 在凭证有效期内完成固件的上传(阿里云文档地址https://help.aliyun.com/document_detail/84778.html)

    PS:流程可以参考平台开放的获取OSS文件上传STS凭证接口

  • 该接口的固件大小限制在200MB以内,在请求该接口保存固件信息时会去OSS服务器上验证文件大小,超过200MB不允许保存,且平台会定时删除OSS上超过200MB的文件

请求参数

Headers:
参数名称 参数值 是否必须 示例 备注
Content-Type application/json
Content-Length <calculated when request is sent>
Host <calculated when request is sent>
Body:
名称 类型 是否必须 备注 其他信息
name string 必须 固件名称(长度4-30)
module string 必须 模块标识
hardVer string 非必须 适配硬件版本
softVer string 必须 固件版本(同一模块下,固件版本不能重复)
productId string 必须 产品标识Id,对应产品详情productId字段
remark string 非必须 备注 (长度不超过100)
signMethod string 必须 签名算法,目前只支持md5
path string 必须 文件的OSS访问地址
fileKey string 必须 文件的OSS标识
originalFilename string 必须 文件名
md5 string 必须 文件的md5值

计算文件md5

  • 为了保证文件传输过程中的安全性,使用md5校验文件内容是否被篡改
  • 文件内容相同的文件,md5值一定相同
  • 计算md5方式和工具有很多,这里以Java为例 ,使用jdk自带的类来计算文件的md5值,用户可以自行选择其他计算文件的md5的方式和工具
public static void main(String[] args) throws FileNotFoundException {
    File file = new File("文件路径");
    FileInputStream inputStream = new FileInputStream(file);
    byte[] digest = null;

    try {
        MessageDigest messageDigest = MessageDigest.getInstance("MD5");
        int bufferLength = 8 * 1024;
        byte[] buffer = new byte[bufferLength];
        int read = inputStream.read(buffer, 0, bufferLength);

        while (read > -1) {
            messageDigest.update(buffer, 0, read);
            read = inputStream.read(buffer, 0, bufferLength);
        }
        //关闭流
        inputStream.close();
        digest = messageDigest.digest();
    } catch (Exception e) {
        throw new RuntimeException(e);
    }

    String md5 = new BigInteger(1, digest).toString(16);
    System.out.println(md5);

}

计算md5示例:

ee1fbecf7b1e8d90642e638a14cf111a

返回数据

名称 类型 备注 其他信息
code string 响应码
data object
msg string 响应描述

请求示例

{
    "name": "2021/12/13测试固件",
    "productId": "2D8DA198",
    "module": "test_lei",
    "softVer": "softVer1.0",
    "signMethod": "md5",
    "path": "https://test-senthink-xiot.oss-cn-zhangjiakou.aliyuncs.com/otaFirmware/test.bin",
    "fileKey": "otaFirmware/test.bin",
    "originalFilename": "test.bin",
    "md5": "2677e2fad59ddbcf3268bb931b8a7b0e"
}

响应示例

{
    "code": "8001",
    "msg": "操作成功",
    "data": {
        "firmwareId": "61bd8c9cf369ec56debb8f24",
        "createAt": "2021-12-18 15:24:12"
    }
}

删除固件

接口名称: 删除固件 接口描述: 删除固件

请求地址: /api/senthink/aep/openApi/firmware/v1/delete 传参方式:POST

备注: 无

请求参数

Headers:
参数名称 参数值 是否必须 示例 备注
Content-Type application/json
Body:
名称 类型 是否必须 备注 其他信息
id string 非必须 固件id

返回数据

名称 类型 备注 其他信息
code string 响应码
data boolean 响应数据
msg string 响应描述

请求示例

{
  "id": "600543146c41da741aac23df"
}

响应示例

{
  "code": "8001",
  "msg": "操作成功",
  "data": true
}

错误码

code code中文描述 详细信息 处理建议
4604 固件不存在 请检查id参数

编辑固件

接口名称: 编辑固件 接口描述: 编辑固件

请求地址: /api/senthink/aep/openApi/firmware/v1/edit 传参方式:POST

备注: 无

请求参数

Headers:
参数名称 参数值 是否必须 示例 备注
Content-Type multipart/form-data
form-data参数:
名称 类型 是否必须 备注 其他信息
id string 必须 固件id
name string 非必须 固件名称
remark string 非必须 备注
productId string 非必须 产品productId
file file 非必须 固件
softVer string 非必须 固件版本
hardVer string 非必须 适配硬件版本

返回数据

名称 类型 备注 其他信息
code string 响应码
data boolean 响应数据
msg string 响应描述

请求示例

{
  "id": "5feaa128c8334e480490a2ec",
  "name": "固件-SC-V1.0.1",
  "remark": "智能电动车1.0.1版本固件,添加了电子围栏功能"
}

响应示例

{
  "code": "8001",
  "msg": "操作成功",
  "data": true
}

错误码

code code中文描述 详细信息 处理建议
4604 固件不存在 请检查id参数是否正确
4620 固件名称不合法 请检查固件名称格式是否合法
4621 固件备注不合法 请检查固件备注是否合法

固件分页查询

接口名称: 固件分页查询 接口描述: 固件分页查询 请求地址: /api/senthink/aep/openApi/firmware/v1/getByPage 传参方式:POST

备注: 无

请求参数

Headers:
参数名称 参数值 是否必须 示例 备注
Content-Type application/json
Body:
名称 类型 是否必须 备注 其他信息
productId string 非必须 产品标识id(3个参数不能同时为空)
page string 非必须 页码(3个参数不能同时为空)
pageSize string 非必须 每页大小(3个参数不能同时为空)

返回数据

名称 类型 备注 其他信息
code string 响应码
data object 响应数据 **备注:** 响应数据
msg string 响应描述

data的数据结构为:

名称 类型 备注 其他信息
current integer 当前页数
pages integer 总页数
records List<FirmwareInfo> 查询到的结果集
size integer 每页显示数量
total integer 数据总数(所有页)

FirmwareInfo 结构如下

名称 类型 备注 其他信息
id string 固件id
name string 固件名称
productId string 产品标识id
productName string 产品名称
hardVer string 适配硬件版本
softVer string 固件版本
signMethod null 签名方法
size number 大小
remark string 说明
md5 string md5
path null
originalFilename string 原始固件文件名
fileKey string 文件key
createAt string 创建时间

请求示例

{
  "page": 1,
  "pageSize": 10,
  "productId": "11765942"
}

响应示例

{
  "code": "8001",
  "msg": "操作成功",
  "data": {
    "records": [
      {
        "id": "603735ebee27c95a9c9ed3dd",
        "name": "api测试上传",
        "productId": "11765942",
        "productName": "TCP产品",
        "hardVer": "V2.0.0",
        "softVer": "V1.1.1",
        "signMethod": "md5",
        "size": 767,
        "remark": "api修改固件备注333",
        "md5": "61527576c5634030ab82af14baddddf8",
        "originalFilename": "cat1_8910_qhq_fota_0129B (2).pack",
        "fileKey": "otaFirmware/1614231019118_cat1_8910_qhq_fota_0129B (2).pack",
        "createAt": "2021-02-25 13:30:18"
      }
    ],
    "pages": 1,
    "current": 1,
    "size": 3,
    "total": 1
  }
}

固件详情

接口名称: 固件详情 接口描述: 固件详情

请求地址: /api/senthink/aep/openApi/firmware/v1/query 传参方式:POST

备注: 无

请求参数

Headers:
参数名称 参数值 是否必须 示例 备注
Content-Type application/json application/json
Body:
名称 类型 是否必须 备注 其他信息
id string 必须 id

返回数据

名称 类型 备注 其他信息
code string 响应码
data object 响应数据 **备注:** 响应数据
msg string 响应描述

data的数据结构为:

名称 类型 备注 其他信息
id string 固件id
name string 固件名称
productId string 产品标识id
productName string 产品名称
hardVer string 适配硬件版本
softVer string 固件版本
signMethod null 签名方法
size number 大小
remark string 备注
md5 string md5
originalFilename string 固件原始文件名称
fileKey string 文件key
createAt string 创建时间

请求示例

{
  "id": "600543146c41da741aac23df"
}

响应示例

{
  "code": "8001",
  "msg": "操作成功",
  "data": {
    "id": "603735ebee27c95a9c9ed3dd",
    "name": "api测试上传",
    "productId": "11765942",
    "productName": "TCP产品",
    "hardVer": "V2.0.0",
    "softVer": "V1.1.1",
    "signMethod": "md5",
    "size": 767,
    "remark": "api修改固件备注333",
    "md5": "61527576c5634030ab82af14baddddf8",
    "originalFilename": "cat1_8910_qhq_fota_0129B (2).pack",
    "fileKey": "otaFirmware/1614231019118_cat1_8910_qhq_fota_0129B (2).pack",
    "createAt": "2021-02-25 13:30:18"
  }
}

错误码

code code中文描述 详细信息 处理建议
4604 固件不存在 请检查id参数是否正确

设备升级管理

创建OtaPlan升级计划

接口名称: 建OtaPlan升级计划 接口描述: OtaPlan表示升级计划,OtaTask表示升级任务,一个OtaPlan下有多个OtaTask

请求地址: /api/senthink/aep/openApi/ota/v1/otaNotify/createOtaPlan/assign 传参方式:POST

备注: 指定设备创建ota升级计划

请求参数

Headers:
参数名称 参数值 是否必须 示例 备注
Content-Type application/json application/json
Body:
名称 类型 是否必须 备注 其他信息
firmwareId string 必须 固件文档ID
nodes string [] 必须 待升级的设备NodeEui集合
notifyType integer 非必须 推送类型(默认立即推送)<br />0:立刻推送<br /> 1:定时推送
startAt string 非必须 定时推送的开始时间 格式为yyyy-MM-dd HH:mm:ss
endAt string 非必须 定时推送的结束时间 格式为yyyy-MM-dd HH:mm:ss
retryInterval integer 非必须 升级重试间隔(默认不重试)<br /> 0:不重试 <br />1:立即重试<br />10:10分钟后重试<br />30:30分钟后重试<br />60:一小时后重试<br />1440: 1天后重试
retryLimit integer 非必须 重试次数,retryInterval非0时不可为空<br /> 0:不重试 <br />1:重试1次<br />2:重试2次<br />5:重试5次
overwrite integer 非必须 是否覆盖升级(默认覆盖) <br /> 0:不覆盖<br />1:覆盖
triggerType integer 非必须 触发方式(默认设备端触发) <br /> 1:设备端触发 <br />2:云端触发
remark string 非必须 备注
expireTime integer 非必须 超时时间在1~1440分钟范围内,不填的话默认就是1440分钟

返回数据

名称 类型 备注 其他信息
code string 响应码
data boolean 响应数据
msg string 响应描述

data结构:

名称 类型 备注 其他信息
data Object OtaTask的信息,包括文档ID、设备nodeEui、downId和任务的创建结果状态
batchUuid string 与OtaPlan唯一对应,后续操作OtaPlan就通过该参数唯一标识一个OtaPlan
flag boolean 操作结果

OtaTask创建结果状态码详情如下:

状态码 含义 备注
0 待推送
1 已推送
2 升级中
4 升级失败
5 已取消
-1 已删除

请求示例

{
    "firmwareId": "6156cccbc6958b030881aeac",
    "nodes": ["30008","30007","30005","30009"],
    "notifyType": 0,
    "startAt": "",
    "endAt": "",
    "retryInterval": 0,
    "retryLimit": null,
    "overwrite": 0,
    "triggerType":1,
    "remark": "",
    "expireTime": null
}

响应示例

{
    "code": "8001",
    "msg": "操作成功",
    "data": {
        "data": [
            {
                "taskId": "61a0a765f93e045437bea437",
                "nodeEui": "MY0000000999",
                "downId": "980E8A0F",
                "status": 0
            },
            {
                "taskId": "61a0a765f93e045437bea438",
                "nodeEui": "MQTT000000111",
                "downId": "425EB93E",
                "status": 0
            }
        ],
        "batchUuid": "dea96254-b778-48ec-bfe4-b853aa8c5632",
        "flag": true
    }
}

错误码

code code中文描述 详细信息 处理建议
4010 时间格式错误 检查时间格式为yyyy-MM-dd HH:mm:ss
4001 设备列表不能为空 nodes不能为空
4001 开始时间和结束时间不能小于当前时间 检查输入的升级开始时间和升级结束时间
4001 重试次数不能为空 如果有重试,则重试次数不能为空

取消升级计划OtaPlan

接口名称: 取消升级计划OtaPlan 接口描述: 取消升级计划OtaPlan 请求地址: /api/senthink/aep/openApi/ota/v1/otaNotify/cancel 传参方式:POST 备注:该操作会取消一个OtaPlan下的所有待推送的OtaTask

请求参数

Headers:
参数名称 参数值 是否必须 示例 备注
Content-Type application/json application/json
Body:
名称 类型 是否必须 备注 其他信息
id string 必须 成功创建OtaPlan后返回的batchUuid

返回数据

名称 类型 备注 其他信息
code string 响应码
msg string 响应消息
data boolean 响应数据

请求示例

{
    "id": "306134d4-050d-4800-a8ab-8bce88b1db43"
}

响应示例

{
    "code": "8001",
    "msg": "操作成功",
    "data": null
}

错误码

code code中文描述 详细信息 处理建议
4625 升级计划不存在 请检查id参数是否正确
4001 操作失败 详细信息 请根据详细信息检查输入

取消/重新升级OtaTask

接口名称:取消/重新升级

接口描述:只有待推送的OtaTask才可以被取消,只有已取消和升级失败的OtaTask才可以被重新升级

请求地址:/api/senthink/aep/openApi/ota/v1/otaNotify/cancelOrReCreate

传参方式:POST

备注:OtaTask状态有如下几种:

状态名称 状态值 说明
待推送 0 可以被取消
已推送 1
升级中 2
升级成功 3
升级失败 4 可被重新升级
已取消 5 可被重新升级
已删除 -1

请求参数

Headers:
参数名称 参数值 是否必须 示例 备注
Content-Type application/json application/json
Body:
名称 类型 是否必须 备注 其他信息
id string 必须 OtaTask的文档ID拼接起来的字符串 该数据是在成功创建OtaPlan后返回的taskId的集合
opt integer 必须 0-取消升级 1-重新升级

返回数据

名称 类型 备注 其他信息
code string 响应码
data object 响应数据 **备注:** 响应数据
msg string 响应描述

请求示例

{
  "id": "601bff8b5b3bb45bef53c230,601bff8b5b3bb45bef53c231",
  "opt": 0
}

响应示例

{
  "code": "8001",
  "msg": "操作成功",
  "data": true
}

分页查询升级计划OtaPlan

接口名称: 升级计划分页查询 接口描述: 升级计划分页查询

请求地址: /api/senthink/aep/openApi/ota/v1/otaNotify/getOtaPlanByPage 传参方式:POST

备注: 无

请求参数

Headers:
参数名称 参数值 是否必须 示例 备注
Content-Type application/json application/json
Body:
名称 类型 是否必须 备注 其他信息
page number 非必须 页码 默认1
pageSize number 非必须 每页大小 默认10
firmwareId string 必须 固件id

返回数据

名称 类型 备注 其他信息
code string 响应码
data object 响应数据 **备注:** 响应数据
msg string 响应描述

data的数据结构为:

名称 类型 备注 其他信息
current integer 当前页数
pages integer 总页数
records List<OtaPlan> 查询到的结果集
size integer 每页显示数量
total integer 数据总数(所有页)
scopeEnum enum 升级范围枚举
statusEnum enum 升级计划枚举
strategyEnum enum 升级策略枚举

OtaTask结构如下:

名称 类型 备注 其他信息
id string 升级计划id
companyId string 企业id
productId string 产品标识id
productName string 产品名称
firmwareId string 固件id
strategy integer 升级策略
scope integer 升级范围
targetSoftVer string 升级目标版本
notifyType integer 升级通知方式
startAt string 升级开始时间
endAt string 升级截止时间
overwrite string 是否覆盖升级
status string 升级计划状态
remark string 备注
createAt string 升级计划创建时间
updateAt string 升级计划更新时间

请求示例

{
  "firmwareId": "603735ebee27c95a9c9ed3dd",
  "page": 1,
  "pageSize": 10
}

响应示例

{
  "code": "8001",
  "msg": "操作成功",
  "data": {
    "data": {
      "records": [
        {
          "id": "604f16444d79652be74210f1",
          "companyId": "BDBF832D",
          "productId": "11765942",
          "productName": "TCP产品",
          "firmwareId": "603735ebee27c95a9c9ed3dd",
          "strategy": 0,
          "scope": 0,
          "softVerScope": [
            "v1.0.0"
          ],
          "notifyType": 0,
          "startAt": "2021-03-14T16:00:00.000+0000",
          "endAt": "2021-04-14T16:00:00.000+0000",
          "retryInterval": 1,
          "retryLimit": 2,
          "expireTime": 30,
          "overwrite": 1,
          "status": 0,
          "remark": "这是备注",
          "createAt": "2021-03-15 16:09:40",
          "updateAt": "2021-03-15 16:09:40"
        }
      ],
      "pages": 1,
      "current": 1,
      "size": 10,
      "searchCount": true,
      "total": 1,
      "optimizeCount": true,
      "offset": 0,
      "limit": 2147483647,
      "asc": true,
      "orderByField": null
    },
    "statusEnum": {
      "0": "升级中",
      "1": "已完成",
      "2": "已取消"
    },
    "strategyEnum": {
      "0": "静态升级",
      "1": "动态升级"
    },
    "scopeEnum": {
      "0": "指定设备",
      "1": "全部设备"
    }
  }
}

错误码

code code中文描述 详细信息 处理建议
4604 固件不存在 请检查firmwareId参数是否正确
4001 操作失败 详细信息 请根据详细信息检查输入

分页查询升级计划下的升级任务

接口名称: 升级计划下升级任务分页查询 接口描述: 一个升级计划下升级任务分页查询(一个升级计划对应零到多个升级任务)

请求地址: /api/senthink/aep/openApi/ota/v1/otaNotify/otaPlanTaskByPage 传参方式:POST

备注: 无

请求参数

Headers:
参数名称 参数值 是否必须 示例 备注
Content-Type application/json application/json
Body:
名称 类型 是否必须 备注 其他信息
page number 非必须 页码 默认1
pageSize number 非必须 每页大小 默认10
planId string 必须 升级计划id

返回数据

名称 类型 备注 其他信息
code string 响应码
data object 响应数据 **备注:** 响应数据
msg string 响应描述

data的数据结构为: | 名称 | 类型 | 备注 | 其他信息 | | :------------ | :------------ | :--------------------------------- | :------- | | data | object | 数据 | | | otaTypeEnum | enum | 升级方式枚举 | | | otaStatusEnum | enum | 升级状态枚举 | |

data.data 的数据结构为 | 名称 | 类型 | 备注 | 其他信息 | | :------------ | :------------ | :--------------------------------- | :------- | | current | integer | 当前页数 | | | pages | integer | 总页数 | | | records | List | 查询到的结果集 | | | size | integer | 每页显示数量 | | | total | integer | 数据总数(所有页) | | | scopeEnum | enum | 升级范围枚举 | | | statusEnum | enum | 升级计划枚举 | | | strategyEnum | enum | 升级策略枚举 | |

OtaTask结构如下:

名称 类型 备注 其他信息
id string 升级任务id
planId string 升级计划id
companyId string 企业id
productId string 产品标识id
productName string 产品名称
firmwareId string 固件id
nodeEui string 设备号
downId string 下载id
softVer string 当前固件版本
hardVer string 适配硬件版本
targetSoftVer string 升级目标版本
otaType integer 升级方式 1:TCP <br />2:HTTP
startAt string 升级开始时间
endAt string 升级截止时间
overwrite integer 是否覆盖升级
retryInterval integer 升级重试间隔
retryLimit integer 重试次数
errorInfo string 升级失败的失败原因
createAt string 升级计划创建时间
updateAt string 升级计划更新时间

请求示例

{
  "planId": "60e1a72d74a8941a40d42d42",
  "page": 1,
  "pageSize": 10
}

响应示例

{
  "code": "8001",
  "msg": "操作成功",
  "data": {
    "data": {
      "records": [
        {
          "id": "60e1a72d74a8941a40d42d43",
          "planId": "60e1a72d74a8941a40d42d42",
          "companyId": "B5869C8F",
          "firmwareId": "609bb7daf2a6f7261142bd22",
          "productId": "92B54688",
          "productName": "mqttOta测试",
          "nodeEui": "100006",
          "downId": "8B61D137",
          "softVer": "v1.0.5",
          "hardVer": "",
          "targetSoftVer": "v1.0.1",
          "otaType": 2,
          "startAt": "2021-07-04T12:18:53.576+0000",
          "endAt": null,
          "expireAt": 1625487533707,
          "status": 0,
          "retryInterval": 0,
          "retryLimit": null,
          "retryCnt": 1,
          "overwrite": 1,
          "createdStrategy": 0,
          "errorInfo": null,
          "createAt": "2021-07-04 20:18:53",
          "updateAt": "2021-07-04 20:18:53"
        }
      ],
      "pages": 1,
      "current": 1,
      "size": 10,
      "searchCount": true,
      "total": 1,
      "optimizeCount": true,
      "offset": 0,
      "limit": 2147483647,
      "asc": true,
      "orderByField": null
    },
    "otaTypeEnum": {
      "1": "TCP",
      "2": "HTTP"
    },
    "otaStatusEnum": {
      "0": "待推送",
      "-1": "已删除",
      "1": "已推送",
      "2": "升级中",
      "3": "升级成功",
      "4": "升级失败",
      "5": "已取消"
    }
  }
}

错误码

code code中文描述 详细信息 处理建议
4604 固件不存在 请检查firmwareId参数是否正确
4001 操作失败 详细信息 请根据详细信息检查输入

查询OtaPlan详情

接口名称:查询OtaPlan详情

接口描述:无

接口地址:/api/senthink/aep/openApi/ota/v1/otaNotify/otaPlanInfo

传参方式:POST

备注:无

请求参数

Headers:
参数名称 参数值 是否必须 示例 备注
Content-Type application/json application/json
Body:
名称 类型 是否必须 备注 其他信息
id string 必须 成功添加otaPlan后返回的batchUuid

返回数据

名称 类型 备注 其他信息
code string 响应码
data object 响应数据 **备注:** 响应数据
msg string 响应描述

请求示例

{
    "id": "306134d4-050d-4800-a8ab-8bce88b1db43"
}

响应示例

{
    "code": "8001",
    "msg": "操作成功",
    "data": {
        "otaNotifyTypeEnum": {
            "0": "立即推送",
            "1": "定时推送"
        },
        "data": {
            "id": "61849cfdc175db014ea3b923",
            "companyId": "60BF8DA4",
            "productId": "E817A6C7",
            "productName": "MQTT一型一密预注册",
            "firmwareId": "6156cccbc6958b030881aeac",
            "strategy": 0,
            "scope": 0,
            "softVerScope": null,
            "notifyType": 0,
            "startAt": "2021-11-05 10:54:53",
            "endAt": null,
            "retryInterval": 0,
            "retryLimit": 0,
            "expireTime": 1440,
            "overwrite": 0,
            "status": 0,
            "remark": null,
            "triggerType": 1,
            "moduleName": "默认",
            "targetSoftVer": "v1.1",
            "createAt": "2021-11-05 10:54:53",
            "updateAt": "2021-11-05 10:54:53"
        },
        "otaScopeEnum": {
            "0": "指定设备",
            "1": "该产品下全部设备"
        },
        "otaOverwriteEnum": {
            "0": "不覆盖",
            "1": "覆盖"
        },
        "otaRetryCntEnum": {
            "1": "重试1次",
            "2": "重试2次",
            "5": "重试5次"
        },
        "otaStrategyEnum": {
            "0": "静态升级",
            "1": "动态升级"
        },
        "otaRetryIntervalEnum": {
            "0": "不重试",
            "1440": "24小时后重试",
            "1": "立即重试",
            "10": "10分钟后重试",
            "60": "1小时后重试",
            "30": "30分钟后重试"
        }
    }
}

设备版本分布

版本分布查询

接口名称: 版本分布查询 接口描述: 版本分布查询

请求地址: /api/senthink/aep/openApi/otaVersion/v1/getByPage 传参方式:POST

备注: 无

请求参数

Headers:
参数名称 参数值 是否必须 示例 备注
Content-Type application/json application/json
Body:
名称 类型 是否必须 备注 其他信息
page integer 必须 当前页码
pageSize integer 必须 每页数量
productId string 非必须 产品标识id,如果productId不为空则为查询某个产品的版本,如果为空,则查询所有产品下设备版本号
moduleId string 非必须 模块ID
search string 非必须 模糊查询条件

返回数据

名称 类型 备注 其他信息
code string 响应码
data object 响应数据 **备注:** 响应数据
msg string 响应描述

data的数据结构为:

名称 类型 备注 其他信息
current integer 当前页数
pages integer 总页数
records List<NodeVersion> 查询到的结果集
size integer 每页显示数量
total integer 数据总数(所有页)

NodeVersion数据结构为:

名称 类型 备注 其他信息
nodeEui string 智能设备的设备号
deviceName string 设备名称
productName string 产品名称
hardVer string 硬件版本
softVer string 软件版本
versionReportAt string 版本上报时间 yyyy-MM-dd HH:mm:ss

请求示例

{
    "search": "200001",
    "productId": "A330CD0E",
    "moduleId": "616c1146ff83b70eee4a0d55",
    "page": 1,
    "pageSize": 10
}

响应示例

{
    "code": "8001",
    "msg": "操作成功",
    "data": {
        "records": [
            {
                "id": "616c1157ff83b70eee4a0d58",
                "companyId": "60BF8DA4",
                "productId": "A330CD0E",
                "productName": "MQTT非透传不显示激活时间",
                "nodeEui": "200001",
                "module": "default",
                "moduleName": "默认",
                "otaType": 2,
                "softVer": "v1.0.5",
                "hardVer": "v1.0.0",
                "remark": null,
                "createAt": null,
                "updateAt": "2021-10-17 20:08:05",
                "delete": 0
            }
        ],
        "pages": 1,
        "current": 1,
        "size": 10,
        "searchCount": true,
        "total": 1,
        "optimizeCount": true,
        "offset": 0,
        "limit": 2147483647,
        "asc": true,
        "orderByField": null
    }
}

版本分布概览

接口名称:版本分布概览

接口描述:无

请求地址:/api/senthink/aep/openApi/otaVersion/v1/static

传参方式:POST

备注:无

请求参数

Headers:
参数名称 参数值 是否必须 示例 备注
Content-Type application/json application/json
Body:
名称 类型 是否必须 备注 其他信息
productId string 必须 产品ID
module string 必须 模块标识

返回数据

名称 类型 备注 其他信息
code string 响应码
data object 响应数据 **备注:** 响应数据
msg string 响应描述

data结构

名称 类型 备注 其他信息
software map 固件版本
hardware map 硬件版本

请求示例

{
    "productId": "B9516949",
    "module": "test"
}

响应示例

{
    "code": "8001",
    "msg": "操作成功",
    "data": {
        "software": {
            "total": 11,
            "data": [
                {
                    "name": "v1.1",
                    "value": 5
                },
                {
                    "name": "v1.2",
                    "value": 5
                },
                {
                    "name": "v2.0",
                    "value": 1
                }
            ]
        },
        "hardware": {
            "total": 11,
            "data": [
                {
                    "name": "v1.4",
                    "value": 5
                },
                {
                    "name": "v1.9",
                    "value": 5
                },
                {
                    "name": "v2.0",
                    "value": 1
                }
            ]
        }
    }
}

模块管理

添加模块

接口名称: 添加模块 接口描述: 添加模块

请求地址:/api/senthink/aep/openApi/otaModule/v1/addOtaModule 传参方式:POST

备注: 无

请求参数

Headers:
参数名称 参数值 是否必须 示例 备注
Content-Type application/json application/json
Body:
名称 类型 是否必须 备注 其他信息
productId string 必须 产品ID
productName string 必须 产品名称
module string 必须 模块标识
moduleName string 必须 模块名称

返回数据

名称 类型 备注 其他信息
code string 响应码
data object 响应数据 **备注:** 响应数据
msg string 响应描述

请求示例

{
    "module": "module002",
    "productId": "75E1C543",
    "moduleName": "moduleName002",
    "productName": "product1"
}

响应示例

{
    "code": "8001",
    "msg": "操作成功",
    "data": {
        "code": "8001",
        "msg": "操作成功",
        "data": true
    }
}

错误码

code code中文描述 详细信息 处理建议
4001 操作失败 详细信息 请根据详细信息检查输入
4301 产品不存在 请检查productId参数
4642 模块标识已存在 请修改模块标识并重试

删除模块

接口名称:删除模块

接口描述:删除模块

请求地址:/api/senthink/aep/openApi/otaModule/v1/deleteOtaModule

传参方式:POST

备注:无

请求参数

Header

参数名称 参数值 是否必须 示例 备注
Content-Type application/json application/json

Body

名称 类型 是否必须 备注 其他信息
productId string 必须 产品ID
module string 必须 模块标识

返回数据

名称 类型 备注 其他信息
code string 响应码
data object 响应数据 **备注:** 响应数据
msg string 响应描述

请求示例

{
    "productId": "2D8DA198",
    "module": "test_lei"
}

响应示例

{
    "code": "8001",
    "msg": "操作成功",
    "data": null
}

编辑模块

接口名称:编辑模块

接口描述:无

请求地址:/api/senthink/aep/openApi/otaModule/v1/editOtaModule

传参方式:POST

备注:无

请求参数

Header:

参数名称 参数值 是否必须 示例 备注
Content-Type application/json application/json

Body:

名称 类型 是否必须 备注 其他信息
productId string 必须 产品ID
module string 必须 模块标识
moduleName string 必须 模块名称
moduleDesc string 非必须 模块描述

返回数据

名称 类型 备注 其他信息
code string 响应码
data object 响应数据 **备注:** 响应数据
msg string 响应描述

请求示例

{
    "module": "module003",
    "productId": "2D8DA198",
    "moduleName": "模块名称-改1"
}

响应示例

{
    "code": "8001",
    "msg": "操作成功",
    "data": {
        "code": "8001",
        "msg": "操作成功",
        "data": true
    }
}

查询模块详情

接口名称:查询模块详情

接口描述:无

请求地址:/api/senthink/aep/openApi/otaModule/v1/queryOtaModuleDetail

传参方式:POST

备注:无

请求参数

Header:

参数名称 参数值 是否必须 示例 备注
Content-Type application/json application/json

Body:

名称 类型 是否必须 备注 其他信息
productId string 必须 产品ID
module string 必须 模块标识

返回数据

名称 类型 备注 其他信息
code string 响应码
data object 响应数据(模块详情) **备注:** 响应数据
msg string 响应描述

请求示例

{
    "productId": "2D8DA198",
    "module": "module003"
}

响应示例

{
    "code": "8001",
    "msg": "操作成功",
    "data": {
        "id": "618207ff94a90b63fc2ac445",
        "module": "module003",
        "moduleName": "模块名称-改1",
        "companyId": "520CFD08",
        "productId": "2D8DA198",
        "productName": "测试添加产品",
        "moduleDesc": null,
        "initialization": false,
        "createAt": "2021-11-03 11:54:39",
        "updateAt": "2021-11-03 14:42:52",
        "delete": 0
    }
}

设备分组管理

添加分组

接口名称:添加分组

接口描述:该接口用于添加设备分组

请求地址:/api/senthink/aep/openApi/deviceGroup/v1/add

传参方式:POST

备注:创建分组后,企业可以跨产品管理所有设备

请求参数

Headers:
参数名称 参数值 是否必须 示例 备注
Content-Type application/json application/json
Body:
名称 类型 是否必须 备注
name string 必须 分组名称
level integer 必须 层级,0:1级分组,1:2级分组,2:三级分组
description string 非必须 分组描述,非必填,如果填写了,则长度必须是100个字符以内
num string 非必须 分组编号
parentNum string 非必须 所属父分组的分组编号,再创建2级和3级分组时为必填

返回数据

名称 类型 备注 其他信息
code string 响应码
data object 响应数据(分组详情) **备注:** 响应数据
msg string 响应描述

请求示例

{
    "level": 1,
    "name": "group14-1",
    "description": "openapi首次添加设备2级分组测试",
    "parentNum": "VkhBJ99u8qGG7yCg"
}

响应示例

{
    "code": "8001",
    "msg": "操作成功",
    "data": {
        "id": "61e7c8a0992cb92b5f3e5575",
        "companyId": "520CFD08",
        "name": "group14-1",
        "num": "05qpm29NGrFycE0A",
        "parentNum": "VkhBJ99u8qGG7yCg",
        "level": 2,
        "description": "openapi首次添加设备2级分组测试",
        "nodeEuis": [],
        "createAt": "2022-01-19 16:15:28",
        "updateAt": null,
        "joinAt": null,
        "delete": 0,
        "total": null,
        "onlineNum": 0,
        "activeNum": 0,
        "children": []
    }
}

删除分组

接口名称:删除分组

接口描述:该接口用于删除设备分组

请求地址:/api/senthink/aep/openApi/deviceGroup/v1/delete

传参方式:POST

备注:暂无

请求参数

Headers:
参数名称 参数值 是否必须 示例 备注
Content-Type application/json application/json
Body:
名称 类型 是否必须 备注
name string 必须 分组名称

返回数据

名称 类型 备注 其他信息
code string 响应码
data object 响应数据 **备注:** 响应数据
msg string 响应描述

请求示例

{
    "name": "group15-1"
}

响应示例

{
    "code": "8001",
    "msg": "操作成功",
    "data": true
}

编辑分组

接口名称:编辑分组

接口描述:用于编辑和修改分组信息

请求地址:/api/senthink/aep/openApi/deviceGroup/v1/edit

传参方式:POST

备注:暂无

请求参数

Headers:
参数名称 参数值 是否必须 示例 备注
Content-Type application/json application/json
Body:
名称 类型 是否必须 备注
id string 必须 分组文档ID
name string 必须 分组名称,支持中文、英文字母、数字和下划线(_),长度限制4~30个字符,中文算2个字符,企业下唯一
description string 非必须 分组描述,限制0-100个字符内

返回数据

名称 类型 备注 其他信息
code string 响应码
data object 响应数据 **备注:** 响应数据
msg string 响应描述

请求示例

{
    "id": "61e8f9a501f61368266f0deb",
    "name": "group14-2",
    "description":"编辑分组的描述信息"
}    

响应示例

{
    "code": "8001",
    "msg": "操作成功",
    "data": true
}

查询分组

接口名称:查询分组

接口描述:该接口用于查询分组详情

请求地址:/api/senthink/aep/openApi/deviceGroup/v1/query

传参方式:POST

备注:暂无

请求参数

Headers:
参数名称 参数值 是否必须 示例 备注
Content-Type application/json application/json
Body:
名称 类型 是否必须 备注
name string 必须 分组名称
productId string 非必须 产品ID
connect string 非必须 连接状态
search string 必须 模糊查询条件
page string 必须 当前页
pageSize string 必须 每页数据量

返回数据

名称 类型 备注 其他信息
code string 响应码
data object 响应数据(分组名称等基本信息、分组下设备列表等) **备注:** 响应数据
msg string 响应描述

data的数据结构:

请求示例

{
    "name": "group14-2",
    "page": 1,
    "pageSize": 10,
    "search": "lei",
    "connect": 1,
    "productId": "0327CB6D"
}    

响应示例

{
    "code": "8001",
    "msg": "操作成功",
    "data": {
        "statusEnum": {
            "0": "禁用",
            "1": "启用"
        },
        "connectStatus": {
            "0": "离线",
            "-1": "未激活",
            "1": "在线"
        },
        "deviceList": {
            "records": [
                {
                    "id": "6180abdaa275801ea460f6df",
                    "productDocId": "6180a39f7571341cc90f7b52",
                    "productId": null,
                    "productKey": null,
                    "nodeEui": "0000005",
                    "deviceName": "lei_jun",
                    "uniqueId": "9EAA5390003F42A38660BC86AC8115E4",
                    "deviceSecret": "A51A1EA3BA97400D3AA062EE0E861F12",
                    "companyId": "520CFD08",
                    "connected": 1,
                    "activeAt": null,
                    "lastJoinAt": null,
                    "lastHeartbeatAt": null,
                    "lastDisconnectAt": null,
                    "status": 1,
                    "localLogReport": 1,
                    "createAt": "2021-11-02 11:09:14",
                    "sessionKey": null,
                    "productName": "MQTT开放协议产品-透传",
                    "accessType": null,
                    "netType": null,
                    "protocol": null,
                    "deviceType": 0,
                    "securityType": null,
                    "encrypted": null,
                    "authType": null,
                    "payloadFormat": null,
                    "topic": null,
                    "hardVer": null,
                    "softVer": null,
                    "versionReportAt": null,
                    "otaType": null,
                    "modeId": null,
                    "upNodeId": null,
                    "relationTime": null,
                    "relationState": null,
                    "dataFormat": null,
                    "ctwingProductId": null,
                    "ctwingMasterKey": null,
                    "ctwingAppId": null,
                    "ctwingAppKey": null,
                    "ctwingAppSecret": null,
                    "delete": 0,
                    "mqttAccount": null,
                    "groupPoList": [
                        {
                            "id": "61b83d649e6a6a2ed1e8f924",
                            "companyId": "520CFD08",
                            "name": "group1",
                            "num": "kM2Z26erBbhJb3uV",
                            "parentNum": null,
                            "level": 1,
                            "description": null,
                            "nodeEuis": [
                                "0000001",
                                "0000002",
                                "0000003",
                                "0000004",
                                "0000005"
                            ],
                            "createAt": "2021-12-14 14:44:52",
                            "updateAt": null,
                            "joinAt": "2022-01-12 13:47:11",
                            "delete": 0
                        },
                        {
                            "id": "61de6c4e4263891c167df208",
                            "companyId": "520CFD08",
                            "name": "group9",
                            "num": "nmkzMdbP065Oo4X2",
                            "parentNum": null,
                            "level": 1,
                            "description": null,
                            "nodeEuis": [
                                "0000002",
                                "0000003",
                                "0000004",
                                "0000005"
                            ],
                            "createAt": "2022-01-12 13:51:10",
                            "updateAt": null,
                            "joinAt": "2022-01-12 15:01:52",
                            "delete": 0
                        },
                        {
                            "id": "61b840079e6a6a2ed1e8f925",
                            "companyId": "520CFD08",
                            "name": "group2",
                            "num": "FAU7LTisZr9BqRk8",
                            "parentNum": null,
                            "level": 1,
                            "description": null,
                            "nodeEuis": [
                                "device-group-device1",
                                "0000001",
                                "0000002",
                                "0000003",
                                "0000004",
                                "0000005"
                            ],
                            "createAt": "2021-12-14 14:56:07",
                            "updateAt": null,
                            "joinAt": "2022-01-12 15:10:10",
                            "delete": 0
                        },
                        {
                            "id": "61de6c554263891c167df209",
                            "companyId": "520CFD08",
                            "name": "group10",
                            "num": "nbERm2lhyxtm1PYu",
                            "parentNum": null,
                            "level": 1,
                            "description": null,
                            "nodeEuis": [
                                "0000001",
                                "0000002",
                                "0000003",
                                "0000004",
                                "0000005"
                            ],
                            "createAt": "2022-01-12 13:51:17",
                            "updateAt": null,
                            "joinAt": "2022-01-13 15:45:29",
                            "delete": 0
                        },
                        {
                            "id": "61e7c821992cb92b5f3e5574",
                            "companyId": "520CFD08",
                            "name": "group14",
                            "num": "VkhBJ99u8qGG7yCg",
                            "parentNum": null,
                            "level": 1,
                            "description": "openapi首次添加设备分组测试2",
                            "nodeEuis": [
                                "0000005"
                            ],
                            "createAt": "2022-01-19 16:13:21",
                            "updateAt": "2022-01-19 17:42:17",
                            "joinAt": "2022-01-19 17:42:02",
                            "delete": 0
                        },
                        {
                            "id": "61e8f9a501f61368266f0deb",
                            "companyId": "520CFD08",
                            "name": "group14-2",
                            "num": "8M8NCB2xaIE5EVNV",
                            "parentNum": "VkhBJ99u8qGG7yCg",
                            "level": 2,
                            "description": "编辑分组的描述信息",
                            "nodeEuis": [
                                "0000005"
                            ],
                            "createAt": "2022-01-20 13:56:53",
                            "updateAt": "2022-01-20 14:10:11",
                            "joinAt": "2022-01-20 14:06:58",
                            "delete": 0
                        }
                    ],
                    "gatewayProtocol": null,
                    "gatewayInfo": null,
                    "planData": null,
                    "nodeId": null,
                    "channelNum": null,
                    "online": true
                }
            ],
            "pages": 1,
            "current": 1,
            "size": 10,
            "searchCount": true,
            "total": 1,
            "optimizeCount": true,
            "offset": 0,
            "limit": 2147483647,
            "asc": true,
            "orderByField": null
        },
        "deviceGroup": {
            "id": "61e8f9a501f61368266f0deb",
            "companyId": "520CFD08",
            "name": "group14-2",
            "num": "8M8NCB2xaIE5EVNV",
            "parentNum": "VkhBJ99u8qGG7yCg",
            "level": 2,
            "description": "编辑分组的描述信息",
            "nodeEuis": [
                "0000005",
                "1000000001"
            ],
            "createAt": "2022-01-20 13:56:53",
            "updateAt": "2022-01-20 14:10:11",
            "joinAt": null,
            "delete": 0,
            "total": 2,
            "onlineNum": 1,
            "activeNum": 2,
            "children": []
        },
        "nodeTypeEnum": {
            "0": "设备",
            "1": "网关"
        },
        "products": [
            {
                "id": "6142fba6dfc1b25f432c7dd4",
                "productId": "75E1C543",
                "name": "product1",
                "companyId": "520CFD08",
                "apiAppId": null,
                "pushAppId": "614440465ee51309d098645b",
                "productKey": "5EC993EE2CCE83069B32FBE8C7C69503",
                "deviceType": 0,
                "accessType": 1,
                "netType": -1,
                "protocol": 0,
                "securityType": 0,
                "encrypted": 1,
                "authType": 0,
                "payloadFormat": 0,
                "dataFormat": null,
                "productDesc": "TCP产品",
                "status": 1,
                "createAt": "2021-09-16 16:09:10",
                "updateAt": "2021-09-16 16:09:10",
                "ctwingProductId": null,
                "ctwingMasterKey": null,
                "ctwingAppId": null,
                "ctwingAppKey": null,
                "ctwingAppSecret": null,
                "ctwingPayloadFormat": null,
                "delete": 0,
                "gatewayProtocol": null,
                "cloudProduct": false,
                "tcpProduct": true
            }
        ]
    }
}

查询分组列表


接口名称:查询分组列表

接口描述:该接口用于查询当前企业下的分组列表

请求地址:/api/senthink/aep/openApi/deviceGroup/v1/getList

传参方式:POST

备注:暂无

请求参数

Headers:
参数名称 参数值 是否必须 示例 备注
Content-Type application/json application/json
Body:没有请求体

返回数据

名称 类型 备注 其他信息
code string 响应码
data object 响应数据(当前企业下所有的设备分组列表) **备注:** 响应数据
msg string 响应描述

响应示例

{
    "code": "8001",
    "msg": "操作成功",
    "data": [
        {
            "id": "61de6c484263891c167df207",
            "companyId": "520CFD08",
            "name": "group8",
            "num": "3e3GY4w8afkI0rKO",
            "parentNum": null,
            "level": 1,
            "description": null,
            "nodeEuis": [
                "0000001"
            ],
            "createAt": "2022-01-12 13:51:04",
            "updateAt": null,
            "joinAt": null,
            "delete": 0,
            "total": null,
            "onlineNum": 0,
            "activeNum": 0,
            "children": []
        },
        {
            "id": "61e7c821992cb92b5f3e5574",
            "companyId": "520CFD08",
            "name": "group14",
            "num": "VkhBJ99u8qGG7yCg",
            "parentNum": null,
            "level": 1,
            "description": "openapi首次添加设备分组测试2",
            "nodeEuis": [
                "0000005"
            ],
            "createAt": "2022-01-19 16:13:21",
            "updateAt": "2022-01-19 17:42:17",
            "joinAt": null,
            "delete": 0,
            "total": null,
            "onlineNum": 0,
            "activeNum": 0,
            "children": [
                {
                    "id": "61e8f9a501f61368266f0deb",
                    "companyId": "520CFD08",
                    "name": "group14-2",
                    "num": "8M8NCB2xaIE5EVNV",
                    "parentNum": "VkhBJ99u8qGG7yCg",
                    "level": 2,
                    "description": "编辑分组的描述信息",
                    "nodeEuis": [
                        "0000005"
                    ],
                    "createAt": "2022-01-20 13:56:53",
                    "updateAt": "2022-01-20 14:10:11",
                    "joinAt": null,
                    "delete": 0,
                    "total": null,
                    "onlineNum": 0,
                    "activeNum": 0,
                    "children": []
                }
            ]
        }
    ]
}

批量添加设备到分组

接口名称:批量添加设备到分组

接口描述:该接口用于批量添加设备到分组

请求地址:/api/senthink/aep/openApi/deviceGroup/v1/batchAdd

传参方式:POST

备注:暂无

请求参数

Headers:
参数名称 参数值 是否必须 示例 备注
Content-Type application/json application/json
Body:
名称 类型 是否必须 备注
deviceIds string 必须 设备文档Id拼接的字符串
groupId string 必须 分组文档ID

返回数据

名称 类型 备注 其他信息
code string 响应码
data object 响应数据 **备注:** 响应数据
msg string 响应描述

请求示例

{
    "deviceIds": "6180a3bf7571341cc90f7b55,6180aa63ea679609a7aa24e7",
    "groupId": "61e8f9a501f61368266f0deb"
}

响应示例

{
    "code": "8001",
    "msg": "操作成功",
    "data": "操作结果:{\"success\": 0,\"fail\": 1}"
}

移除分组下的设备/移除设备所属分组

接口名称:移除分组下的设备/移除设备所属分组

接口描述:该接口用于移除操作,可以移除分组下的设备或移除设备所属的分组

请求地址:/api/senthink/aep/openApi/deviceGroup/v1/remove

传参方式:POST

备注:暂无

请求参数

Headers:
参数名称 参数值 是否必须 示例 备注
Content-Type application/json application/json
Body:
名称 类型 是否必须 备注
nodeEui string 必须 设备编号
groupName string 必须 分组名称

返回数据

名称 类型 备注 其他信息
code string 响应码
data object 响应数据 **备注:** 响应数据
msg string 响应描述

请求示例

{
    "nodeEui": "0000001",
    "groupName": "group14-2"
}

响应示例

{
    "code": "8001",
    "msg": "操作成功",
    "data": "操作成功"
}

子设备管理

批量添加/解除网关子设备

接口名称:批量添加或解除子设备

接口描述:该接口用于给网关类型的设备添加子设备或解除其子设备

请求地址:/api/senthink/aep/openApi/subDevice/v1/batchAddOrRelieve

传参方式:POST

备注:暂无

请求参数

Headers:
参数名称 参数值 是否必须 示例 备注
Content-Type application/json application/json
Body:
名称 类型 是否必须 备注
gatewayNodeEui string 必须 网关设备号
subdeviceNodeEuiList array 必须 子设备号集合
type boolean 必须 true表示批量添加 false表示批量解除

返回数据

名称 类型 备注 其他信息
code string 响应码
data object 响应数据
msg string 响应描述

请求示例

{
    "gatewayNodeEui": "gateway001",
    "subdeviceNodeEuiList": ["device003", "device2022001"],
    "type":false
}

响应示例

{
    "code": "8001",
    "msg": "操作成功",
    "data": "操作成功"
}

分页查询网关子设备

接口名称:分页查询网关子设备

接口描述:该接口用于分页查询网关设备下的子设备列表

请求地址:/api/senthink/aep/openApi/subDevice/v1/getPage

传参方式:POST

备注:暂无

请求参数

Headers:
参数名称 参数值 是否必须 示例 备注
Content-Type application/json application/json
Body:
名称 类型 是否必须 备注
nodeEui string 必须 网关设备号
page integer 必须 当前页
pageSize integer 必须 每页数据量
search string 非必须 设备号或备注名称

返回数据

名称 类型 备注 其他信息
code string 响应码
data object 响应数据 包括状态枚举和子设备列表数据
msg string 响应描述

data数据结构如下:

名称 类型 备注 其他信息
relationStateEnum object 关联状态枚举:0-未关联 1-已关联 2-解除中
connectEnum object 连接状态枚举:0-离线 1-在线 -1-未激活
bindStateEnum object 启用状态枚举:0-禁用 1-启用
data object 子设备分页数据

请求示例

{
    "nodeEui": "gateway001",
    "page": 1,
    "pageSize": 2,
    "search":"004"
}

响应示例

{
    "code": "8001",
    "msg": "操作成功",
    "data": {
        "relationStateEnum": {
            "0": "未关联",
            "1": "已关联",
            "2": "解除中"
        },
        "connectEnum": {
            "0": "离线",
            "-1": "未激活",
            "1": "在线"
        },
        "bindStateEnum": {
            "0": "禁用",
            "1": "启用"
        },
        "data": {
            "records": [
                {
                    "id": "61ea593aab40077dc259c507",
                    "productDocId": "61ea5290ab40077dc259c4fb",
                    "nodeEui": "subDevice004",
                    "deviceName": "subDevice004",
                    "companyId": "520CFD08",
                    "connected": -1,
                    "lastJoinAt": null,
                    "lastDisconnectAt": null,
                    "status": 1,
                    "protocol": 1,
                    "productName": "网关子设备测试产品1",
                    "deviceType": 0,
                    "upNodeId": "520CFD08-8B709C96-gateway001",
                    "subDeviceCount": 0,
                    "accessType": 3,
                    "relationTime": "2022-01-21 14:57:35",
                    "relationState": 0,
                    "upNodeEui": null,
                    "gatewayStatus": null
                }
            ],
            "pages": 1,
            "current": 1,
            "size": 2,
            "searchCount": true,
            "total": 1,
            "optimizeCount": true,
            "offset": 0,
            "limit": 2147483647,
            "asc": true,
            "orderByField": null
        }
    }
}

results matching ""

    No results matching ""