设备端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.inspur.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校验时,发现传入的参数不是数组类型。 在控制台,查看设备所属产品的功能定义,核对传入的对应参数是否是数组类型。