一、描述

事件上报适用设备状态变化通知、埋点事件记录等场景。当设备发生了预定义的事件时,设备会将事件信息上报给云端平台。主要有以下几个示例场景:

  • 实时监测和预测维护:通过物模型事件上报,设备可以实时监测自身的状态和性能指标。这使得设备能够及时检测到潜在的故障或异常情况,并提前采取措施进行维护。通过监测关键参数,设备可以预测性地进行维护,避免设备故障和停机时间的增加,从而提高设备的可靠性和性能。

  • 报警和告警通知:物模型事件可以用于报警、告警、错误信息通知的触发。当设备检测到特定的事件或条件时,例如安全传感器探测到入侵或火灾报警器探测到烟雾,设备可以生成相应的事件并将其上报给云端平台。云端平台可以根据这些事件触发警报通知,通知相关的用户、管理员或其他系统。

二、数据交互图

三、通讯协议

3.1 通讯方式

传输方式 MQTT
序列化方式 JSON
编码格式 UTF-8

3.2 Topic定义

Topic名称 描述
/${productId}/${deviceId}/thing/event/up 物模型事件上行消息,物模型服务订阅此Topic获取事件消息
/${productId}/${deviceId}/thing/event/up/reply 物模型事件上行消息回复,设备订阅该消息获取结果

3.3 method 枚举

method名称 描述
reported 上报事件触发
getFrequency 获取事件频率

四、场景示例

示例以门锁设备为例,事件为门锁的开关,定义事件名为switch, 输出属性名为 type ,值有 fingerprint、password等值。

4.1 设备上报事件触发

1. 上报物模型事件触发

设备事件触发,上报到物模型服务,使用Topic: /${productId}/${deviceId}/thing/event/up 上报,发送的JSON格式如下:

{
  "method":"reported",
  "messageId":"157889065984",
  "eventIdentifier":"switch""module":"default",
  "output":{
    "type":"fingerprint"
  },
  "time":1686540549041
}

字段说明:

字段名 类型 是否必须 说明
method String 表示设备请求物模型属性的操作类型 ,reported 表示上报事件触发
messageId String 消息ID,最长为64位字符,标识该消息的唯一ID,发送端生成进行定位消息使用
output Object 表示事件的输出信息
output.key String 表示事件的输出信息的属性Key
output.value Object 表示事件的输出信息的属性值
eventIdentifier String 表示事件的标识符
eventIdentifier String 表示事件所属模块
time Long 事件上报的时间戳,类型为UTC毫秒级时间。如不传则使用服务器接收上报时间戳

2. 校验事件信息后保存事件

物模型服务接收到事件上报消息后,会根据物模型的TSL文件进行校验事件的输出参数等,如校验通过,则进行保存,不通过则响应错误信息。

3. 返回上报物模型事件结果

物模型服务处理上报物模型消息后,发送结果到Topic:/${productId}/${deviceId}/thing/event/up/reply

1)若成功保存,发送到该Topic的JSON格式如下:

{
    "messageId":"157889065984",
    "method":"reported",
    "payload":{
        "code":0
    }
}

2)若保存失败,发送到该Topic的消息为:

{
    "messageId":"157889065984",
    "method":"reported",
    "payload":{
        "code": ${errorcode},
        "msg": "${errormessage}"
    }
}

字段说明:

字段名称 类型 是否必须 说明
messageId String 应用程序或设备上报消息时的消息ID,最长为64位字符,物模型服务下发时将原值发送
method String 表示物模型服务响应method,与请求参数的method相同
payload Object 表示物模型服务响应的内容
payload.code Int 表示物模型处理该请求的状态,为0表示正常,不为0为异常,异常错误码请看错误码枚举
payload.msg String 表示物模型服务处理该请求的错误消息

4. 查询设备事件上报记录

应用程序通过 获取设备事件 接口获取设备事件上报的记录。

5. 返回设备事件上报记录结果

物模型服务查询设备的事件上报记录返回到应用程序。

4.2 获取事件上报频率

1. 发送获取属性值消息

设备在获取物模型属性的最新上报频率时,可发送消息到Topic:/${productId}/${deviceId}/thing/property/up,发送的JSON格式如下:

{
  "method":"getFrequency",
  "messageId":"157889065989",
  "events": {
        "default":[
              "switch"
         ]
   }
}

字段说明:

字段名 类型 是否必须 说明
method String 表示设备或者应用程序请求物模型属性的操作类型 ,getFrequency 表示获取属性频率信息
messageId String 消息ID,最长为64位字符,标识该消息的唯一ID,发送端进行定位消息使用
events Object 事件对象
events.{module} List(string) 表示要获取的模块和事件标识符(Identifier)列表,如果事件标识符列表为空列表,则返回模块下所有事件频率信息

2. 下发获取属性频率信息

物模型服务在进行校验属性物模型之后,发送结果到Topic:/${productId}/${deviceId}/thing/property/up/reply中。

1)若成功获取,发送到该Topic的JSON格式如下:

{
    "method":"getFrequency",
    "messageId":"157889065989",
    "payload":{
        "code":0,
        "default":{
            "switch":5
        }
    }
}

2)若获取失败,发送到该Topic的消息为:

{
    "messageId":"157889065989",
    "method":"getFrequency",
    "payload":{
        "code": ${errorcode},
        "msg": "${errormessage}"
    }
}

字段说明:

字段名称 类型 是否必须 说明
messageId String 应用程序或设备上报消息时的消息ID,最长为64位字符,物模型服务下发时将原值发送
method String 表示物模型服务响应method,与请求参数的method相同
payload Object 表示物模型服务响应的内容
payload.code Int 表示物模型服务处理该请求的状态,为0表示正常,不为0为异常,异常错误码请看 错误码枚举
payload.msg String 表示物模型服务处理该请求的错误消息
payload.{module} String 传入的模块标识符
payload.{module}.{propertyIdentifier} Int 传入的事件标识符,如存在,则返回对应的上报频率,单位秒

五、错误码

errorCode errorMessage
910001 不正确的JSON格式。
910002 缺少method信息
910004 method是无效的方法。
910008 消息ID不存在
910009 消息ID长度不符合
910014 时间格式错误
910101 缺少eventIdentifier信息
910102 事件不符合物模型
910103 事件字段不存在
910104 缺少module信息
910104 缺少module信息
500 服务端处理异常。
 创建时间:2023-06-20 11:54
最后编辑:admin  更新时间:2024-10-18 16:29