本文以解析上、下行属性数据的脚本为例,介绍在数据格式为透传或自定义的产品下,如何编写并提交物模型数据解析脚本。

前提条件

创建产品时已定义数据格式为透传/自定义。具体操作,请参见创建产品

背景信息

数据格式为ICA标准数据格式,设备按照物联网平台定义的标准数据格式生成数据上报,标准Alink JSON数据格式说明,请参见设备属性、事件、服务

数据格式为透传/自定义,设备通信时,需要物联网平台调用您提交的数据解析脚本,将上行物模型数据解析为物联网平台定义的标准格式(Alink JSON),将下行物模型数据解析为设备的自定义数据格式。

说明 本示例中的属性为默认模块属性,若使用自定义模块,标识符(identifier)的格式为${模块标识符}:${属性标识符}。例如,model1:prop_int16

步骤一:编辑脚本

  1. 创建产品:在物联网平台控制台,创建产品,数据格式选择为透传/自定义
  2. 单个添加物模型:为该产品定义物模型属性。

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

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

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

    本示例通信中参数值长度定义:

    • 设备上报数据请求
      字段 字节数
      帧类型 1字节
      请求ID 4字节
      属性prop_int16 2字节
      属性prop_bool 1字节
      属性prop_float 4字节
    • 设备上报数据响应
      字段 字节数
      帧类型 1字节
      请求ID 4字节
      结果code 1字节
    • 设置属性请求
      字段 字节数
      帧类型 1字节
      请求ID 4字节
      属性prop_int16 2字节
      属性prop_bool 1字节
      属性prop_float 4字节
    • 属性设置响应
      字段 字节数
      帧类型 1字节
      请求ID 4字节
      结果code 1字节
  3. 编写脚本。
    1. 产品页面,单击产品对应的查看
    2. 产品详情页面,单击数据解析页签。
    3. 选择脚本语言,然后在编辑脚本下的输入框中输入脚本。
      支持的脚本语言 设备自定义数据格式转Alink JSON格式数据的函数(上行通信) Alink JSON格式数据转为设备自定义数据格式的函数(下行通信) 示例代码
      JavaScript(ECMAScript 5) rawDataToProtocol protocolToRawData JavaScript脚本示例
      Python 2.7 raw_data_to_protocol protocol_to_raw_data Python脚本示例
      PHP 7.2 rawDataToProtocol protocolToRawData PHP脚本示例
      说明 您还需编写自定义Topic的上行数据解析脚本,相关脚本编写说明,请参见提交数据解析脚本

      有关自定义Topic数据解析和物模型数据解析的完整示例脚本,请参见透传/自定义产品完整示例脚本(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"
    }

步骤三:提交脚本

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

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

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

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

您可使用物联网平台提供的Link SDK开发设备接入物联网平台。详细内容,请参见Link SDK

  • 测试上报属性数据。
    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. 在该设备的设备详情页面的物模型数据 > 运行状态页签下,查看设备是否上报当前属性数据。

可选:更新数据解析脚本

提交数据解析脚本成功后,您可在数据解析页签,修改或删除脚本代码后,重新提交。

警告 修改或删除脚本代码重新提交后,该产品下设备数据解析服务不可用、用户业务中断。请谨慎操作。

相关文档