设备上报事件

更新时间:

设备上报事件

实现设备上报事件的原理,请参见Alink协议中设备上报事件原理图

上报透传事件

设备上报透传属性或事件:

image4.png

Topic和数据格式(上行):

  • 透传/自定义

Topic

数据格式

请求Topic:/sys/${productKey}/${deviceName}/thing/model/up_raw

请求数据是设备上报的原始报文。

示例如下:

0xff0000007b00

响应Topic:/sys/${productKey}/${deviceName}/thing/model/up_raw_reply

云端返回数据格式如下:

成功返回示例

{
    "code": 200,
    "data": {},
    "id": "123",
    "message": "success",
    "version": "1.0"
}

失败返回示例

{
    "code": 6813,
    "data": {},
    "id": "123",
    "message": "topic illegal",
    "version": "1.0"
}

上报物模型事件

物模型模块

Topic

数据格式

默认模块

  • 请求Topic:/sys/${productKey}/${deviceName}/thing/event/${tsl.event.identifier}/post

  • 响应Topic:/sys/${productKey}/${deviceName}/thing/event/${tsl.event.identifier}/post_reply

以默认模块物模型为例,请求数据格式:

响应数据格式:

若请求失败,返回{}

数据格式说明:

参数

类型

说明

id

String

消息ID号。String类型的数字,取值范围0~4294967295,且每个消息ID在当前设备中具有唯一性。

version

String

协议版本号,目前协议版本号唯一取值为1.0。

sys

Object

扩展功能的参数,其下包含各功能字段。

说明

使用设备端SDK开发时,如果未设置扩展功能,则无此参数,相关功能保持默认配置。

ack

Integer

sys下的扩展功能字段,表示是否返回响应数据。

  • 1:云端返回响应数据。

  • 0:云端不返回响应数据。

重要

如果未配置该功能,则无此参数,云端默认返回响应数据。

method

String

请求方法。

  • 默认模块

取值为thing.event.${tsl.event.identifier}.post

  • 自定义模块

取值为thing.event.${tsl.event.identifier}.post

params

Object

上报事件的输出参数。

value

Object

事件的输出参数信息。如以上示例中的两个参数Power(电源)和WF(工作电流)的信息。

{
    "Power": "on",
    "WF": "2"
}

time

Long

事件上报的时间戳,类型为UTC毫秒级时间。

该参数为可选字段。根据您的业务场景决定消息中是否带时间戳。如果消息频繁,需根据时间戳判断消息顺序,建议消息中带有时间戳。

  • 若上传time,物联网平台的云端保存上传的时间作为事件上报时间。

  • 若不上传time,物联网平台的云端自动生成事件上报时间并保存。

数据格式说明:

参数

类型

说明

id

String

消息ID号,String类型的数字,取值范围0~4294967295,且每个消息ID在当前设备中具有唯一性。

code

Integer

结果状态码。

data

Object

请求成功时,返回的数据固定为空。

message

String

返回结果信息。请求成功时,返回success。

method

String

响应数据对应的请求方法,与请求参数中method相同。

version

String

协议版本号,与请求参数中version相同。

示例:假设产品中定义了一个alarm事件,它的TSL描述如下。参数说明,请参见什么是物模型

{
    "schema": "https://iot-tsl.oss-cn-shanghai.aliyuncs.com/schema.json",
    "link": "/sys/${productKey}/airCondition/thing/",
    "profile": {
        "productKey": "${productKey}",
        "deviceName": "airCondition"
    },
    "events": [
        {
            "identifier": "alarm",
            "name": "alarm",
            "desc": "风扇警报",
            "type": "alert",
            "required": true,
            "outputData": [
                {
                    "identifier": "errorCode",
                    "name": "错误码",
                    "dataType": {
                        "type": "text",
                        "specs": {
                            "length": "255"
                        }
                    }
                }
            ],
            "method": "thing.event.alarm.post"
        }
    ]
}

当设备上报事件时,请求数据格式:

{
    "id": "123",
    "version": "1.0",
    "params": {
        "value": {
            "errorCode": "error"
        },
        "time": 1524448722000
    },
    "method": "thing.event.alarm.post"
}