使用规则引擎,您需要基于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 设备密钥,仅在action为create时包含
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 请求被禁止,由于欠费导致