设备端API
通用设备数据上下行接口
设备具备发布权限,用于设备上报数据
- iot/{projectCode}/{productCode}/{deviceCode}/event
设备具备订阅权限,用于设备获取应用下发的数据
- iot/{projectCode}/{productCode}/{deviceCode}/control
设备拓扑关系
获取设备的拓扑关系
网关设备
- 请求Topic:iot/{projectCode}/{productCode}/{deviceCode}/thing/topo/get
{
"id": "123",
"version": "1.0",
"params": "",
"method": ""
}
- 响应Topic:iot/{projectCode}/{productCode}/{deviceCode}/thing/topo/get_reply
{
"id":"123",
"code":"200",
"data":[
{
" IotDeviceCode ":"deviceName1234",
" IotModelCode ":"1234556554"
}
]
}
子设备上下线
子设备上线
- 请求Topic:iot/{projectCode}/{productCode}/{deviceCode}/online
因为子设备通过网关通道与物联网平台通信,以上Topic为网关设备的Topic。Topic中变量 {projectCode}/{productCode}/{deviceCode}需替换为网关设备的对应信息。
{
"id":"123",
"params":{
"IotModelCode":"123",
"IotDeviceCode":"test"
}
}
- 响应Topic:
iot/{projectCode}/{productCode}/{deviceCode}/online_reply
{
"id":"123",
"code":"200",
"message":"success",
"data":"",
"ts": 1565838594136
}
子设备下线
- 请求Topic:iot/{projectCode}/{productCode}/{deviceCode}/offline
因为子设备通过网关通道与物联网平台通信,以上Topic为网关设备的Topic。Topic中变量 {projectCode}/{productCode}/{deviceCode}需替换为网关设备的对应信息。
{
"id": 123,
"params": {
"IotModelCode": "123",
"IotDeviceCode": "test"
}
}
- 响应Topic:iot/{projectCode}/{productCode}/{deviceCode}/offline_reply
{
"id": "123",
"code": "200",
"message": "success",
"data": "",
"ts": 1559734298019
}
设备生命周期变更
设备上下线状态
通过该Topic获取设备的上下线状态。
- 数据流转Topic:iot/{projectCode}/{productCode}/{deviceCode}/mqtt/status
{
"status" : "online",
"IotModelCode" : "xxxxxxxxxxx",
"IotDeviceCode" :"xxxxxxxxxx",
"time": 1565851637014
}
TSL物模型模板
设备可以通过上行请求获取设备的TSL模板。
- TOPIC:iot/{projectCode}/{productCode}/{deviceCode}/thing/dsltemplate/get
{
"id": "123",
"version": "1.0",
"params": "",
"method": "thing.dsltemplate.get"
}
- REPLY TOPIC:iot/{projectCode}/{productCode}/{deviceCode}/thing/dsltemplate/get_reply
物模型示例:
{
"schema": "https://iop.com/schema.json",
"profile": {
"modelCode": "4rdep3ll"
},
"link": "",
"properties": [{
"identifier": "1",
"dataType": {
"specs": {
"unit": "平方米 / ㎡",
"min": "1",
"max": "1",
"step": "1"
},
"type": "float"
},
"name": "1",
"accessMode": "rw",
"required": false
}, {
"identifier": "temperature",
"dataType": {
"specs": {
"unit": "摄氏度 / °C",
"min": "1",
"max": "100",
"step": "0.1"
},
"type": "float"
},
"name": "温度",
"accessMode": "rw",
"required": false
}]
}
TSL物模型属性上报
设备可以通过上行请求上报设备的物模型属性数据。 上报说明: 1) 设备按照平台定义的标准数据格式生成数据,然后上报数据。 2) 平台根据您定义的TSL中属性格式,校验上报的属性信息,校验通过后更新相应属性。 3) 校验后,过滤掉不合格的属性,仅保留合格属性。即使全部属性都被过滤,也代表着校验成功。- TOPIC:iot/{projectCode}/{productCode}/{deviceCode}/thing/event/property/post
{
"id": "123",
"params": {
"EnumTest": 3,
"TextTest": "testTeasdfasdfasst",
"boolTest": 0,
"doubleTest": 422332,
"floatTest": 513412,
"dateTest": "1574309532419",
"intTest": 41
},
"version": "1.0",
"method": "thing.event.property.post"
}
报文说明:
参数 | 类型 | 说明 |
---|---|---|
id | String | 消息ID号。需定义为String类型的数字,且设备维度唯一。 |
version | String | 协议版本号,目前协议版本号为1.0。 |
method | String | 请求方法。取值:thing.event.property.post。 |
params | Object | 请求参数。(上文中参数为示例数据) |
- REPLY TOPIC:iot/{projectCode}/{productCode}/{deviceCode}/thing/event/property/post_reply
属性上报响应(暂不支持事件和服务):
{
"code": 200,
"data": {
"floatTest": "6307:tsl parse: float value is bigger than max 532 -> floatTest",
"EnumTest": "tsl parse: params not exist",
"doubleTest": "6322:tsl parse: double value is bigger than max 5423 -> doubleTest",
"TextTest": "tsl parse: params not exist"
},
"id": "123",
"message": "success",
"method": "thing.event.property.post",
"version": "1.0"
}
响应报文说明
参数 | 类型 | 说明 |
---|---|---|
id | String | 消息ID号,String类型的数字。 |
code | Integer | 结果状态码。 具体参考设备端通用code。 |
data | String | 请求成功时,返回的数据,校验全部通过时无数据,有错误时请查看上面响应示例。 |
method | String | 请求方法。取值:thing.event.property.post。 |
version | String | 协议版本号,目前协议版本号为1.0。 |
错误码
错误码 | 原因 | 描述 |
---|---|---|
460 | 请求参数错误 | 请求参数错误。 |
6106 | 上报的属性数据过多。设备一次上报的有效属性个数不能超过200个。 | 检查上报的属性个数。 |
6207 | 传入的数据格式,或者调用脚本解析后返回的数据格式,不是JSON格式。 | 请参见设备属性、事件、服务,查看对应数据格式,并按格式要求上报数据。 |
6304 | 传入的参数在结构体中不存在。 | 在控制台,查看设备所属产品的功能定义,核对传入的参数类型。 |
6306 | 传入的参数类型和TSL中定义的类型不一致。或传入的参数取值范围不符合功能定义时设置的参数范围 | 在控制台,查看设备所属产品的功能定义,核对传入的参数类型和取值范围。 |
6307 | 传入的参数不符合TSL中32位浮点数据的规范。传入的参数类型和TSL中定义的类型不一致,或传入的参数取值范围不符合功能定义时设置的参数范围 | 在控制台,查看设备所属产品的功能定义,核对传入的参数类型和取值范围。 |
6308 | 传入的参数不符合TSL中布尔类型数据的规范。传入的参数类型和TSL中定义的类型不一致,或传入的参数取值范围不符合功能定义时设置的参数范围 | 在控制台,查看设备所属产品的功能定义,核对传入的参数类型和取值范围。 |
6309 | 传入的参数不符合TSL中枚举类型数据的规范。 | 在控制台,查看设备所属产品的功能定义,核对传入的参数类型。 |
6310 | 传入的参数不符合TSL中字符类型数据的规范。传入的参数类型和TSL中定义的类型不一致,或传入的字符类型的参数长度超过限制 | 在控制台,查看设备所属产品的功能定义,核对传入的参数类型和取值范围。 |
6311 | 传入的参数不符合TSL中日期类型数据的规范。传入的参数类型和TSL中定义的类型不一致,或传入的字符类型不是UTC时间戳的字符格式 | 在控制台,查看设备所属产品的功能定义,核对传入的参数类型。 |
6312 | 传入的参数不符合TSL中结构体类型数据的规范。传入的参数类型和TSL中定义的类型不一致,或结构体类型中参数的个数和TSL中定义不一致 | 在控制台,查看设备所属产品的功能定义,核对传入的参数类型。 |
6322 | 传入的参数不符合TSL中64位浮点数据的规范。传入的参数类型和TSL中定义的类型不一致,或传入的参数取值范围不符合功能定义时设置的参数范围 | 在控制台,查看设备所属产品的功能定义,核对传入的参数类型和取值范围。 |
6328 | TSL校验时,发现传入的参数不是数组类型。 | 在控制台,查看设备所属产品的功能定义,核对传入的对应参数是否是数组类型。 |