添加数据映射

孪生体中孪生节点与物理设备之间是解耦关系,您可通过数据映射功能,将物理设备上报的原始数据映射到孪生体的业务模型中,更灵活地实现业务场景需求。本文介绍如何将温度传感器设备上报的数据,映射到园区下孪生节点的物模型属性上,实现园区温度统计。

前提条件

  • 已完成孪生节点配置,并获取孪生节点ID。具体操作,请参见配置园区孪生体

  • 已创建产品和设备。本文示例需创建产品温度传感器,添加设备Device1Device2Device3Device4。具体操作,请参见创建产品批量创建设备

操作步骤

  1. 在孪生空间详情页面的左侧导航栏,单击数据接入,然后单击添加数据映射

  2. 添加数据映射面板,配置参数,然后单击确定

    本文示例以设备自定义Topic上报数据为例,将设备Device1Device2Device3Device4上报的温度temperature数据,分别映射到孪生节点温度传感器1温度传感器2温度传感器3温度传感器4的属性温度temperature上。

    image

    参数

    配置

    Topic

    选择产品温度传感器下全部设备的自定义Topic/${productKey}/${deviceName}/user/update

    上报消息如下:

    {
        "temperature":32
    }

    脚本

    下载脚本文件transformScript.txt,将模板内容替换为以下代码,保存后上传,用来解析所有设备的上报数据。

    //获取设备上报的消息内容。
    var payload = payload("json");
    //定义Map类型数据,存储键值对数据。
    var data = {};
    //获取设备名称。
    var deviceName = topic(2);
    //获取设备上报的温度数据。
    var t = payload.temperature;
    //存储不同设备上报的数据。
    if (deviceName == "Device1") {
      data["temp1"] = t;
    }if (deviceName == "Device2") {
      data["temp2"] = t;
    }if (deviceName == "Device3") {
      data["temp3"] = t;
    }if (deviceName == "Device4") {
      data["temp4"] = t;
    }
    
    return data;

    输出

    下载输出文件destConfig.json,将模板内容替换为以下代码,保存后上传,实现解析后数据的映射。

    重要

    代码中的iotId,需替换为您实际场景中添加的孪生节点ID。

    [
      {
        //key值对应data数据中的字段。
        "key": "temp1",
        //iotId值对应孪生节点ID。
        "iotId": "hX***9r00",
        //孪生节点下的功能属性标识符,获取key对应字段的输出值,即节点“hX***9r00”下属性temperature值更新为data["temp1"]的值。
        "identifier": "temperature"
      },
      {
        "key": "temp2",
        "iotId": "bY***9r00",
        "identifier": "temperature"
      },{
        "key": "temp3",
        "iotId": "FH***9r00",
        "identifier": "temperature"
      },{
        "key": "temp4",
        "iotId": "ff***9r00",
        "identifier": "temperature"
      }  
    ]
  3. 在数据映射列表,查看已添加数据映射脚本的解析状态。

    状态列显示解析完成,表示数据映射脚本添加成功。

后续步骤

查看园区环境温度的统计