物联网平台的云产品流转和服务端订阅,是基于Topic中的数据格式来处理和传递数据的。Topic可分为自定义Topic、基础通信Topic和物模型Topic,其中自定义Topic中的数据格式由您定义。本文介绍基础通信Topic和物模型通信Topic数据经过规则引擎转化后的数据格式。

规则引擎流转与设备原始通信的Topic说明

通信Topic的定义、使用和分类说明,请参见什么是Topic

设备上报的原始数据格式,需您在设备端完成开发。其中:
  • 基础通信Topic和物模型通信Topic数据必须符合物联网平台支持的Alink协议。详细说明,请参见Alink协议目录下对应文档

    设备上报原始数据经过规则引擎流转后,会进行数据格式转化。具体格式说明,请参见下文描述。

  • 自定义Topic数据由您自定义数据格式。

    设备上报原始数据经过规则引擎流转后,不会进行数据格式转化,与您自定义Topic数据格式相同。

设备原始数据通信Topic,对应规则引擎转发设备数据的通信Topic说明如下表。

表 1. Topic说明
Topic说明相关文档
自定义流转自定义数据格式消息的Topic,与自定义Topic的格式相同。格式为:/${productKey}/${deviceName}/user/${TopicShortName}

其中${TopicShortName}为自定义的Topic类,即自定义Topic的后缀。

支持使用通配符(+)和(#):

  • 全部设备(+):指定产品下所有设备。
  • /user/#:指定设备的所有自定义Topic。
自定义Topic
设备状态变化通知流转设备上下线状态变更消息的Topic:/as/mqtt/status/${productKey}/${deviceName}设备上下线状态
物模型数据上报包含:
  • 流转设备上报属性数据的Topic:/${productKey}/${deviceName}/thing/event/property/post
  • 流转设备上报事件数据的Topic:/${productKey}/${deviceName}/thing/event/${tsl.event.identifier}/post
  • 流转设备批量上报属性数据的Topic:/${productKey}/${deviceName}/thing/property/batch/post
  • 流转设备批量上报事件数据的Topic:/${productKey}/${deviceName}/thing/event/batch/post
  • 流转设备响应云端命令返回消息的Topic:/${productKey}/${deviceName}/thing/downlink/reply/message
对应设备上报原始数据的Topic如下:
  • 设备上报属性的Topic:/sys/${productKey}/${deviceName}/thing/event/property/post
  • 设备上报事件的Topic:/sys/${productKey}/${deviceName}/thing/event/${tsl.event.identifier}/post/sys/${productKey}/${deviceName}/thing/event/${tsl.functionBlockId}:{tsl.event.identifier}/post
  • 设备批量上报属性、事件数据的Topic:/sys/${productKey}/${deviceName}/thing/event/property/batch/post
设备生命周期变更流转设备创建、删除、禁用、启用等消息的Topic:/${productKey}/${deviceName}/thing/lifecycle设备生命周期变更
网关发现子设备上报网关设备特有的Topic:/${productKey}/${deviceName}/thing/list/found,将发现的子设备信息上报给物联网平台,然后进行流转。网关发现子设备
设备拓扑关系变更网关设备特有Topic:/${productKey}/${deviceName}/thing/topo/lifecycle,流转子设备和网关之间的拓扑关系建立和解除消息的Topic。设备拓扑关系变更
对应设备上报原始数据的Topic:/sys/${productKey}/${deviceName}/thing/topo/change通知网关拓扑关系变化
设备标签变更流转设备标签信息变更的Topic:/${productKey}/${deviceName}/thing/deviceinfo/update设备标签变更
对应设备上报原始数据的Topic:/sys/${productKey}/${deviceName}/thing/deviceinfo/update上报标签信息
物模型历史数据上报包含:
  • 流转设备上报历史属性数据的Topic:/${productKey}/${deviceName}/thing/event/property/history/post
  • 流转设备上报历史事件数据的Topic:/${productKey}/${deviceName}/thing/event/${tsl.event.identifier}/history/post
对应设备上报物模型历史数据的Topic:/sys/${productKey}/${deviceName}/thing/event/property/history/post物模型历史数据上报
OTA升级设备状态通知包含:
  • 流转设备上报OTA升级结果的Topic:/${productKey}/${deviceName}/ota/upgrade
  • 流转设备上报OTA升级进度的Topic:/${productKey}/${deviceName}/ota/progress/post
对应设备上报升级进度的Topic:/ota/device/progress/${productKey}/${deviceName}设备上报升级进度
OTA模块版本号上报流转设备上报OTA模块版本号变更的Topic:/${productKey}/${deviceName}/ota/version/postOTA模块版本号变更通知
对应设备上报OTA模块版本的Topic:/ota/device/inform/${productKey}/${deviceName}设备上报OTA模块版本
OTA升级批次状态通知物联网平台通知OTA升级批次状态变化的Topic:/${productKey}/${packageId}/${jobId}/ota/job/statusOTA升级批次状态通知
任务事件包含:
  • 流转设备任务状态通知的Topic:/sys/uid/${uid}/job/${jobId}/lifecycle
  • 流转实例迁移任务状态通知的Topic:/sys/uid/${uid}/distribution/${jobId}/lifecycle
    说明 迁移产品的名称为实例迁移的任务名称。
孪生节点属性变更流转数字孪生节点属性数据的Topic:/sys/uid/${uid}/digitaltwin/${dtInstanceId}/${nodeId}/property/update数字孪生节点属性变更

设备上下线状态

Topic:/as/mqtt/status/${productKey}/${deviceName}

通过该Topic获取设备的上下线状态。

设备上线的数据格式:

{
    "status":"online",
    "iotId":"4z819VQHk6VSLmmBJfrf00107e****",
    "productKey":"al12345****",
    "deviceName":"deviceName1234",
    "time":"2018-08-31 15:32:28.205",
    "utcTime":"2018-08-31T07:32:28.205Z",
    "lastTime":"2018-08-31 15:32:28.195",
    "utcLastTime":"2018-08-31T07:32:28.195Z",
    "clientIp":"192.0.2.1"
}

设备下线的数据格式:

{
    "status":"offline",
    "iotId":"4z819VQHk6VSLmmBJfrf00107e****",
    "offlineReasonCode":427,
    "productKey":"al12345****",
    "deviceName":"deviceName1234",
    "time":"2018-08-31 15:32:28.205",
    "utcTime":"2018-08-31T07:32:28.205Z",
    "lastTime":"2018-08-31 15:32:28.195",
    "utcLastTime":"2018-08-31T07:32:28.195Z",
    "clientIp":"192.0.2.1"
}

参数说明:

参数类型说明
statusString设备状态。
  • online:上线。
  • offline:离线。
iotIdString设备在平台内的唯一标识。
offlineReasonCodeInteger设备下线时,返回的错误码。详细说明,请参见设备行为错误码
productKeyString设备所属产品的唯一标识。
deviceNameString设备名称。
lastTimeString该参数为历史存量字段,已无实际意义。
utcLastTimeString
TimeString设备上、下线的时间。

收到消息的顺序不是实际设备上下线时间排序。设备上下线顺序需按照Time具体值排序。

例如,您依次收到3条消息:
  1. 上线:2018-08-31 10:02:28.195
  2. 下线:2018-08-31 10:01:28.195
  3. 下线:2018-08-31 10:03:28.195
这3条消息展示了,设备先下线,再上线,最后下线的过程。
utcTimeString设备上、下线的UTC时间。
clientIpString设备公网出口IP。

设备属性上报

Topic:/${productKey}/${deviceName}/thing/event/property/post

通过该Topic获取设备上报的属性信息。

数据格式:

{
    "iotId":"4z819VQHk6VSLmmBJfrf00107e****",
    "requestId":"2",
    "productKey":"al12345****",
    "deviceName":"deviceName1234",
    "gmtCreate":1510799670074,
    "deviceType":"Ammeter",
    "items":{
        "Power":{
            "value":"on",
            "time":1510799670074
        },
        "Position":{
            "time":1510292697470,
            "value":{
                "latitude":39.9,
                "longitude":116.38
            }
        }
    },
    "checkFailedData":{
        "attribute_8":{
            "time": 1510292697470,
            "value": 715665571,
            "code":6304,
            "message":"tsl parse: params not exist -> attribute_8"
        }
    }
}

参数说明:

参数类型说明
iotIdString设备在平台内的唯一标识。
requestIdString设备上报消息的原始数据中的Id,String类型的数字,取值范围为0~4294967295,且每个消息ID在当前设备中具有唯一性。
productKeyString设备所属产品的唯一标识。
deviceNameString设备名称。
gmtCreateLong数据流转消息产生时间。
deviceTypeString设备所属品类。

该品类是您在物联网平台创建产品时选择的品类。具体说明,请参见创建产品CreateProduct

itemsObject设备数据。
PowerString属性标识符。产品所具有的属性名称请参见产品的TSL描述。
如果是自定义模块属性,属性标识符格式为${模块标识符}:${属性标识符}(中间为半角冒号)。例如,物模型自定义模块标识符为test,数据格式为:
{
    "items":{
        "test:Power":{
            "value":"on",
            "time":1510799670074
        },
        "test:Position":{
            "time":1510292697470,
            "value":{
                "latitude":39.9,
                "longitude":116.38
            }
        }
    }
}
Position
attribute_8
checkFailedDataObject未通过物模型数据校验的数据。
value根据TSL定义属性值。
timeLong上报属性的时间,如果设备没有上报数据,默认采用在物联网平台生成的时间。
codeInteger数据未通过物模型数据校验时,返回的错误码。详细说明,请参见设备端接收的错误码
messageString数据未通过物模型数据校验时,返回的错误码信息,包含错误原因和具体的错误参数。

设备事件上报

Topic:/${productKey}/${deviceName}/thing/event/${tsl.event.identifier}/post

通过该Topic获取设备上报的事件信息。

数据格式:

{
    "identifier":"BrokenInfo",
    "name":"损坏率上报",
    "type":"info",
    "iotId":"4z819VQHk6VSLmmBJfrf00107e****",
    "requestId":"2",
    "productKey":"X5eCzh6****",
    "deviceName":"5gJtxDVeGAkaEztpisjX",
    "gmtCreate":1510799670074,
    "value":{
        "Power":"on",
        "Position":{
            "latitude":39.9,
            "longitude":116.38
        }
    },
    "checkFailedData":{},
    "time":1510799670074
}

参数说明:

参数类型说明
identifierString事件的标识符。
如果是自定义模块事件,事件标识符格式为${模块标识符}:${事件标识符}(中间为半角冒号)。例如,物模型自定义模块标识符为test,数据格式为:
"test:identifier":"BrokenInfo",
nameString事件的名称。
typeString事件类型,事件类型参见产品的TSL描述。
iotIdString设备在平台内的唯一标识。
requestIdString设备上报消息的原始数据中的Id,String类型的数字,取值范围为0~4294967295,且每个消息ID在当前设备中具有唯一性。
productKeyString设备所属产品的唯一标识。
deviceNameString设备名称。
gmtCreateLong数据流转消息产生时间。
valueObject事件的输出参数信息。如以上示例中的两个参数Power(电源)和Position(位置)的信息。
{
    "Power":"on",
    "Position":{
        "latitude":39.9,
        "longitude":116.38
    }
}
重要
  • 仅当事件的输出参数均通过检验时,输出参数均显示在value中。此时checkFailedData为空。
  • 当事件的输出参数有任一参数未通过检验时,输出参数均显示在checkFailedData中。此时value为空。
checkFailedDataObject未通过物模型数据校验的数据信息。

若事件的输出参数未通过检验,则checkFailedData为:

{
    "value":{
        "Power":"on",
        "Position":{
            "latitude":39.9,
            "longitude":116.38
        }
    },
    "time":1524448722000,
    "code":6304,
    "message":"tsl parse: params not exist -> type"
}

其中:

  • value:Object类型。事件的输出参数信息。
  • time:Long类型。事件生成的时间戳。
  • code:Integer类型。数据未通过物模型数据校验时,返回的错误码。详细说明,请参见设备端接收的错误码
  • message:String类型。数据未通过物模型数据校验时,返回的错误码信息,包含错误原因和具体的错误参数。
timeLong上报事件的时间,如果设备没有上报数据,默认采用物联网平台生成的时间。

设备属性批量上报

Topic:/${productKey}/${deviceName}/thing/property/batch/post

通过该Topic获取设备批量上报的属性信息。

数据格式:

{
    "productKey": "al12345****",
    "deviceName": "deviceName1234",
    "instanceId": "iot-0***",
    "requestId": "2",
    "items": {
        "Power": [
            {
                "value": "on",
                "time": 1524448722000
            },
            {
                "value": "off",
                "time": 1524448722001
            }
        ],
        "WF": [
            {
                "value": 3,
                "time": 1524448722000
            },
            {
                "value": 4,
                "time": 1524448722009
            }
        ]
    }
}

参数说明:

参数类型说明
productKeyString设备所属产品的唯一标识。
deviceNameString设备名称。
instanceIdString设备所属实例的实例ID。
requestIdString设备上报消息的原始数据中的Id,String类型的数字,取值范围为0~4294967295,且每个消息ID在当前设备中具有唯一性。
itemsObject设备数据。
PowerString属性标识符。产品所具有的属性名称请参见产品的TSL描述。
如果是自定义模块属性,属性标识符格式为${模块标识符}:${属性标识符}(中间为半角冒号)。例如,物模型自定义模块标识符为test,数据格式为:
{
    "items":{
        "test:Power":[
            {
                "value":"on",
                "time":1510799670074
            },
            {
                "value": "off", 
                "time": 1524448722001
            }
        ],
        "test:WF":[
            {
                "value": 3, 
                "time": 1524448722000
            },
            {
                "value": 4, 
                "time": 1524448722009
            }
        ]
    }
}
WF
value根据TSL定义属性值。
timeLong上报属性的时间,如果设备没有上报数据,默认采用在物联网平台生成的时间。

设备事件批量上报

Topic:/${productKey}/${deviceName}/thing/event/batch/post

通过该Topic获取设备批量上报的事件信息。

数据格式:

{
    "productKey": "al12345****",
    "deviceName": "deviceName1234",
    "instanceId": "iot-0***",
    "requestId": "2",
    "items": {
        "alarmEvent": [
            {
                "value": {
                    "Power": "on",
                    "WF": "2"
                },
                "time": 1524448722000
            },
            {
                "value": {
                    "Power": "on",
                    "WF": "2"
                },
                "time": 1524448723000
            }
        ]
    }
}

参数说明:

参数类型说明
productKeyString设备所属产品的唯一标识。
deviceNameString设备名称。
instanceIdString设备所属实例的实例ID。
requestIdString设备上报消息的原始数据中的Id,String类型的数字,取值范围为0~4294967295,且每个消息ID在当前设备中具有唯一性。
itemsObject设备数据。
alarmEventList事件的标识符。
valueObject事件的参数。

以上示例中,PowerWF是事件的参数名称。

timeLong上报事件的时间,如果设备没有上报数据,默认采用在物联网平台生成的时间。

设备生命周期变更

Topic:/${productKey}/${deviceName}/thing/lifecycle

通过该Topic获得设备创建、删除、禁用、启用等消息。

数据格式:

{
    "action": "create|delete|enable|disable",
    "iotId": "4z819VQHk6VSLmmBJfrf00107e****",
    "productKey": "al5eCzh****",
    "deviceName": "5gJtxDVeGAkaEztpisjX",
    "deviceSecret": "wsde***", 
    "messageCreateTime": 1510292739881 
}

参数说明:

参数类型说明
actionString
  • create:创建设备。
  • delete:删除设备。
  • enable:启用设备。
  • disable:禁用设备。
iotIdString设备在平台内的唯一标识。
productKeyString产品的唯一标识。
deviceNameString设备名称。
deviceSecretString设备密钥,仅在action为create时包含。
messageCreateTimeInteger消息产生时间戳,单位为毫秒。

设备拓扑关系变更

Topic:/${productKey}/${deviceName}/thing/topo/lifecycle

通过该Topic获得子设备和网关之间拓扑关系建立和解除信息。

数据格式:

{
    "action" : "create|delete|enable|disable",
    "gwIotId": "dfaejVQHk6VSLmmBJfrf00107e****",
    "gwProductKey": "al5eCzh****",
    "gwDeviceName": "deviceName1234",
    "devices": [ 
        {
            "iotId": "4z819VQHk6VSLmmBJfrf00107e****",
            "productKey": "ala4Czh****",
            "deviceName": "deviceName1234"
        }
    ],
    "messageCreateTime": 1510292739881 
}

参数说明:

参数类型说明
actionString
  • create:新增拓扑关系。
  • delete:移除拓扑关系。
  • enable:启用拓扑关系。
  • disable:禁用拓扑关系。
gwIotIdString网关设备在平台内的唯一标识。
gwProductKeyString网关产品的唯一标识。
gwDeviceNameString网关设备名称。
devicesObject变更的子设备列表。
iotIdString子设备在平台内的唯一标识。
productKeyString子设备产品的唯一标识。
deviceNameString子设备名称。
messageCreateTimeInteger消息产生时间戳,单位毫秒。

网关发现子设备

Topic:/${productKey}/${deviceName}/thing/list/found

在一些场景中网关能够检测到子设备,并将检测到的子设备信息上报。此时可以通过该Topic获取到上报的信息。

数据格式:

{
    "gwIotId":"dfaew9VQHk6VSLmmBJfrf00107e****",
    "gwProductKey":"al12345****",
    "gwDeviceName":"deviceName1234",
    "devices":[
        {
            "iotId":"4z819VQHk6VSLmmBJfrf00107e****",
            "productKey":"alr56g9****",
            "deviceName":"deviceName1234"
        }
    ]
}

参数说明:

参数类型说明
gwIotIdString网关设备在平台内的唯一标识。
gwProductKeyString网关产品的唯一标识。
gwDeviceNameString网关设备名称。
devicesObject发现的子设备列表。
iotIdString子设备在平台内的唯一标识。
productKeyString子设备所属产品的唯一标识。
deviceNameString子设备名称。

设备下行指令结果

Topic:/${productKey}/${deviceName}/thing/downlink/reply/message

通过该Topic可以获取,通过异步方式下发属性设置和服务调用指令给设备,设备进行处理后返回的结果信息。如果下发指令过程中出现错误,也可以通过该Topic得到指令下发的错误信息。

数据格式:

{
    "gmtCreate":1510292739881,
    "iotId":"4z819VQHk6VSLmmBJfrf00107e****",
    "productKey":"al12355****",
    "deviceName":"deviceName1234",
    "requestId":"2",
    "code":200,
    "message":"success",
    "topic":"/sys/al12355****/deviceName1234/thing/service/property/set",
    "data":{},
    "checkFailedData":{
        "value": {
            "PicID": "15194139"
        },
        "code":6304,
        "message":"tsl parse: params not exist -> PicID"
    }
}

参数说明:

参数类型说明
gmtCreateLongUTC时间戳。
iotIdString设备在平台内的唯一标识。
productKeyString设备所属产品的唯一标识。
deviceNameString设备名称。
requestIdString设备上报消息的原始数据中的Id,String类型的数字,取值范围为0~4294967295,且每个消息ID在当前设备中具有唯一性。
codeInteger设备回复的结果状态码,说明参见下表结果状态码
messageString设备回复的结果状态码信息。
topicString下发指令给设备的Topic信息。
dataObject设备返回的结果。Alink格式数据直接返回设备处理结果,透传格式数据则需要经过脚本转换。
checkFailedDataObject未通过物模型数据校验的数据。
value根据TSL定义未通过物模型数据校验的属性值、服务参数值。

以上示例中,PicID是未通过检验的参数名称。

codeInteger数据未通过物模型数据校验时,返回的错误码。详细说明,请参见设备端接收的错误码
messageString数据未通过物模型数据校验时,返回的错误码信息,包含错误原因和具体的错误参数。
表 2. 结果状态码
codemessage说明
200success请求成功。
400request error内部服务错误,处理时发生内部错误。
460request parameter error请求参数错误,设备入参校验失败。
429too many requests请求过于频繁。
9200device not actived设备没有激活。
9201device offline设备不在线。
403request forbidden由于欠费导致请求被禁止。

错误码相应解决办法,请参见设备端接收的错误码

历史属性上报

Topic:/${productKey}/${deviceName}/thing/event/property/history/post

通过该Topic获取设备上报的物模型历史属性数据。

数据格式:

{
    "iotId":"4z819VQHk6VSLmmBJfrf00107e****",
    "requestId":"2",
    "productKey":"12345****",
    "deviceName":"deviceName1234",
    "gmtCreate":1510799670074,
    "deviceType":"Ammeter",
    "items":{
        "Power":{
            "value":"on",
            "time":1510799670074
        },
        "Position":{
            "time":1510292697470,
            "value":{
                "latitude":39.9,
                "longitude":116.38
            }
        }
    },
    "checkFailedData":{
        "attribute_8":{
            "time": 1510292697470,
            "value": 715665571,
            "code":6304,
            "message":"tsl parse: params not exist -> attribute_8"
        }
    }
}

参数说明:

参数类型说明
iotIdString设备在平台内的唯一标识。
requestIdString设备上报消息的原始数据中的Id,String类型的数字,取值范围为0~4294967295,且每个消息ID在当前设备中具有唯一性。
productKeyString设备所属产品的唯一标识。
deviceNameString设备名称。
gmtCreateLong数据流转消息产生时间。
deviceTypeString设备所属品类。

该品类是您在物联网平台创建产品时选择的品类。具体说明,请参见创建产品CreateProduct

itemsObject设备数据。
PowerString属性标识符。产品所具有的属性名称请参见产品的TSL描述。
如果是自定义模块属性,属性标识符格式为${模块标识符}:${属性标识符}(中间为半角冒号)。例如,物模型自定义模块标识符为test,数据格式为:
{
    "items":{
        "test:Power":{
            "value":"on",
            "time":1510799670074
        },
        "test:Position":{
            "time":1510292697470,
            "value":{
                "latitude":39.9,
                "longitude":116.38
            }
        }
    }
}
Position
attribute_8
checkFailedDataObject未通过物模型数据校验的数据。
value根据TSL定义属性值。
timeLong上报属性的时间,如果设备没有上报数据,默认采用在物联网平台生成的时间。
codeInteger数据未通过物模型数据校验时,返回的错误码。详细说明,请参见设备端接收的错误码
messageString数据未通过物模型数据校验时,返回的错误码信息,包含错误原因和具体的错误参数。

历史事件上报

Topic:/${productKey}/${deviceName}/thing/event/${tsl.event.identifier}/history/post

通过该Topic获取设备上报的历史事件数据。

数据格式:

{
    "identifier":"BrokenInfo",
    "name":"损坏率上报",
    "type":"info",
    "iotId":"4z819VQHk6VSLmmBJfrf00107e***",
    "requestId":"2",
    "productKey":"X5eCzh6***",
    "deviceName":"5gJtxDVeGAkaEztpisjX",
    "value":{
        "Power":"on",
        "Position":{
            "latitude":39.9,
            "longitude":116.38
        }
    },
    "checkFailedData":{},
    "time":1510799670074
}

参数说明:

参数类型说明
identifierString事件的标识符。
如果是自定义模块事件,事件标识符格式为${模块标识符}:${事件标识符}(中间为半角冒号)。例如,物模型自定义模块标识符为test,数据格式为:
"test:identifier":"BrokenInfo",
nameString事件的名称。
typeString事件类型,事件类型参见产品的TSL描述。
iotIdString设备在平台内的唯一标识。
requestIdString设备上报消息的原始数据中的Id,String类型的数字,取值范围为0~4294967295,且每个消息ID在当前设备中具有唯一性。
productKeyString设备所属产品的唯一标识。
deviceNameString设备名称。
gmtCreateLong数据流转消息产生时间。
valueObject事件的输出参数信息。如以上示例中的两个参数Power(电源)和Position(位置)的信息。
{
    "Power":"on",
    "Position":{
        "latitude":39.9,
        "longitude":116.38
    }
}
重要
  • 仅当事件的输出参数均通过检验时,输出参数均显示在value中。此时checkFailedData为空。
  • 当事件的输出参数有任一参数未通过检验时,输出参数均显示在checkFailedData中。此时value为空。
checkFailedDataObject未通过物模型数据校验的数据信息。

若事件的输出参数未通过检验,则checkFailedData为:

{
    "value":{
        "Power":"on",
        "Position":{
            "latitude":39.9,
            "longitude":116.38
        }
    },
    "time":1524448722000,
    "code":6304,
    "message":"tsl parse: params not exist -> type"
}

其中:

  • value:Object类型。事件的输出参数信息。
  • time:Long类型。事件生成的时间戳。
  • code:Integer类型。数据未通过物模型数据校验时,返回的错误码。详细说明,请参见设备端接收的错误码
  • message:String类型。数据未通过物模型数据校验时,返回的错误码信息,包含错误原因和具体的错误参数。
timeLong上报事件的时间,如果设备没有上报数据,默认采用物联网平台生成的时间。

OTA升级状态通知

Topic:/${productKey}/${deviceName}/ota/upgrade

通过该Topic获得OTA升级状态消息,即设备OTA升级成功或失败的消息。

说明 如果设备有未完成的升级任务,又对该设备发起批量升级任务,后发起的升级任务将升级失败。这种情况下,物联网平台不流转升级失败消息。

数据格式:

{
    "iotId": "4z819VQHk6VSLmmBJfrf00107e****",
    "productKey": "X5eCzh6****",
    "deviceName": "deviceName1234",
    "moduleName": "default",
    "status": "SUCCEEDED|FAILED|CANCELED",
    "messageCreateTime": 1571323748000,
    "srcVersion": "1.0.1",
    "destVersion": "1.0.2",
    "desc": "success",
    "jobId": "wahVIzGkCMuAUE2gDERM02****",
    "taskId": "y3tOmCDNgpR8F9jnVEzC01****"
}

参数说明:

参数类型说明
iotIdString设备ID,设备的唯一标识符。
productKeyString设备所属产品的唯一标识。
deviceNameString设备名称。
moduleNameStringOTA模块名称。
statusString升级状态。
  • SUCCEEDED:升级成功。
  • FAILED:升级失败。
  • CANCELED:升级已取消。
messageCreateTimeLong消息产生时间戳,单位毫秒。
srcVersionString升级前的版本。
destVersionString升级目标版本。
descString升级状态描述信息。
jobIdString升级批次ID,升级批次的唯一标识符。
taskIdString设备升级记录的唯一标识符。

OTA升级进度通知

Topic:/${productKey}/${deviceName}/ota/progress/post

通过该Topic获得OTA升级中进度消息。

数据格式:

{
    "iotId": "4z819VQHk6VSLmmBJfrf00107e****",
    "productKey": "X5eCzh6****",
    "deviceName": "deviceName1234",
    "moduleName":"default",
    "status":"IN_PROGRESS",
    "step": "90",
    "messageCreateTime": 1571323748000,
    "srcVersion":"1.0.1",
    "destVersion":"1.0.2",
    "desc": "success",
    "jobId": "wahVIzGkCMuAUE2gDERM02****",
    "taskId": "y3tOmCDNgpR8F9jnVEzC01****"
}

参数说明:

参数类型说明
iotIdString设备ID,设备的唯一标识符。
productKeyString设备所属产品的唯一标识。
deviceNameString设备名称。
moduleNameStringOTA模块名称。
statusString升级状态。此处取固定值:IN_PROGRESS(升级中)。
stepInteger设备上报的升级进度。
messageCreateTimeLong消息产生时间戳,单位毫秒。
srcVersionString升级前的版本。
destVersionString升级目标版本。
descString升级状态描述信息。
jobIdString升级批次ID,升级批次的唯一标识符。
taskIdString设备升级记录的唯一标识符。

OTA模块版本号变更通知

Topic:/${productKey}/${deviceName}/ota/version/post

通过该Topic获得设备上报的OTA模块版本号。当设备上报OTA模块版本号,且版本号有变更时进行转发。

数据格式:

{
    "iotId": "4z819VQHk6VSLmmBJfrf00107e****",
    "deviceName": "deviceName1234",
    "productKey": "X5eCzh6****",
    "moduleName": "BarcodeScanner",
    "moduleVersion": "1.0.3",
    "messageCreateTime": 1571323748000
}

参数说明:

参数类型说明
iotIdString设备ID,设备的唯一标识符。
productKeyString设备所属产品的唯一标识。
deviceNameString设备名称。
moduleNameString模块名称。
moduleVersionString模块版本号。
messageCreateTimeLong消息产生时间戳,单位毫秒。

OTA升级批次状态通知

Topic:/${productKey}/${packageId}/${jobId}/ota/job/status

通过该Topic获得OTA升级批次状态变更消息。

数据格式:

{
    "productKey": "X5eCzh6****",
    "moduleName": "BarcodeScanner",
    "packageId": "wahVIzGkCMuAUE2***",
    "jobId": "wahVIzGkCMuAUE2gDERM02****",
    "state": "IN_PROGRESS",
    "messageCreateTime": 1571323748000
}

参数说明:

参数类型说明
productKeyString设备所属产品的唯一标识。
moduleNameString模块名称。
packageIdString升级包ID。是使用CreateOTAFirmware创建升级包时,返回的FirmwareId参数。
jobIdString升级批次ID,升级批次的唯一标识符。
stateString升级批次状态,取值:
  • PLANNED:未开始升级。
  • IN_PROGRESS:升级中。
  • COMPLETED:升级完毕。
  • CANCELED:已取消。
messageCreateTimeLong消息产生时间戳,单位毫秒。

设备标签变更

Topic:/${productKey}/${deviceName}/thing/deviceinfo/update

通过该Topic获得设备的标签变更信息。

数据格式:

{
    "action": "UPDATE|DELETE|DELETEALL"
    "iotId": "4z819VQHk6VSLmmBJfrf00107e****",
    "productKey": "X5eCzh6****",
    "deviceName": "deviceName1234",
    "deletedAttrKeyList": ["abc", "def", "rng"],
    "value": [
        {
            "attrKey": "tagKey",
            "attrValue": "tagValue"
        }
    ],
    "messageCreateTime": 1510799670074
}

参数说明:

参数类型说明
actionString标签变更的类型。可取值:
  • UPDATE:更新或新增标签。
  • DELETE:删除指定标签。
  • DELETEALL:清空所有标签。
iotIdString设备ID,设备的唯一标识符。
productKeyString设备所属产品的唯一标识。
deviceNameString设备名称。
deletedAttrKeyListList删除标签key的列表。

仅当actionDELETE时,显示该参数。

valueList标签数据。
attrKeyString标签Key。
attrValueString标签Value。
messageCreateTimeLong消息产生时间戳,单位毫秒。

设备任务的状态通知

Topic:/sys/uid/${uid}/job/${jobId}/lifecycle

通过该Topic获得设备任务(设备批量属性设置任务、设备批量服务调用任务、自定义任务)状态变更消息。

其中,${uid}为阿里云账号ID,可登录物联网平台控制台,单击账号头像,跳转至安全设置页面查看。

数据格式:

{
    "jobId": "4z819VQHk6VSLmm***ee200",
    "jobType": "CUSTOM_JOB",
    "status": "INITIALIZING",
    "messageCreateTime": 1510292739881
}

参数说明:

参数类型说明
jobIdString任务ID,任务的全局唯一标识符。
jobTypeString任务类型。
  • SET_PROPERTY:设备批量属性设置任务。
  • INVOKE_SERVICE:设备批量服务调用任务。
  • CUSTOM_JOB:自定义任务。
statusString任务状态,取值:
  • INITIALIZING:初始化。
  • WAITING:待调度。
  • IN_PROGRESS:执行中。
  • COMPLETED:已完成。
  • CANCELLING:取消中。
  • CANCELLED:已取消。
  • REMOVING:删除中。
messageCreateTimeLong消息产生时间戳,单位毫秒。

实例迁移任务的状态通知

Topic:/sys/uid/{uid}/distribution/{jobId}/lifecycle

通过该Topic获得实例迁移任务状态的变更消息。

其中,${uid}为阿里云账号ID,可登录物联网平台控制台,将鼠标指针移动到账号头像,查看账号ID

数据格式:

{
    "jobId": "4z819VQHk6VSLmmxxxxxxxxxxee200",
    "status": "GRAY_EXECUTING",
    "messageCreateTime": 1510292739881,
    "type":"INSTANCE_UPGRADE",
    "sourceInstanceId":"iotx-oxssharez200",
    "targetInstanceId":"iot-es5v4***",
    "successDevices":[
        {
            "productKey":"al12***",
            "deviceName":"deviceName1",
            "iotId":"4z81frf00107e***"
        }
    ]
}

参数说明:

参数类型说明
jobIdString任务ID,任务的全局唯一标识符。
statusString任务状态,取值:
  • GRAY_EXECUTING:灰度中。
  • GRAY_FINISHED:灰度完成。
  • ALL_EXECUTING:迁移中。
  • ALL_FINISHED:迁移完成。
  • ALL_PAUSE:迁移暂停。
  • ROLL_BACK_EXECUTING:回滚中。
  • ROLL_BACK_PAUSE:暂停回滚。
messageCreateTimeLong消息产生时间戳,单位毫秒。
typeString任务类型。固定取值为INSTANCE_UPGRADE
sourceInstanceIdString实例迁移的源公共实例ID。旧版公共实例ID为iotx-oxssharez200

实例的详细说明,请参见实例概述

targetInstanceIdString实例迁移的目标企业版实例ID。
successDevicesList成功迁移的设备信息:
  • 灰度迁移和全量迁移中,从公共实例成功迁移到目标企业版实例的设备信息。
  • 回滚迁移时,从企业版实例成功迁移回公共实例的设备信息。
productKeyString设备所属产品的唯一标识。
deviceNameString设备名称。
iotIdString设备在平台内的唯一标识。

数字孪生节点属性变更

Topic:/sys/uid/${uid}/digitaltwin/${dtInstanceId}/${nodeId}/property/update

通过该Topic获取数字孪生节点属性数据的变更信息。

其中,${uid}为阿里云账号ID,可登录物联网平台控制台,将鼠标指针移动到账号头像,查看账号ID

数据格式:

{
    "nodeId": "4z819VQHk6VS0107e***",
    "dtInstanceId": "al12345****",
    "gmtCreate": 1510799670074,
    "items": {
        "Power": {
            "value": "on",
            "time": 1510799670074
        },
        "Position": {
            "time": 1510292697470,
            "value": {
                "latitude": 39.9,
                "longitude": 116.38
            }
        }
    }
}

参数说明:

参数类型说明
nodeIdString数字孪生节点的ID。
dtInstanceIdString数字孪生体的ID。
gmtCreateLong数据流转消息产生时间。
itemsObject数字孪生节点下变更的属性数据。如以上示例中属性Power(电源)和Position(位置)的信息。

其中value为属性值,time为属性值变更时间。

{
    "Power": {
        "value": "on",
        "time": 1510799670074
    },
    "Position": {
        "time": 1510292697470,
        "value": {
            "latitude": 39.9,
            "longitude": 116.38
        }
    }
}