通过使用规则引擎数据流转功能,将物联网平台中的设备数据转发到表格存储(Tablestore)中存储。

前提条件

重要 表格存储实例所在地域必须与物联网平台企业版实例所在地域一致。

背景信息

阿里云物联网平台是一个集成了设备管理、数据安全通信和消息订阅等能力的一体化平台。向下支持连接海量设备,采集设备数据上云;向上提供云端API,服务端可通过调用云端API将指令下发到设备端,实现远程控制。更多信息,请参见什么是物联网平台

步骤一:创建数据源并添加物模型数据上报Topic

  1. 登录物联网平台控制台
  2. 进入云产品流转页面。
    1. 实例概览页面,找到对应的实例,单击实例进入实例详情页面。
    2. 在左侧导航栏,选择规则引擎 > 云产品流转
  3. 创建数据源。
    1. 单击数据源页签,然后单击创建数据源
    2. 输入数据源名称和描述。
      说明 数据源名称支持中文、英文字母、日文、数字、下划线(_)和短划线(-),长度为1~30个字符,一个中文及日文占2个字符
    3. 单击确定
      根据页面提示,可直接进入数据源详情页面。
  4. 添加物模型数据上报Topic。
    1. 数据源详情页面,单击添加Topic
    2. 添加Topic对话框,选择Topic物模型数据上报,依次配置产品、设备、模块和Topic数据格式。
      关于物模型数据上报Topic数据格式的更多信息,请参见数据格式
    3. 单击确定
      您可以在数据源详情页面,查看添加的物模型数据上报Topic信息。

步骤二:创建数据目的

通过创建数据目的,您可以指定将物联网平台数据流转到的其他云产品。

  1. 登录物联网平台控制台
  2. 进入云产品流转页面。
    1. 实例概览页面,找到对应的实例,单击实例进入实例详情页面。
    2. 在左侧导航栏,选择规则引擎 > 云产品流转
  3. 单击数据目的页签,然后单击创建数据目的
  4. 创建数据目的对话框,根据下表说明配置参数。
    说明 如果未进行表格存储资源访问授权,则单击授权,根据系统提示完成云资源访问授权。默认授权角色名称为AliyunIOTAccessingOTSRole。
    参数说明
    数据目的名称自定义名称。支持中文、英文字母、日文、数字、下划线(_)和短划线(-),长度为1~30个字符,一个中文及日文占2个字符
    数据目的描述数据目的描述信息。
    选择操作选择存储到表格存储(Tablestore)
    地域选择表格存储所在地域。
    实例选择表格存储实例。

    您可以单击创建实例,跳转到表格存储控制台,创建表格存储实例,请参见表格存储文档

    存储类型选择时序模型
    数据表选择接收数据的表格存储时序表。

    您可以单击创建数据表,跳转到表格存储控制台,在时序表列表页签,创建时序表。具体操作,请参见创建时序表

    角色授权物联网平台将数据写入表格存储。

    如您还未创建相关角色,单击创建RAM角色,跳转到RAM控制台,创建角色和授权策略,请参见创建RAM角色

  5. 单击确定
    您可以在数据目的页签查看创建的数据目的信息。

步骤三:配置并启动解析器

解析器可以对设备上报的数据进行处理,需要关联数据源和数据目的使用,将处理后的数据流转到其他Topic或阿里云产品中。

  1. 登录物联网平台控制台
  2. 进入云产品流转页面。
    1. 实例概览页面,找到对应的实例,单击实例进入实例详情页面。
    2. 在左侧导航栏,选择规则引擎 > 云产品流转
  3. 创建解析器。
    1. 解析器页签,单击创建解析器
    2. 创建解析器对话框,配置解析器名称解析器描述内容。
    3. 单击确定
      规则创建成功后,系统将跳转到解析器详情页面。
  4. 关联数据源。
    1. 在配置向导的数据源下,单击关联数据源
    2. 关联数据源对话框,选择数据源,单击确定
  5. 关联数据目的。
    1. 单击配置向导的数据目的,然后单击数据目的列表右上方的关联数据目的
      说明 如果需要配置异常数据目的,请单击异常数据目的列表右上方的关联数据目的进行操作。
    2. 关联数据目的对话框,选择数据目的,单击确定
    3. 在数据目的列表,查看并保存数据目的ID,例如1000
      后续解析脚本中,需使用此处的数据目的ID
  6. 配置解析器脚本。
    1. 单击配置向导的解析器脚本,然后在脚本输入框中输入解析脚本。关于脚本编辑方法的更多信息,请参见脚本示例
      函数参数说明,请参见函数列表
      本文示例中,写入时序表的数据如下:
      • fields:使用JSONPath方法,获取设备上报的物模型属性Temperature和Humidity的值,写入温度、湿度的时序数据。
      • timeInUs:使用函数timestamp()获取设备上报数据的当前时间戳(单位为毫秒)。timeInUs的时间单位为微秒,写入时间值为timestamp()*1000
      • tags:写入标签{"region": "cn-shanghai"}
      • metricName:写入时间线度量名称property
      • dataSource:使用函数deviceName()获取设备名称,写入数据源标识。
      //通过payload函数,获取设备上报的消息内容,并按照JSON格式转换。
      var data = payload("json");
      //获取上报的属性值。
      var h = data.items.Humidity.value;
      var t = data.items.Temperature.value;
      
      var datasource = deviceName();
      var fields = {"temperature":t, "humidity":h};
      var tags = {};
      tags.put("region", "cn-shanghai");
      var metricName = "property";
      var timeInUs = timestamp()*1000;
      
      // 在writeTableStoreTS方法中,按时间线,将温湿度值写入对应的列。
      writeTableStoreTs(1000, timeInUs, metricName, tags, fields, datasource);

      您也可设置温度、湿度分别为度量名称,写入温湿度数据,函数表达式如下:

      writeTableStoreTs(1000, [
          {
              "timeInUs": timestamp() * 1000,
              "metricName": "温度",
              "tags":tags,
              "fields":{"temperature": t},
              "dataSource": deviceName()
          },
          {
              "timeInUs": timestamp() * 1000,
              "metricName": "湿度",
              "tags":tags,
              "fields":{"humidity": h},
              "dataSource": deviceName()
          },
      ]);
    2. 单击调试,根据页面提示,选择产品和设备,输入Topic和Payload数据,验证脚本可执行。
      参数示例如下:调试数据
      运行结果如下,表示脚本执行成功。运行结果
    3. 单击发布
  7. 启动解析器。
    1. 返回云产品流转页面的解析器页签,单击目标解析器操作列的启动
    2. 在弹出的对话框,单击确认

步骤四:结果验证

数据推送成功后,在表格存储接收数据的时序表中查看是否成功接收到指定数据。

  1. 登录表格存储控制台
  2. 在页面上方,选择地域。
  3. 进入数据管理页签。
    1. 概览页面,单击实例名称。
    2. 实例详情页签,单击时序表列表
    3. 时序表列表页签,单击时序表名称后选择数据管理页签或在操作列单击数据管理
  4. 数据管理页签,查看接收到的数据。
    数据管理