物联网平台数据接入

通过使用规则引擎数据流转功能,将物联网平台中的设备数据转发到表格存储(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)

    地域

    选择表格存储所在地域。

    实例

    选择表格存储实例。

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

    存储类型

    选择时序模型

    数据表

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

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

    角色

    授权物联网平台将数据写入表格存储。此处选择默认授权角色AliyunIOTAccessingOTSRole。

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

  5. 单击确定

    您可以在数据目的页签查看创建的数据目的信息。

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

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

  1. 登录物联网平台控制台
  2. 进入云产品流转页面。

    1. 实例概览页面,找到对应的实例,单击实例进入实例详情页面。

    2. 在左侧导航栏,选择消息转发 > 云产品流转

  3. 创建解析器。

    1. 解析器页签,单击创建解析器

    2. 创建解析器对话框,配置解析器名称解析器描述内容。

    3. 单击确定

      解析器创建成功后,系统将跳转到解析器详情页面。

  4. 关联数据源。

    1. 在配置向导的数据源步骤下,单击关联数据源

    2. 关联数据源对话框,选择您在步骤一:创建数据源并添加物模型数据上报Topic中创建的数据源,单击确定

  5. 关联数据目的。

    1. 单击配置向导的数据目的步骤,然后单击数据目的列表右上方的关联数据目的

      说明

      如果需要配置异常数据目的,请单击异常数据目的列表右上方的关联数据目的进行操作。

    2. 关联数据目的对话框,选择您在步骤二:创建数据目的中创建的数据目的,单击确定

    3. 在数据目的列表,查看并保存数据目的ID,例如1000

      后续解析脚本中,需使用此处的数据目的ID

  6. 配置解析器脚本。

    1. 单击配置向导的解析器脚本步骤,然后在脚本输入框中输入解析脚本。关于脚本编辑方法的更多信息,请参见脚本示例

      函数参数说明,请参见函数列表

      本文示例中,写入时序表的数据如下:
      • fields:使用JSONPath方法,获取设备上报的物模型属性TemperatureHumidity的值,写入温度、湿度的时序数据。
      • 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. 单击调试,根据页面提示,选择产品和设备,输入TopicPayload数据,验证脚本可执行。

      参数示例如下:调试数据

      运行结果如下,表示脚本执行成功。运行结果

    3. 单击发布

  7. 启动解析器。

    1. 返回云产品流转页面的解析器页签,单击目标解析器操作列的启动

    2. 在弹出的对话框,单击确认

步骤四:结果验证

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

  1. 登录表格存储控制台

  2. 在页面上方,选择地域。

  3. 进入数据管理页签。

    1. 概览页面,单击实例名称。

    2. 实例详情页签,单击时序表列表

    3. 时序表列表页签,单击时序表名称后选择数据管理页签或在操作列单击数据管理

  4. 数据管理页签,查看接收到的数据。