設定資料發佈流程 - AWS IoT SiteWise

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

設定資料發佈流程

資料發佈流程使用三個節點來建立管道,將工業資料傳送至雲端。此流程對於啟用雲端型分析、長期儲存以及與其他 AWS 服務的整合至關重要。首先,模擬的裝置資料會傳送至 SiteWise Edge MQTT 代理程式。閘道會從代理程式取得資料,允許傳輸到 AWS IoT SiteWise 雲端,您可以在其中利用強大的分析和視覺化功能。

  • 資料輸入 - 從工業設備或模擬器接收裝置資料

  • 適用於 的資料轉譯器 AWS IoT SiteWise - 將資料轉譯為 AWS IoT SiteWise 格式,以確保與 SiteWise Edge 閘道的相容性

  • MQTT 發佈者 - 將資料發佈至 SiteWise Edge MQTT 代理程式,使其可供本機和雲端消費者使用

顯示 Node-RED 資料發佈流程的圖表。它會將模擬裝置資料傳送至 SiteWise Edge MQTT 代理程式,以供 SiteWise Edge Gateway 擷取,然後傳送至 AWS IoT SiteWise 雲端。

設定資料輸入節點

在此範例中,資料輸入節點使用模擬風力渦輪機裝置來產生風速資料。此節點可做為工業資料的進入點,無論是來自模擬來源 (如範例所示),還是來自生產環境中的實際工業設備。

我們為資料承載使用自訂 JSON 格式,以提供標準化結構,可有效率地與本機處理工具和 AWS IoT SiteWise 雲端服務搭配使用。此格式包含基本中繼資料,例如時間戳記和品質指標,以及實際的測量值,可在整個管道中實現全面的資料管理和品質追蹤。匯入注入節點以接收此標準化 JSON 格式的模擬資料,其中包含時間戳記、品質指標和值。

如需 Node-RED 注入節點的詳細資訊,請參閱 Node-RED 文件中的注入一節。

渦輪模擬器會以此標準化 JSON 格式每秒產生風速資料:

範例 :渦輪資料承載
{ name: string, // Property name/identifier timestamp: number, // Epoch time in nanoseconds quality: "GOOD" | "UNCERTAIN" | "BAD", value: number | string | boolean }

此格式提供數種優點:

  • name 欄位可識別特定屬性或測量,可讓您從相同裝置追蹤多個資料點

  • 以奈秒timestamp為單位的 可確保精確的時間追蹤,以進行準確的歷史分析

  • quality 指標可協助您根據資料的可靠性篩選和管理資料

  • 彈性value欄位支援不同的資料類型,以容納各種感應器輸出

範例 :注入渦輪模擬器的節點
[ { "id": "string", "type": "inject", "z": "string", "name": "Turbine Simulator", "props": [ { "p": "payload.timestamp", "v": "", "vt": "date" }, { "p": "payload.quality", "v": "GOOD", "vt": "str" }, { "p": "payload.value", "v": "$random()", "vt": "jsonata" }, { "p": "payload.name", "v": "/Renton/WindFarm/Turbine/WindSpeed", "vt": "str" } ], "repeat": "1", "crontab": "", "once": false, "onceDelay": "", "topic": "", "x": 270, "y": 200, "wires": [ [ "string" ] ] } ]

設定節點進行資料轉譯

SiteWise Edge 閘道需要特定格式的資料,以確保與 AWS IoT SiteWise 雲端的相容性。轉譯器節點是將您的輸入資料轉換為所需 AWS IoT SiteWise 承載格式的重要元件。此轉譯步驟可確保在雲端環境中正確處理、儲存及稍後分析 AWS IoT SiteWise 工業資料。

透過在此階段標準化資料格式,您可以啟用邊緣裝置與雲端服務之間的整合,您可以在其中使用資產建模、分析和視覺化功能。使用此結構:

範例 :SiteWise Edge 資料剖析的承載結構
{ "propertyAlias": "string", "propertyValues": [ { "value": { "booleanValue": boolean, "doubleValue": number, "integerValue": number, "stringValue": "string" }, "timestamp": { "timeInSeconds": number, "offsetInNanos": number }, "quality": "GOOD" | "UNCERTAIN" | "BAD", }] }
注意

propertyAlias與您的 MQTT 主題階層相符 (例如 /Renton/WindFarm/Turbine/WindSpeed)。這可確保您的資料與 中的正確資產屬性正確關聯 AWS IoT SiteWise。如需詳細資訊,請參閱 中的「資料串流別名」概念AWS IoT SiteWise 概念

  1. 匯入用於 AWS IoT SiteWise 承載轉譯的範例函數節點。此函數會處理從標準化輸入格式到 AWS IoT SiteWise相容格式的轉換,確保適當的時間戳記格式、品質指標和值輸入。

    [ { "id": "string", "type": "function", "z": "string", "name": "Translate to SiteWise payload", "func": "let input = msg.payload;\nlet output = {};\n\noutput[\"propertyAlias\"] = input.name;\n\nlet propertyVal = {}\n\nlet timeInSeconds = Math.floor(input.timestamp / 1000);\nlet offsetInNanos = (input.timestamp % 1000) * 1000000;\n\npropertyVal[\"timestamp\"] = {\n \"timeInSeconds\": timeInSeconds,\n \"offsetInNanos\": offsetInNanos,\n};\n\npropertyVal[\"quality\"] = input.quality\n\nlet typeNameConverter = {\n \"number\": (x) => Number.isInteger(x) ? \"integerValue\" : \"doubleValue\",\n \"boolean\": (x) => \"booleanValue\",\n \"string\": (x) => \"stringValue\", \n}\nlet typeName = typeNameConverter[typeof input.value](input.value)\npropertyVal[\"value\"] = {}\npropertyVal[\"value\"][typeName] = input.value;\n\noutput[\"propertyValues\"] = [propertyVal]\n\nreturn {\n payload: JSON.stringify(output)\n};", "outputs": 1, "timeout": "", "noerr": 0, "initialize": "", "finalize": "", "libs": [], "x": 530, "y": 200, "wires": [ [ "string" ] ] } ]
  2. 確認 JavaScript 程式碼正確地轉譯風速資料。函數會執行數個重要的任務:

    • 從輸入擷取屬性名稱,並將其設定為 propertyAlias

    • 將時間戳記從毫秒轉換為所需的秒和奈秒格式

    • 保留資料可靠性追蹤的品質指標

    • 自動偵測值類型並根據需求格式化 AWS IoT SiteWise

  3. 將節點連接到您的流程,將其在資料輸入節點和 MQTT 發佈者之間連結。

如需撰寫專屬於您業務需求之函數的指引,請參閱 Node-RED 文件中的撰寫函數

設定 MQTT 發佈者

翻譯後,資料已準備好發佈至 SiteWise Edge MQTT 代理程式。

使用這些設定來設定 MQTT 發佈者,將資料傳送至 SiteWise Edge MQTT 代理程式:

匯入 MQTT 輸出節點
  1. 使用 匯入 MQTT 輸出組態節點"type": "mqtt out"。MQTT 輸出節點可讓您共用代理程式的組態。

  2. 輸入鍵值對,以取得 MQTT 代理程式連線和訊息路由的相關資訊。

匯入範例mqtt out節點。

[ { "id": "string", "type": "mqtt out", "z": "string", "name": "Publish to MQTT broker", "topic": "/Renton/WindFarm/Turbine/WindSpeed", "qos": "1", "retain": "", "respTopic": "", "contentType": "", "userProps": "", "correl": "", "expiry": "", "broker": "string", "x": 830, "y": 200, "wires": [] }, { "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 連線:

  • 伺服器: 127.0.0.1

  • 連接埠: 1883

  • 通訊協定: MQTT V5

然後,MQTT 輸出節點會使用下列資訊設定訊息路由:

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

  • QoS: 1

部署和驗證節點

設定三個資料發佈流程節點之後,請依照下列步驟部署流程,並確認資料已正確傳輸至 AWS IoT SiteWise

部署和驗證連線
  1. 連接三個節點,如資料發佈流程中所示。

    Data publish flow diagram showing input from turbine simulator to AWS IoT SiteWise to MQTT broker.
  2. 選擇部署以套用所有節點連線變更。

  3. 導覽至 AWS IoT SiteWise 主控台,然後選擇資料串流

  4. 確定已在下拉式功能表中選取別名字首。然後,搜尋/Renton/WindFarm/Turbine/WindSpeed別名。

如果您在搜尋中看到正確的別名,表示您已部署流程和已驗證的資料傳輸。