数据模板协议

最近更新时间:2019-11-06 12:48:57

简介

用户创建完产品后即可定义数据模板,设备开发阶段会基于数据模板生成 MCU SDK 代码,设备调试阶段的在线调试会接收设备的上报数据并可在控制台下发控制指令到设备进行调试。本文档介绍数据模板协议。

数据模板协议

概述

产品定义了数据模板以后,设备可以按照数据模板中的定义上报属性、事件,并可对设备下发远程控制指令,即对可写的设备属性进行修改。数据模板的管理详见 产品定义。数据模板协议包括了以下几部分。

  • 设备属性上报:设备端将定义的属性根据设备端的业务逻辑向云端上报。
  • 设备远程控制:从云端向设备端下发控制指令,即设置设备可写属性。
  • 获取设备最新上报信息:获取设备最新的上报数据。
  • 设备事件上报:设备可根据定义的数据模板中的事件,当事件被触发,则根据设备事件上报的协议上报告警、故障等事件信息。
  • 设备行为:云端可以通过 RPC 的方式来要求设备执行某个动作行为,适用于应用需要实时获取设备的执行结果的场景。

设备属性上报

  1. 当设备需要向云端上报数据时,开发平台为设备设定了默认的 Topic:
    • 上行请求 Topic: $thing/up/property/{ProductID}/{DeviceName}
    • 上行响应 Topic: $thing/down/property/{ProductID}/{DeviceName}
  2. 请求
    • 设备端请求报文示例:
      {
         "method":"report",
         "clientToken":"123",
         "timestamp":1212121221,
         "params":{
             "power_switch":1,
             "color":1,
             "brightness":32
         }
      }
    • 参数说明:
      参数 类型 说明
      method String report 表示设备属性上报。
      clientToken String 用于上下行消息配对标识
      timestamp Integer 属性上报的时间
      params JSON JSON 结构内为设备上报的属性值
  3. 响应
    • 云端返回设备端报文示例:
      {
         "method":"report_reply",
         "clientToken":"123",
         "code":0,
         "status":"some message wher error"
      }
    • 响应参数说明:
      参数 类型 说明
      method String report_reply 表示云端接收设备上报后的响应报文
      clientToken String 用于上下行消息配对标识
      code Integer 0表示云端成功收到设备上报的属性
      status String 当code非0的时候, 提示错误信息

设备远程控制

  1. 云端下发控制指令使用的 Topic:
    • 下发 Topic: $thing/down/property/{ProductID}/{DeviceName}
    • 响应 Topic: $thing/up/property/{ProductID}/{DeviceName}
  2. 请求
    • 远程控制请求消息格式:
      {
         "method": "control",
         "clientToken": "123",    
         "params": {
         "power_switch": 1,
         "color": 1,
         "brightness": 66    
         }
      }
    • 请求参数说明:
      参数 类型 说明
      method String control 表示云端向设备发起控制请求
      clientToken String 用于上下行消息配对标识
      params JSON JSON 结构内为设备上报的属性值
  3. 响应
    • 设备响应远程控制请求消息格式:
      {
         "method":"control_reply",
         "clientToken":"123",
         "code":0,
         "status":"some message wher error"
      }
    • 请求参数说明:
      参数 类型 说明
      control_reply String 表示设备向云端下发的控制指令的请求响应
      code Integer 0表示设备成功接收到云端下发的控制指令
      status String 当 code 非0的时候, 提示错误信息

获取设备最新上报信息

  1. 设备从云端接收最新消息使用的 Topic:
    • 请求 Topic: $thing/up/property/{ProductID}/{DeviceName}
    • 响应 Topic: $thing/down/property/{ProductID}/{DeviceName}
  2. 请求
    • 请求消息格式:
      {
         "method": "get_status",
         "clientToken": "123",
         "type" : "report", 
         "showmeta": 0
      }
    • 请求参数说明:
      参数 类型 说明
      get_status String get_status 表示获取设备最新上报的信息
      clientToken String 消息 ID,回复的消息将会返回该数据,用于请求响应消息的对比。
      type String 表示获取什么类型的信息。report 表示设备上报的信息
      showmeta Integer 标识回复消息是否带 metadata,缺省为0表示不返回 metadata
  3. 响应
    • 响应消息格式:
      {
        "method": "get_status_reply",
        "code": 0,
        "clientToken": "123",
        "type": "report",
        "data": {
            "report": {
                  "power_switch": 1,
                  "color": 1,
                  "brightness": 66    
            }
         }
      }
    • 响应参数
      参数 类型 说明
      get_status_reply String 表示获取设备最新上报信息的 reply 消息
      code Integer 0标识云端成功收到设备上报的属性
      clientToken String 消息 ID,回复的消息将会返回该数据,用于请求响应消息的对比。
      type String 表示获取什么类型的信息。report 表示设备上报的信息
      data JSON 返回具体设备上报的最新数据内容

设备事件上报

  1. 当设备需要向云端上报事件时,开发平台为设备设定了默认的 Topic:
    • 上行请求 Topic: $thing/up/event/<产品>/<设备>
    • 上行响应 Topic: $thing/down/event/<产品>/<设备>
  2. 请求
    • 设备端请求报文示例:
      {
         "method":"event_post",
         "clientToken":"123",
         "version":"1.0",
         "eventId":"PowerAlarm",
         "type":"fatal",
         "timestamp":1212121221,
         "params":{
         "Voltage":2.8,
         "Percent":20
         }
      }
    • 请求参数说明:
      参数 类型 说明
      method String event_post 表示事件上报。
      clientToken String 消息 ID,回复的消息将会返回该数据, 用于请求响应消息的对比。
      version String 协议版本,默认为1.0。
      eventId String 事件的 ID,在数据模板事件中定义。
      params String 事件的参数,在数据模板事件中定义。
      timestamp Integer 事件上报的时间,不填写该字段表示就使用事件上报本身的时间。
  3. 响应
    • 响应消息格式:
      {
         "method": "event_reply",
         "clientToken": "123",
         "version": "1.0",
         "code": 0,
         "status": "some message wher error",
         "data": {}
      }
    • 响应参数:
      参数 类型 说明
      method String event_reply 表示是云端返回设备端的响应。
      clientToken String 消息 ID,回复的消息将会返回该数据, 用于请求响应消息的对比。
      version String 协议版本,默认为1.0。
      code Integer 事件上报结果,0表示成功。
      status String 事件上报结果描述。
      data JSON 事件上报返回的内容。

设备行为调用

  1. 当应用通过云端向设备发起某个行为调用时,开发平台为设备行为的处理设定了默认的 Topic:

    • 应用调用设备行为 Topic: $thing/down/action/<产品>/<设备>
    • 设备响应行为执行结果 Topic: $thing/up/action/<产品>/<设备>
  2. 请求

    • 应用端发起设备行为调用报文示例:
      {
         "method": "action",
         "clientToken": "20a4ccfd-d308-11e9-86c6-5254008a4f10",
         "actionId": "openDoor",
         "timestamp": 1212121221,
         "params": {
         "userid": "323343"    
         }
      }
    • 请求参数说明:
      参数 类型 说明
      method String action 表示是调用设备的某个行为
      clientToken String 消息 ID,回复的消息将会返回该数据, 用于请求响应消息的对比。
      actionId String actionId 是数据模板中的行为标识符,由开发者自行根据设备的应用场景定义
      timestamp Integer 行为调用的当前时间
      params String 行为的调用参数,在数据模板的行为中定义。
  3. 响应

    • 响应消息格式:
      {
         "method": "action_reply",
         "clientToken": "20a4ccfd-d308-11e9-86c6-5254008a4f10",
         "code": 0,
         "status": "some message wher error",
         "response": {
         "Code":  0
         }
      }
    • 响应参数:
      参数 类型 说明
      method String action_reply 表示是设备端执行完指定的行为向云端回复的响应
      clientToken String 消息 ID,回复的消息将会返回该数据, 用于请求响应消息的对比。
      code Integer 行为执行结果,0表示成功。
      status String 行为执行失败后的错误信息描述。
      response JSON 设备行为中定义的返回参数,设备行为执行成功后,向云端返回执行结果