設定資料保留流程 - AWS IoT SiteWise

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

設定資料保留流程

資料保留流程可用來維持邊緣的操作可見性。這在網路中斷期間或當您需要立即存取資料時非常有用。此流程會訂閱 MQTT 代理程式以接收裝置資料、將其轉換為 InfluxDB® 格式,並將其儲存在本機。透過實作此流程,您可以建立彈性的本機資料存放區,讓操作員無需雲端相依性即可存取,從而在邊緣進行即時監控和決策。

流程由三個關鍵元件組成,共同確保正確擷取和存放您的資料:

  • MQTT 訂閱用戶端 - 從代理程式接收資料,確保您擷取所有相關工業資料

  • InfluxDB 轉譯器 - 將 AWS IoT SiteWise 承載轉換為 InfluxDB 格式,準備資料以實現高效的時間序列儲存

  • InfluxDB 寫入器 - 處理本機儲存,確保本機應用程式的資料持久性和可用性

Node-RED 資料保留流程

設定 MQTT 訂閱用戶端

  • 匯入以下範例,在 Node-RED 中設定 MQTT 訂閱用戶端,以接收來自 AWS IoT SiteWise 中 MQTT EMQX 代理程式的資料。

    範例 :節點中的 MQTT
    [ { "id": "string", "type": "mqtt in", "z": "string", "name": "Subscribe to MQTT broker", "topic": "/Renton/WindFarm/Turbine/WindSpeed", "qos": "1", "datatype": "auto-detect", "broker": "string", "nl": false, "rap": true, "rh": 0, "inputs": 0, "x": 290, "y": 340, "wires": [ [ "string" ] ] }, { "id": "string", "type": "mqtt-broker", "name": "emqx", "broker": "127.0.0.1", "port": "1883", "clientid": "", "autoConnect": true, "usetls": false, "protocolVersion": "5", "keepalive": 15, "cleansession": true, "autoUnsubscribe": true, "birthTopic": "", "birthQos": "0", "birthPayload": "", "birthMsg": {}, "closeTopic": "", "closePayload": "", "closeMsg": {}, "willTopic": "", "willQos": "0", "willPayload": "", "willMsg": {}, "userProps": "", "sessionExpiry": "" } ]

此訂閱可確保為本機儲存擷取發佈至代理程式的所有相關資料,並提供工業操作的完整記錄。節點使用與 設定 MQTT 發佈者區段相同的 MQTT 連線參數,具有下列訂閱設定:

  • 主題 – /Renton/WindFarm/Turbine/WindSpeed

  • QoS – 1

如需詳細資訊,請參閱 Node-RED 文件中的連線至 MQTT 中介裝置。

設定 InfluxDB 轉譯器

InfluxDB 會使用索引的標籤和值的欄位來組織資料。此組織會最佳化時間序列資料的查詢效能和儲存效率。匯入包含 JavaScript 程式碼的範例函數節點,將 AWS IoT SiteWise 承載轉換為 InfluxDB 格式。轉譯器會將屬性分割成兩個群組:

  • 標籤 – 有效率索引的品質和名稱屬性

  • 欄位 – 時間戳記 (自 epoch 起以毫秒為單位) 和值

範例 :轉換為 InfluxDB 承載的函數節點
[ { "id": "string", "type": "function", "z": "string", "name": "Translate to InfluxDB payload", "func": "let data = msg.payload;\n\nlet timeInSeconds = data.propertyValues[0].timestamp.timeInSeconds;\nlet offsetInNanos = data.propertyValues[0].timestamp.offsetInNanos;\nlet timestampInMilliseconds = (timeInSeconds * 1000) + (offsetInNanos / 1000000);\n\nmsg.payload = [\n {\n \"timestamp(milliseconds_since_epoch)\": timestampInMilliseconds,\n \"value\": data.propertyValues[0].value.doubleValue\n },\n {\n \"name\": data.propertyAlias,\n \"quality\": data.propertyValues[0].quality\n }\n]\n\nreturn msg", "outputs": 1, "timeout": "", "noerr": 0, "initialize": "", "finalize": "", "libs": [], "x": 560, "y": 340, "wires": [ [ "string" ] ] } ]

如需其他組態選項,請參閱 Node-RED GitHub 儲存庫中的 node-red-contrib-influxdb。 GitHub

設定 InfluxDB 寫入器

InfluxDB 寫入器節點是資料保留流程中的最終元件,負責將工業資料儲存在本機 InfluxDB 資料庫中。此本機儲存對於在網路中斷期間維持操作可見性,並提供對時間關鍵型應用程式資料的立即存取至關重要。

  1. 透過管理調色盤選項安裝 node-red-contrib-influxdb 套件。此套件提供將 Node-RED 與 InfluxDB 連線所需的節點。

  2. 將 InfluxDB 輸出節點新增至流程。此節點將處理將資料實際寫入 InfluxDB 資料庫的過程。

  3. 設定伺服器屬性以建立與 InfluxDB 執行個體的安全連線:

    1. 將版本設定為 2.0 - 這會指定您要連線至 InfluxDB v2.x,這會使用與舊版不同的 API

    2. 將 URL 設定為 http://127.0.0.1:8086 - 這指向您的本機 InfluxDB 執行個體

    3. 輸入您的 InfluxDB 身分驗證字符。此安全字符會授權與資料庫的連線。您在使用 InfluxDB 設定本機儲存程序期間產生權杖。

  4. 指定儲存位置參數,以定義資料的存放位置和方式:

    1. 輸入您的 InfluxDB 組織名稱 – 組織是一組使用者的工作區,您的儲存貯體和儀表板屬於其中。如需詳細資訊,請參閱《》中的管理組織InfluxData Documentation

    2. 指定 InfluxDB 儲存貯體 (例如 WindFarmData) – 儲存貯體等同於傳統系統中的資料庫,可作為時間序列資料的容器

    3. 設定 InfluxDB 測量 (例如 TurbineData) – 測量類似於關聯式資料庫中的資料表,可組織相關資料點

注意

在 InfluxDB 執行個體的左側邊欄中尋找您的組織名稱。組織、儲存貯體和測量概念是 InfluxDB 資料組織模型的基礎。如需詳細資訊,請參閱 InfluxDB 文件

部署和驗證保留流程

設定資料保留流程的所有元件之後,您需要部署並驗證系統是否正常運作。此驗證可確保您的工業資料在本機正確存放,以便立即存取和分析。

  1. 連接三個節點,如資料保留流程圖所示。這會建立從資料訂閱到本機儲存的完整管道。

    Node-RED 資料保留流程
  2. 選擇部署以套用變更並啟用流程。這會啟動資料收集和儲存程序。

  3. 使用 InfluxDB Data Explorer 查詢和視覺化您的資料。此工具可讓您驗證資料是否已正確儲存,並建立時間序列資料的初始視覺化。

    在 Data Explorer 中,您應該能夠查看隨時間記錄的風速測量結果,確認從產生資料到本機儲存的整個管道都正常運作。

    如需詳細資訊,請參閱《》中的在 Data Explorer 中查詢InfluxData Documentation

部署資料發佈流程和資料保留流程後,您現在擁有將資料傳送至 AWS IoT SiteWise 雲端的完整系統,同時保留本機複本以立即存取和恢復能力。這種雙路徑方法可確保您獲得雲端型分析和儲存的優勢,同時保持邊緣的操作可見性。