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

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

前提条件

  • 已添加待转发的设备Topic数据源。例如:创建数据源DataSource,添加指定设备的物模型数据上报Topic。具体步骤,请参见添加待流转的数据源

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

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

背景信息

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

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

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

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

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

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

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

使用限制

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

  • 地域限制

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

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

    说明

    上海(cn-shanghai)不支持可用区B(cn-shanghai-b),支持可用区F(cn-shanghai-f)和可用区G(cn-shanghai-g)。

创建数据目的

  1. 登录物联网平台控制台

  2. 实例概览页签的全部环境下,找到对应的实例,单击实例卡片。

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

  4. 云产品流转页面,单击右上角体验新版,进入新版功能页面。

    说明

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

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

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

    参数

    描述

    选择操作

    选择存储到时序数据库(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时,但是设备上报的数据humidityint数据类型,需要使用如下代码转换数据类型,才能正常流转。

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

    参数示例如下:示例

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

    调试结果

  7. 单击发布

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

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

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