物联网平台的云产品流转和服务端订阅,是基于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/post OTA模块版本号变更通知
对应设备上报OTA模块版本的Topic:/ota/device/inform/${productKey}/${deviceName} 设备上报OTA模块版本
OTA升级批次状态通知 物联网平台通知OTA升级批次状态变化的Topic:/${productKey}/${packageId}/${jobId}/ota/job/status OTA升级批次状态通知
任务事件 包含:
  • 流转设备任务状态通知的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"
}

参数说明:

参数 类型 说明
status String 设备状态。
  • online:上线。
  • offline:离线。
iotId String 设备在平台内的唯一标识。
offlineReasonCode Integer 设备下线时,返回的错误码。详细说明,请参见设备行为错误码
productKey String 设备所属产品的唯一标识。
deviceName String 设备名称。
lastTime String 该参数为历史存量字段,已无实际意义。
utcLastTime String
Time String 设备上、下线的时间。

收到消息的顺序不是实际设备上下线时间排序。设备上下线顺序需按照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条消息展示了,设备先下线,再上线,最后下线的过程。
utcTime String 设备上、下线的UTC时间。
clientIp String 设备公网出口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"
        }
    }
}

参数说明:

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

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

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

设备事件上报

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
}

参数说明:

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

若事件的输出参数未通过检验,则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类型。数据未通过物模型数据校验时,返回的错误码信息,包含错误原因和具体的错误参数。
time Long 上报事件的时间,如果设备没有上报数据,默认采用物联网平台生成的时间。

设备属性批量上报

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

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

数据格式:

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

参数说明:

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

设备事件批量上报

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

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

数据格式:

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

参数说明:

参数 类型 说明
productKey String 设备所属产品的唯一标识。
deviceName String 设备名称。
instanceId String 设备所属实例的实例ID。
requestId String 设备上报消息的原始数据中的Id,String类型的数字,取值范围为0~4294967295,且每个消息ID在当前设备中具有唯一性。
payload Object 设备数据。
alarmEvent List 事件的标识符。
value Object 事件的参数。

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

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

设备生命周期变更

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

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

数据格式:

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

参数说明:

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

设备拓扑关系变更

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 
}

参数说明:

参数 类型 说明
action String
  • create:新增拓扑关系。
  • delete:移除拓扑关系。
  • enable:启用拓扑关系。
  • disable:禁用拓扑关系。
gwIotId String 网关设备在平台内的唯一标识。
gwProductKey String 网关产品的唯一标识。
gwDeviceName String 网关设备名称。
devices Object 变更的子设备列表。
iotId String 子设备在平台内的唯一标识。
productKey String 子设备产品的唯一标识。
deviceName String 子设备名称
messageCreateTime Integer 消息产生时间戳,单位毫秒。

网关发现子设备

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

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

数据格式:

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

参数说明:

参数 类型 说明
gwIotId String 网关设备在平台内的唯一标识。
gwProductKey String 网关产品的唯一标识。
gwDeviceName String 网关设备名称。
devices Object 发现的子设备列表。
iotId String 子设备在平台内的唯一标识。
productKey String 子设备所属产品的唯一标识。
deviceName String 子设备名称。

设备下行指令结果

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"
    }
}

参数说明:

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

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

code Integer 数据未通过物模型数据校验时,返回的错误码。详细说明,请参见设备端接收的错误码
message String 数据未通过物模型数据校验时,返回的错误码信息,包含错误原因和具体的错误参数。
表 2. 结果状态码
code message 说明
200 success 请求成功。
400 request error 内部服务错误,处理时发生内部错误。
460 request parameter error 请求参数错误,设备入参校验失败。
429 too many requests 请求过于频繁。
9200 device not actived 设备没有激活。
9201 device offline 设备不在线。
403 request 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"
        }
    }
}

参数说明:

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

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

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

历史事件上报

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
}

参数说明:

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

若事件的输出参数未通过检验,则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类型。数据未通过物模型数据校验时,返回的错误码信息,包含错误原因和具体的错误参数。
time Long 上报事件的时间,如果设备没有上报数据,默认采用物联网平台生成的时间。

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****"
}

参数说明:

参数 类型 说明
iotId String 设备ID,设备的唯一标识符。
productKey String 设备所属产品的唯一标识。
deviceName String 设备名称。
moduleName String OTA模块名称。
status String 升级状态。
  • SUCCEEDED:升级成功。
  • FAILED:升级失败。
  • CANCELED:升级已取消。
messageCreateTime Long 消息产生时间戳,单位毫秒。
srcVersion String 升级前的版本。
destVersion String 升级目标版本。
desc String 升级状态描述信息。
jobId String 升级批次ID,升级批次的唯一标识符。
taskId String 设备升级记录的唯一标识符。

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****"
}

参数说明:

参数 类型 说明
iotId String 设备ID,设备的唯一标识符。
productKey String 设备所属产品的唯一标识。
deviceName String 设备名称。
moduleName String OTA模块名称。
status String 升级状态。此处取固定值:IN_PROGRESS(升级中)。
step Integer 设备上报的升级进度。
messageCreateTime Long 消息产生时间戳,单位毫秒。
srcVersion String 升级前的版本。
destVersion String 升级目标版本。
desc String 升级状态描述信息。
jobId String 升级批次ID,升级批次的唯一标识符。
taskId String 设备升级记录的唯一标识符。

OTA模块版本号变更通知

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

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

数据格式:

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

参数说明:

参数 类型 说明
iotId String 设备ID,设备的唯一标识符。
productKey String 设备所属产品的唯一标识。
deviceName String 设备名称。
moduleName String 模块名称。
moduleVersion String 模块版本号。
messageCreateTime Long 消息产生时间戳,单位毫秒。

OTA升级批次状态通知

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

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

数据格式:

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

参数说明:

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

设备标签变更

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
}

参数说明:

参数 类型 说明
action String 标签变更的类型。可取值:
  • UPDATE:更新或新增标签。
  • DELETE:删除指定标签。
  • DELETEALL:清空所有标签。
iotId String 设备ID,设备的唯一标识符。
productKey String 设备所属产品的唯一标识。
deviceName String 设备名称。
deletedAttrKeyList List 删除标签key的列表。

仅当actionDELETE时,显示该参数。

value List 标签数据。
attrKey String 标签Key。
attrValue String 标签Value。
messageCreateTime Long 消息产生时间戳,单位毫秒。

设备任务的状态通知

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

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

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

数据格式:

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

参数说明:

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

实例迁移任务的状态通知

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***"
    }]
}

参数说明:

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

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

targetInstanceId String 实例迁移的目标企业版实例ID。
successDevices List 成功迁移的设备信息:
  • 灰度迁移和全量迁移中,从公共实例成功迁移到目标企业版实例的设备信息。
  • 回滚迁移时,从企业版实例成功迁移回公共实例的设备信息。
productKey String 设备所属产品的唯一标识。
deviceName String 设备名称。
iotId String 设备在平台内的唯一标识。

数字孪生节点属性变更

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
            }
        }
    }
}

参数说明:

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

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

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