如果僅需將物聯網平臺數據轉發(fā)到數據庫保存,可以通過云產品流轉功能,使用腳本和函數將解析處理后的數據轉發(fā)到云數據庫RDS版(以下簡稱RDS)實例的數據庫中存儲。本文以物模型數據上報Topic為例,介紹流轉消息數據的完整流程。
工作原理
云產品流轉將設備的Topic消息轉發(fā)到RDS下數據庫的數據表中存儲,使用RDS的數據庫服務。詳細內容,請參見云數據庫RDS。
在上圖中:
數據源:支持的Topic類型消息,請參見數據格式(非云網關產品和設備)、自定義Topic(MQTT云網關)、消息轉發(fā)Topic(GB/T 32960云網關)、消息轉發(fā)Topic(JT/T 808云網關)、消息轉發(fā)Topic(SL 651云網關)。
數據目的:創(chuàng)建的專有網絡下MySQL或SQL Server版RDS實例中數據庫下的數據表,用于接收設備數據。
解析器腳本:配置通過數據流轉函數將Topic數據轉發(fā)到RDS數據表。
新增數據:通過數據流轉函數
writeRds(destinationId, data)
新增數據到RDS數據表。更新數據:通過數據流轉函數
updateRds(destinationId, data, condition, limit)
更新已寫入RDS數據表的數據。
data
僅支持Map類型數據,其中鍵(Key)值對應數據庫表列名,值(Value)對應列值。函數詳細說明,請參見函數列表。
使用限制
地域限制:
物聯網平臺實例及所在地域支持將數據轉發(fā)到云數據庫RDS。支持的地域詳細信息,請參見各地域功能說明。
RDS實例所在地域必須與當前物聯網平臺實例所在地域保持一致。例如:華東2(上海)的物聯網平臺實例數據只能轉發(fā)到華東2(上海)的RDS數據表中。
僅支持轉發(fā)到專有網絡(VPC)下的RDS實例。
支持RDS MySQL實例和RDS SQL Server實例。
支持普通數據庫和高權限數據庫的轉發(fā)。
僅支持轉發(fā)JSON格式數據。
新版和舊版云產品流轉功能均支持將數據流轉到云數據庫RDS。舊版云產品流轉使用示例,請參見數據轉發(fā)到云數據庫RDS(舊版)。
物聯網平臺實例下設備消息轉發(fā)的更多使用限制,請參見使用限制。
前提條件
背景信息
轉發(fā)的數據目的配置完成后,會自動完成以下配置,實現設備數據通過物聯網平臺的規(guī)則引擎轉發(fā)到云數據庫RDS。- 物聯網平臺占用RDS實例所在虛擬交換機的2個IP地址;將虛擬交換機的IPv4網段配置到RDS實例的白名單中。
- 在RDS實例所在的VPC網絡下創(chuàng)建托管安全組,安全組名稱默認以sg-nsm-開頭。
創(chuàng)建數據目的
登錄物聯網平臺控制臺。
在實例概覽頁簽的全部環(huán)境下,找到對應的實例,單擊實例卡片。
在左側導航欄,選擇 。
在云產品流轉頁面,單擊右上角體驗新版,進入新版功能頁面。
說明如果您已執(zhí)行過此操作,再次進入云產品流轉頁面,會直接進入新版功能頁面。
- 單擊數據目的頁簽,然后單擊創(chuàng)建數據目的。
在創(chuàng)建數據目的對話框,輸入數據目的名稱,例如DataPurpose,按照以下參數說明,完成配置,然后單擊確定。
參數
描述
選擇操作
選擇存儲到云數據庫(RDS)中。地域
固定為您的物聯網平臺實例所在地域。RDS實例
選擇RDS實例。數據庫
輸入數據庫名。說明 如果是高權限數據庫,需要您手動輸入數據庫名稱。賬號
輸入RDS實例的用戶賬號。此賬號應具有該數據庫的讀寫權限,否則規(guī)則引擎無法將數據寫入RDS。說明 規(guī)則引擎獲得賬號后,僅將規(guī)則匹配的數據寫進數據庫中,不會做其他操作。密碼
輸入登錄RDS實例的密碼。表名
輸入數據庫中已建立的數據表名。規(guī)則引擎將把數據寫入這張表上。角色
授權物聯網平臺將數據寫入RDS。如您還未創(chuàng)建相關角色,單擊創(chuàng)建RAM角色,跳轉到RAM控制臺,創(chuàng)建角色和授權策略,請參見創(chuàng)建RAM角色。
配置并啟動解析器
- 創(chuàng)建解析器,例如DataParser。具體操作,請參見步驟一:創(chuàng)建解析器。
- 在解析器詳情頁面,關聯數據源。
- 在配置向導的數據源下,單擊關聯數據源。
- 在彈出的對話框中,單擊數據源下拉列表,選擇已創(chuàng)建的數據源DataSource,單擊確定。
- 在解析器詳情頁面,關聯數據目的。
- 單擊配置向導的數據目的,然后單擊數據目的列表右上方的關聯數據目的。
- 在彈出的對話框中,單擊數據目的下拉列表,選擇已創(chuàng)建的數據目的DataPurpose,單擊確定。
- 在數據目的列表,查看并保存數據目的ID,例如為1000。后續(xù)解析腳本中,需使用此處的數據目的ID。
- 在解析器詳情頁面,單擊解析器。
在腳本輸入框,輸入解析腳本。
解析腳本類似JavaScript語言,編輯腳本的語法參考JavaScript語法,詳細的編輯方法,請參見腳本語法。
函數參數說明,請參見函數列表。
寫入數據:
// 通過payload函數,獲取設備上報的消息內容,并按照JSON格式轉換。 var data = payload("json"); // 篩選出上報的溫濕度值。 var h = data.items.Humidity.value; var t = data.items.Temperature.value; // RDS表結構為id[自增主鍵] deviceName、temperature、humidity、time,在writeRds方法中,可以按column:value的形式,將值寫入對應的列。 // 設置溫度值大于38時觸發(fā)規(guī)則。 if (t > 38) { writeRds(1000, {"deviceName":deviceName(), "temperature":t, "time":timestamp(), "humidity":h}); }
更新數據:
// 通過payload函數,獲取設備上報的消息內容,并按照JSON格式轉換。 var data = payload("json"); // 篩選出上報的溫濕度值。 var h = data.items.Humidity.value; var t = data.items.Temperature.value; // RDS表結構為id[自增主鍵] deviceName、temperature、humidity、time,在updateRds方法中,可以按column:value的形式,更新對應列的值。 // 指定設備名稱作為更新數據的條件。 var condition = "deviceName = '" + deviceName() +"'"; // 更新指定設備溫度和濕度的一行數據。如果滿足condition的有多行數據,默認從condition返回結果的第一行數據開始更新,limit為1,即更新第一行數據。 updateRds(1000, {"temperature":t, "time":timestamp(), "humidity":h}, condition, 1);
單擊調試,根據頁面提示,選擇產品和設備,輸入Topic和Payload數據,驗證腳本可執(zhí)行。
參數示例如下:
寫數據的運行結果如下,表示腳本執(zhí)行成功。
單擊發(fā)布。
- 回到云產品流轉頁面的解析器頁簽,單擊解析器DataParser對應的啟動按鈕,啟動解析器。
- 在RDS控制臺的數據安全性頁面,設置和查看白名單。配置完成后,規(guī)則引擎為了連接RDS,會在RDS的白名單中添加下列IP。若以下IP未出現,請手動添加。具體操作,請參見云數據庫RDS簡介。
- 華東2:
100.104.53.192/26,100.104.148.64/26,100.104.6.192/26,100.104.143.128/26,100.104.76.0/24,100.104.73.128/26,100.104.200.64/26,100.104.40.64/26,100.104.3.0/26,100.104.29.128/26,100.104.121.0/26,100.104.84.64/26
- 亞太東南1(新加坡):
100.104.106.0/24
- 美國(硅谷):
100.104.8.0/24
- 美國(弗吉尼亞):
100.104.133.64/26
- 德國(法蘭克福):
100.104.160.192/26
- 日本(東京):
100.104.160.192/26
- 華東2:
后續(xù)操作
您可在物聯網平臺控制臺對應實例下云端運行日志。
頁面的云端運行日志頁簽,查看設備到云消息及云產品流轉的運行日志。具體操作,請參見您可連接RDS實例并登錄RDS數據庫,查看寫入的數據。具體內容,請參見連接MySQL數據庫、連接 SQL Server數據庫。
相關文檔
設備接入物聯網平臺上報數據的操作指導,請參見設備接入引導。
您可在實例詳情頁面,查看消息轉發(fā)TPS可用資源,確保設備消息能正常轉發(fā)到RDS數據庫中。具體操作,請參見查看實例信息和運行數據。如果可用資源不足,可進行升配。具體內容,請參見升配。
使用RDS數據庫的常見問題,請參見數據庫常見問題。