View a markdown version of this page

設定資料發佈流程 - 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. 連接三個節點,如資料發佈流程中所示。

  2. 選擇部署以套用所有節點連線變更。

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

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

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