数据转发到云原生多模数据库Lindorm

您可以配置数据流转的解析规则,将处理过的数据转发到云原生多模数据库Lindorm中。本文以物模型数据上报Topic为例,介绍流转消息数据的完整流程。

前提条件

  • 已创建数据源DataSource,并添加物模型数据上报Topic。具体步骤,请参见添加待流转的数据源

  • 已通过云原生多模数据库Lindorm控制台创建Lindorm实例,相关配置请根据业务需求选择。Lindorm实例的商品类型仅支持Lindorm(包年包月)Lindorm(按量付费)

  • 已集成Lindorm时序引擎的Java Native SDK,完成创建时序数据库、数据表,以及创建管理数据库的账号和密码,以及支持多实例时序数据存储的配置。具体操作,请参见教程:通过Java Native SDK连接并使用Lindorm时序引擎

背景信息

转发的数据目的配置完成后,会自动完成以下配置,实现设备数据通过物联网平台的规则引擎转发到时序数据库(Lindorm)。

  • 物联网平台占用Lindorm实例所在虚拟交换机的2个IP地址;将虚拟交换机的IPv4网段配置到Lindorm实例的白名单中。

  • 在Lindorm实例所在的VPC网络下创建托管安全组,安全组名称默认以sg-nsm-开头。

本文示例中,写入时序数据库的数据如下:

  • timestamp:使用函数timestamp()获取设备上报数据的当前时间。

  • tags:使用函数deviceName()获取设备名称,写入标签{"device_id": deviceName(), "region": "cn-shanghai"}

  • fields:使用JSONPath方法,获取设备上报的物模型属性TemperatureHumidity的值,写入温、湿度的时序数据。

使用限制

  • 仅新版云产品流转功能支持将数据流转到时序数据库(Lindorm)中。

  • 地域限制

    • 物联网平台实例及所在地域支持将数据转发到时序数据库(Lindorm)。支持的地域详细信息,请参见各地域功能说明

    • Lindorm实例所在地域必须与当前物联网平台实例所在地域保持一致。

创建数据目的

  1. 登录物联网平台控制台
  2. 实例概览页签的全部环境下,找到对应的实例,单击实例卡片。

  3. 在左侧导航栏,选择消息转发 > 云产品流转
  4. 云产品流转页面,单击右上角体验新版,进入新版功能页面。

    说明

    如果您已执行过此操作,再次进入云产品流转页面,会直接进入新版功能页面。

  5. 单击数据目的页签,然后单击创建数据目的

  6. 创建数据目的对话框,输入数据目的名称,例如DataPurpose,按照以下参数说明,完成配置,然后单击确定

    参数

    描述

    选择操作

    选择存储到时序数据库(Lindorm)中

    授权

    单击授权,系统创建角色和授权策略,授权物联网平台将数据写入Lindorm。详细说明,请参见数据转发到时序数据库(Lindorm)服务关联角色

    说明

    若已授权,忽略此操作。

    地域

    与您的物联网平台实例所在地域一致。

    引擎类型

    时序引擎或宽表引擎。默认为时序引擎。时序引擎和宽表引擎的对比,请参见引擎类型什么是云原生多模数据库Lindorm

    Lindorm实例

    选择数据转发目的为您已创建的专有网络(VPC)下的Lindorm实例。

    数据库

    输入Lindorm实例下接收数据的目标数据库名称。

    表名

    输入目标数据库下接收数据的时序数据表名称。

    账号

    输入管理时序数据库的账号和密码。

    数据库管理账号和密码说明,请参见用户及权限管理

    密码

配置并启动解析器

  1. 创建解析器,例如DataParser。具体操作,请参见创建解析器

  2. 解析器详情页面,关联数据源。

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

    2. 在弹出的对话框中,单击数据源下拉列表,选择已创建的数据源DataSource,单击确定

  3. 解析器详情页面,关联数据目的。

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

    2. 在弹出的对话框中,单击数据目的下拉列表,选择已创建的数据目的DataPurpose,单击确定

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

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

  4. 解析器详情页面,单击解析器

  5. 在脚本输入框,输入解析脚本。脚本编辑方法,请参见脚本示例

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

    //通过payload函数,获取设备上报的消息内容,并按照JSON格式转换。
    var data = payload("json");
    //筛选出上报的温湿度值。
    var h = data.items.Humidity.value;
    var t = data.items.Temperature.value;
    
    var fields = {"temperature":t, "humidity":h};
    var tags = {"device_id": deviceName(), "region": "cn-shanghai"};
    var timestamp = timestamp();
    //流转物模型上报数据。
    writeLindorm(1000, timestamp, tags, fields);
    说明

    如果Lindorm数据库中表字段定义数据类型为double时,但是设备上报的数据humidity是int数据类型,需要使用如下代码转换数据类型,才能正常流转。

    varfields={        
               "temperature":t,        
               "humidity":{            
                  "type":"DOUBLE",            
                  "value":h        
               }    
    };
  6. 单击调试,根据页面提示,选择产品和设备,输入Topic和Payload数据,验证脚本可执行。

    参数示例如下:示例

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

    调试结果

  7. 单击发布

  8. 回到云产品流转页面的解析器页签,单击解析器DataParser对应的启动按钮,启动解析器。

  9. 模拟设备上报物模型数据,查看流转结果。具体操作,请参见设备模拟器

    设备上报数据流转到Lindorm时序数据库后,您可通过Lindorm TSDB SDK的查询接口查看流转的数据。