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