使用规则引擎,您需要基于Topic编写SQL处理数据。自定义Topic中数据格式由您自己定义,物联网平台不做处理。基础通信Topic、物模型通信Topic中的数据格式由物联网平台定义,此时您需要根据平台定义的数据格式处理数据。本文讲述了基础通信Topic、物模型通信Topic中的数据格式。

设备上下线状态

数据流转Topic:/as/mqtt/status/{productKey}/{deviceName}

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

数据格式:

{
    "status":"online|offline",
    "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":"123.123.123.***"
}

参数说明:

参数 类型 说明
status String 设备状态。
  • online:上线。
  • offline:离线。
productKey String 设备所属产品的唯一标识。
deviceName String 设备名称。
time String 发送通知的时间点。
utcTime String 发送通知的UTC时间点。
lastTime String 状态变更前最后一次通信的时间。
说明 为避免消息时序紊乱造成影响,建议您根据lastTime来维护最终设备状态。
utcLastTime String 状态变更前最后一次通信的UTC时间。
clientIp String 设备公网出口IP。

设备属性上报

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

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

数据格式:

{
    "iotId":"4z819VQHk6VSLmmBJfrf00107e****",
    "productKey":"al12345****",
    "deviceName":"deviceName1234",
    "gmtCreate":1510799670074,
    "deviceType":"Ammeter",
    "items":{
        "Power":{
            "value":"on",
            "time":1510799670074
        },
        "Position":{
            "time":1510292697470,
            "value":{
                "latitude":39.9,
                "longitude":116.38
            }
        }
    }
}

参数说明:

参数 类型 说明
iotId String 设备在平台内的唯一标识。
productKey String 设备所属产品的唯一标识。
deviceName String 设备名称。
deviceType String 设备类型。
items Object 设备数据。
Power String 属性名称。产品所具有的属性名称请参见产品的TSL描述。
Position String 属性名称。产品所具有的属性名称请参见产品的TSL描述。
value 根据TSL定义 属性值。
time Long 属性产生时间,如果设备没有上报数据,默认采用在云端生成的时间。
gmtCreate Long 数据流转消息产生时间。

设备事件上报

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

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

数据格式:

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

参数说明:

参数 类型 说明
iotId String 设备在平台内的唯一标识。
productKey String 设备所属产品的唯一标识。
deviceName String 设备名称。
type String 事件类型,事件类型参见产品的TSL描述。
value Object 事件的参数。
Power String 事件参数名称。
Position String 事件参数名称。
time Long 事件产生时间,如果设备没有上报数据,默认采用云端生成的时间。
gmtCreate Long 数据流转消息产生时间。

设备生命周期变更

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

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

数据格式:

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

参数说明:

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

设备拓扑关系变更

Topic:/sys/{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:/sys/{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:/sys/{productKey}/{deviceName}/thing/downlink/reply/message

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

数据格式:

{
    "gmtCreate":1510292739881,
    "iotId":"4z819VQHk6VSLmmBJfrf00107e****",
    "productKey":"al12355****",
    "deviceName":"deviceName1234",
    "requestId":1234,
    "code":200,
    "message":"success",
    "topic":"/sys/al12355****/deviceName1234/thing/service/property/set",
    "data":{

    }
}

参数说明:

参数 类型 说明
gmtCreate Long UTC时间戳。
iotId String 设备在平台内的唯一标识。
productKey String 设备所属产品的唯一标识。
deviceName String 设备名称。
requestId Long 阿里云产生和设备通信的信息ID。
code Integer 结果状态码,说明参见下表表 1
message String 结果状态码信息,说明参见下表表 1
data Object 设备返回的结果。Alink格式数据直接返回设备处理结果,透传格式数据则需要经过脚本转换。
表 1. 结果状态码
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:/sys/{productKey}/{deviceName}/thing/event/property/history/post

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

数据格式:

{
    "iotId":"4z819VQHk6VSLmmBJfrf00107e****",
    "productKey":"12345****",
    "deviceName":"deviceName1234",
    "gmtCreate":1510799670074,
    "deviceType":"Ammeter",
    "items":{
        "Power":{
            "value":"on",
            "time":1510799670074
        },
        "Position":{
            "time":1510292697470,
            "value":{
                "latitude":39.9,
                "longitude":116.38
            }
        }
    }
}

参数说明:

参数 类型 说明
iotId String 设备在平台内的唯一标识。
productKey String 设备所属产品的唯一标识。
deviceName String 设备名称。
gmtCreate Long 数据流转消息产生时间。
deviceType String 物模型类型,详情参见产品的TSL描述。
items Object 设备数据。
Power String 属性名称。产品所具有的属性名称请参见产品的TSL描述。
Position String 属性名称。产品所具有的属性名称请参见产品的TSL描述。
value 根据TSL定义 属性值。
time Long 属性产生时间,如果设备没有上报数据,默认采用云端生成的时间。

历史事件上报

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

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

数据格式:

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

参数说明:

参数 类型 说明
identifier String 事件的标识符。
name String 事件的名称。
type String 事件类型,事件类型参见产品的TSL描述。
iotId String 设备在平台内的唯一标识。
productKey String 设备所属产品的唯一标识。
deviceName String 设备名称。
gmtCreate Long 数据流转消息产生时间。
value Object 事件的参数。
Power String 事件参数名称。
Position String 事件参数名称。
time Long 事件产生时间,如果设备没有上报数据,默认采用云端生成的时间。

固件升级状态通知

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

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

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

数据格式:

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

参数说明:

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