您可以配置數據流轉的解析規則,將處理過的數據轉發到云原生多模數據庫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方法,獲取設備上報的物模型屬性Temperature
和Humidity
的值,寫入溫、濕度的時序數據。
使用限制
僅新版云產品流轉功能支持將數據流轉到時序數據庫(Lindorm)中。
地域限制
物聯網平臺實例及所在地域支持將數據轉發到時序數據庫(Lindorm)。支持的地域詳細信息,請參見各地域功能說明。
Lindorm實例所在地域必須與當前物聯網平臺實例所在地域保持一致。
創建數據目的
- 登錄物聯網平臺控制臺。
在實例概覽頁簽的全部環境下,找到對應的實例,單擊實例卡片。
- 在左側導航欄,選擇 。
在云產品流轉頁面,單擊右上角體驗新版,進入新版功能頁面。
說明如果您已執行過此操作,再次進入云產品流轉頁面,會直接進入新版功能頁面。
單擊數據目的頁簽,然后單擊創建數據目的。
在創建數據目的對話框,輸入數據目的名稱,例如DataPurpose,按照以下參數說明,完成配置,然后單擊確定。
參數
描述
選擇操作
選擇存儲到時序數據庫(Lindorm)中。
授權
單擊授權,系統創建角色和授權策略,授權物聯網平臺將數據寫入Lindorm。詳細說明,請參見數據轉發到時序數據庫(Lindorm)服務關聯角色。
說明若已授權,忽略此操作。
地域
與您的物聯網平臺實例所在地域一致。
引擎類型
時序引擎或寬表引擎。默認為時序引擎。時序引擎和寬表引擎的對比,請參見引擎類型和什么是云原生多模數據庫Lindorm。
Lindorm實例
選擇數據轉發目的為您已創建的專有網絡(VPC)下的Lindorm實例。
數據庫
輸入Lindorm實例下接收數據的目標數據庫名稱。
表名
輸入目標數據庫下接收數據的時序數據表名稱。
賬號
輸入管理時序數據庫的賬號和密碼。
數據庫管理賬號和密碼說明,請參見用戶及權限管理。
密碼
配置并啟動解析器
創建解析器,例如DataParser。具體操作,請參見創建解析器。
在解析器詳情頁面,關聯數據源。
在配置向導的數據源下,單擊關聯數據源。
在彈出的對話框中,單擊數據源下拉列表,選擇已創建的數據源DataSource,單擊確定。
在解析器詳情頁面,關聯數據目的。
單擊配置向導的數據目的,然后單擊數據目的列表右上方的關聯數據目的。
在彈出的對話框中,單擊數據目的下拉列表,選擇已創建的數據目的DataPurpose,單擊確定。
在數據目的列表,查看并保存數據目的ID,例如為1000。
后續解析腳本中,需使用此處的數據目的ID。
在解析器詳情頁面,單擊解析器。
在腳本輸入框,輸入解析腳本。腳本編輯方法,請參見腳本示例。
函數參數說明,請參見函數列表。
//通過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 } };
單擊調試,根據頁面提示,選擇產品和設備,輸入Topic和Payload數據,驗證腳本可執行。
參數示例如下:
運行結果如下,表示腳本執行成功。
單擊發布。
回到云產品流轉頁面的解析器頁簽,單擊解析器DataParser對應的啟動按鈕,啟動解析器。
模擬設備上報物模型數據,查看流轉結果。具體操作,請參見設備模擬器。
設備上報數據流轉到Lindorm時序數據庫后,您可通過Lindorm TSDB SDK的查詢接口查看流轉的數據。