通过使用规则引擎数据流转功能,将物联网平台中的设备数据转发到表格存储(Tablestore)中存储。
前提条件
重要 表格存储实例所在地域必须与物联网平台企业版实例所在地域一致。
背景信息
阿里云物联网平台是一个集成了设备管理、数据安全通信和消息订阅等能力的一体化平台。向下支持连接海量设备,采集设备数据上云;向上提供云端API,服务端可通过调用云端API将指令下发到设备端,实现远程控制。更多信息,请参见什么是物联网平台。
步骤一:创建数据源并添加物模型数据上报Topic
- 登录物联网平台控制台。
- 进入云产品流转页面。
- 在实例概览页面,找到对应的实例,单击实例进入实例详情页面。
- 在左侧导航栏,选择。
- 创建数据源。
- 单击数据源页签,然后单击创建数据源。
- 输入数据源名称和描述。
说明 数据源名称支持中文、英文字母、日文、数字、下划线(_)和短划线(-),长度为1~30个字符,一个中文及日文占2个字符。
- 单击确定。
根据页面提示,可直接进入数据源详情页面。
- 添加物模型数据上报Topic。
- 在数据源详情页面,单击添加Topic。
- 在添加Topic对话框,选择Topic为物模型数据上报,依次配置产品、设备、模块和Topic数据格式。
关于物模型数据上报Topic数据格式的更多信息,请参见
数据格式。
- 单击确定。
您可以在数据源详情页面,查看添加的物模型数据上报Topic信息。
步骤二:创建数据目的
通过创建数据目的,您可以指定将物联网平台数据流转到的其他云产品。
- 登录物联网平台控制台。
- 进入云产品流转页面。
- 在实例概览页面,找到对应的实例,单击实例进入实例详情页面。
- 在左侧导航栏,选择。
- 单击数据目的页签,然后单击创建数据目的。
- 在创建数据目的对话框,根据下表说明配置参数。
说明 如果未进行表格存储资源访问授权,则单击授权,根据系统提示完成云资源访问授权。默认授权角色名称为AliyunIOTAccessingOTSRole。
参数 | 说明 |
---|
数据目的名称 | 自定义名称。支持中文、英文字母、日文、数字、下划线(_)和短划线(-),长度为1~30个字符,一个中文及日文占2个字符。 |
数据目的描述 | 数据目的描述信息。 |
选择操作 | 选择存储到表格存储(Tablestore)。 |
地域 | 选择表格存储所在地域。 |
实例 | 选择表格存储实例。 您可以单击创建实例,跳转到表格存储控制台,创建表格存储实例,请参见表格存储文档。 |
存储类型 | 选择时序模型。 |
数据表 | 选择接收数据的表格存储时序表。 您可以单击创建数据表,跳转到表格存储控制台,在时序表列表页签,创建时序表。具体操作,请参见创建时序表。 |
角色 | 授权物联网平台将数据写入表格存储。 如您还未创建相关角色,单击创建RAM角色,跳转到RAM控制台,创建角色和授权策略,请参见创建RAM角色。 |
- 单击确定。
您可以在数据目的页签查看创建的数据目的信息。
步骤三:配置并启动解析器
解析器可以对设备上报的数据进行处理,需要关联数据源和数据目的使用,将处理后的数据流转到其他Topic或阿里云产品中。
- 登录物联网平台控制台。
- 进入云产品流转页面。
- 在实例概览页面,找到对应的实例,单击实例进入实例详情页面。
- 在左侧导航栏,选择。
- 创建解析器。
- 在解析器页签,单击创建解析器。
- 在创建解析器对话框,配置解析器名称和解析器描述内容。
- 单击确定。
规则创建成功后,系统将跳转到解析器详情页面。
- 关联数据源。
- 在配置向导的数据源下,单击关联数据源。
- 在关联数据源对话框,选择数据源,单击确定。
- 关联数据目的。
- 单击配置向导的数据目的,然后单击数据目的列表右上方的关联数据目的。
说明 如果需要配置异常数据目的,请单击异常数据目的列表右上方的关联数据目的进行操作。
- 在关联数据目的对话框,选择数据目的,单击确定。
- 在数据目的列表,查看并保存数据目的ID,例如1000。
后续解析脚本中,需使用此处的数据目的ID。
- 配置解析器脚本。
- 单击配置向导的解析器脚本,然后在脚本输入框中输入解析脚本。关于脚本编辑方法的更多信息,请参见脚本示例。
函数参数说明,请参见函数列表。本文示例中,写入时序表的数据如下:
- 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()
},
]);
- 单击调试,根据页面提示,选择产品和设备,输入Topic和Payload数据,验证脚本可执行。
参数示例如下:

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

- 单击发布。
- 启动解析器。
- 返回云产品流转页面的解析器页签,单击目标解析器操作列的启动。
- 在弹出的对话框,单击确认。
步骤四:结果验证
数据推送成功后,在表格存储接收数据的时序表中查看是否成功接收到指定数据。
- 登录表格存储控制台。
- 在页面上方,选择地域。
- 进入数据管理页签。
- 在概览页面,单击实例名称。
- 在实例详情页签,单击时序表列表。
- 在时序表列表页签,单击时序表名称后选择数据管理页签或在操作列单击数据管理。
- 在数据管理页签,查看接收到的数据。