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

设备上下线状态

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

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

数据格式:

{
    "status":"online|offline",
    "productKey":"12345565569",
    "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.123"
}

参数说明:

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

设备属性上报

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

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

数据格式:

{
    "iotId":"4z819VQHk6VSLmmBJfrf00107ee200",
    "productKey":"1234556554",
    "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获取设备上报的事件信息。

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

数据格式:

{
    "identifier":"BrokenInfo",
    "name":"损坏率上报",
    "type":"info",
    "iotId":"4z819VQHk6VSLmmBJfrf00107ee200",
    "productKey":"X5eCzh6fEH7",
    "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获得设备创建、删除、禁用、启用等消息。

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

数据格式:

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

参数说明:

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

设备拓扑关系变更

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

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

数据格式:

{
    "action" : "add|remove|enable|disable",
    "gwIotId": "4z819VQHk6VSLmmBJfrf00107ee200",
    "gwProductKey": "1234556554",
    "gwDeviceName": "deviceName1234",
    "devices": [ 
        {
          "iotId": "4z819VQHk6VSLmmxxxxxxxxxxee201",
          "productKey": "1234xxxx569",
          "deviceName": "deviceName1234"
       }
    ],

    "messageCreateTime": 1510292739881 
}

参数说明:

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

网关发现子设备

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

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

数据格式:

{
    "gwIotId":"4z819VQHk6VSLmmBJfrf00107ee200",
    "gwProductKey":"1234556554",
    "gwDeviceName":"deviceName1234",
    "devices":[
        {
            "iotId":"4z819VQHk6VSLmmxxxxxxxxxxee201",
            "productKey":"1234xxxx569",
            "deviceName":"deviceName1234"
        }
    ]
}

参数说明:

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

设备下行指令结果

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

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

数据格式:

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

    }
}

参数说明:

参数 类型 说明
gmtCreate Long UTC时间戳。
iotId String 设备在平台内的唯一标识。
productKey String 设备所属产品的唯一标识。
deviceName String 设备名称。
requestId Long 阿里云产生和设备通信的信息ID。
code Integer 调用的结果信息。
message String 结果信息说明。
data Object 设备返回的结果。Alink格式数据直接返回设备处理结果,透传格式数据则需要经过脚本转换。

返回信息:

参数 类型 说明
200 success 请求成功。
400 request error 内部服务错误, 处理时发生内部错误。
460 request parameter error 请求参数错误, 设备入参校验失败。
429 too many requests 请求过于频繁。
9200 device not actived 设备没有激活。
9201 device offline 设备不在线。
403 request forbidden 请求被禁止,由于欠费导致。