物模型数据解析使用示例

本文以解析上、下行属性数据的脚本为例,介绍为数据格式为透传/自定义的产品下的物模型数据解析脚本编写方法。

步骤一:编辑脚本

  1. 生活物联网平台,创建产品。
    创建产品操作指导,请参见创建产品
    说明 数据格式选择为透传/自定义
  2. 为该产品定义物模型。
    自定义属性的操作请参见新增自定义功能

    本示例中定义了以下三个属性。

    标识符(identifier)数据类型取值范围读写类型
    prop_float浮点单精度(float)-100~100读写
    prop_int16整数型(int32)-100~100读写
    prop_bool布尔型(bool)0:开;1:关读写

    数据解析脚本将根据这里定义的物模型来编写,用于解析上下行物模型数据。

  3. 在设备通信协议中做如下定义。
    表 1. 设备上报数据请求
    字段字节数
    帧类型1字节
    请求ID4字节
    属性prop_int162字节
    属性prop_bool1字节
    属性prop_float4字节
    表 2. 设备上报数据响应
    字段字节数
    帧类型1字节
    请求ID4字节
    结果code1字节
    表 3. 设置属性请求
    字段字节数
    帧类型1字节
    请求ID4字节
    属性prop_int162字节
    属性prop_bool1字节
    属性prop_float4字节
    表 4. 属性设置响应
    字段字节数
    帧类型1字节
    请求ID4字节
    结果code1字节
  4. 编写脚本。
    1. 在产品设备调试页面下设备端开发数据解析步骤,单击编辑脚本进入数据解析的编辑脚本页面。
      编辑脚本
    2. 选择脚本语言,然后在编辑脚本下的输入框中输入脚本。
      说明 平台会自动生成数据解析脚本的草稿,可以自行定义脚本中的函数。

      目前支持三种脚本语言:JavaScript(ECMAScript 5)、Python 2.7和PHP 7.2。

      脚本中需定义调用以下两个函数,分别用于解析上、下行物模型数据。

      • 将Alink JSON格式数据转为设备自定义数据格式的函数:
        • JavaScript(ECMAScript 5):protocolToRawData
        • Python 2.7:protocol_to_raw_data
        • PHP 7.2:protocolToRawData
      • 将设备自定义数据格式转Alink JSON格式数据的函数:
        • JavaScript(ECMAScript 5):rawDataToProtocol
        • Python 2.7:raw_data_to_protocol
        • PHP 7.2:rawDataToProtocol

      完整的示例脚本Demo,请参见JavaScript脚本示例Python脚本示例PHP脚本示例

步骤二:在线测试脚本

重要 下文中传入和返回的十六进制字符串和JSON格式数据仅为示例,实际场景中,不可直接用于调试。

脚本编辑完成后,在模拟输入下,选择模拟类型,输入模拟数据在线测试脚本。

  • 模拟解析设备上报的属性数据。

    选择模拟类型为设备上报数据,输入以下模拟的设备上报数据,然后单击执行

    说明 以下传入参数模拟数据仅适用于JavaScript脚本,更多示例内容,请参见JavaScript脚本示例

    Python、PHP脚本的传入参数模拟数据,请参见Python脚本示例PHP脚本示例

    您可使用字符串转十六进制工具,将待传入参数JSON格式数据转为十六进制格式数据。例如转化后为00002233441232013fa00000,则输入如下数据:

    0x00002233441232013fa00000

    数据解析引擎会按照脚本规则,将透传数据转换为JSON格式数据。

    单击运行结果,查看解析结果。

    {
        "method": "thing.event.property.post", 
        "id": "2241348", 
        "params": {
            "prop_float": 1.25, 
            "prop_int16": 4658, 
            "prop_bool": 1
        }, 
        "version": "1.0"
    }
  • 模拟解析生活物联网平台下发的返回结果数据。

    选择模拟类型为设备接收数据,输入以下JSON格式数据,然后单击执行

    {
      "id": "12345",
      "version": "1.0",
      "code": 200,
      "method": "thing.event.property.post",
      "data": {}
    }

    数据解析引擎会将JSON格式数据转换为以下数据:

    0x0200003039c8
  • 模拟解析生活物联网平台下发的属性设置数据。

    选择模拟类型为设备接收数据,输入以下JSON格式数据,然后单击执行

    {
        "method": "thing.service.property.set", 
        "id": "12345", 
        "version": "1.0", 
        "params": {
            "prop_float": 123.452, 
            "prop_int16": 333, 
            "prop_bool": 1
        }
    }

    数据解析引擎会将JSON格式数据转换为以下数据:

    0x0100003039014d0142f6e76d
  • 模拟解析设备返回的属性设置结果数据。

    选择模拟类型为设备上报数据,输入以下数据,然后单击执行

    0x0300223344c8

    数据解析引擎会将透传数据转换为以下JSON格式数据:

    {
      "code": "200",
      "data": {},
      "id": "2241348",
      "version": "1.0"
    }

步骤三:提交脚本

重要 仅提交后的脚本才能被生活物联网平台调用;草稿状态的脚本不能被调用。

确认脚本可以正确解析数据后,单击提交,将该脚本提交到生活物联网平台系统,以供设备数据上下行时,生活物联网平台调用该脚本解析数据。

步骤四:使用真实设备调试

正式使用脚本之前,请使用真实设备与生活物联网平台进行上下行消息通信,以验证生活物联网平台能顺利调用脚本,解析上下行数据。

  • 测试上报属性数据。
    1. 使用设备端上报设备属性数据,例如0x00002233441232013fa00000
    2. 在生活物联网平台控制台产品的设备调试 > 测试设备
    3. 单击设备对应的查看,然后在设备详情运行状态页签下,查看是否有相应的属性数据。
  • 测试下发属性数据。
    1. 在生活物联网平台控制台产品的设备调试 > 测试设备 > 在线调试
    2. 在线调试页面选择要调试的设备,并选择调试真实设备,功能选择为要调试的属性identifier,如属性(prop_int16),方法选择为设置,输入以下数据,单击发送指令
      {
          "method": "thing.service.property.set", 
          "id": "12345", 
          "version": "1.0", 
          "params": {
              "prop_float": 123.452, 
              "prop_int16": 333, 
              "prop_bool": 1
          }
      }
    3. 查看设备端是否收到该属性设置指令。
    4. 在该设备的设备详情页面的物模型数据 > 运行状态页签下,查看设备是否上报当前属性数据。

相关文档