本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
設定資料發佈流程
資料發佈流程使用三個節點來建立管道,將工業資料傳送至雲端。此流程對於啟用雲端型分析、長期儲存以及與其他 AWS 服務的整合至關重要。首先,模擬的裝置資料會傳送至 SiteWise Edge MQTT 代理程式。閘道會從代理程式取得資料,允許傳輸到 AWS IoT SiteWise 雲端,您可以在其中利用強大的分析和視覺化功能。
-
資料輸入 - 從工業設備或模擬器接收裝置資料
-
適用於 的資料轉譯器 AWS IoT SiteWise - 將資料轉譯為 AWS IoT SiteWise 格式,以確保與 SiteWise Edge 閘道的相容性
-
MQTT 發佈者 - 將資料發佈至 SiteWise Edge MQTT 代理程式,使其可供本機和雲端消費者使用

設定資料輸入節點
在此範例中,資料輸入節點使用模擬風力渦輪機裝置來產生風速資料。此節點可做為工業資料的進入點,無論是來自模擬來源 (如範例所示),還是來自生產環境中的實際工業設備。
我們為資料承載使用自訂 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 概念。
-
匯入用於 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" ] ] } ]
-
確認 JavaScript 程式碼正確地轉譯風速資料。函數會執行數個重要的任務:
-
從輸入擷取屬性名稱,並將其設定為 propertyAlias
-
將時間戳記從毫秒轉換為所需的秒和奈秒格式
-
保留資料可靠性追蹤的品質指標
-
自動偵測值類型並根據需求格式化 AWS IoT SiteWise
-
-
將節點連接到您的流程,將其在資料輸入節點和 MQTT 發佈者之間連結。
如需撰寫專屬於您業務需求之函數的指引,請參閱 Node-RED 文件中的撰寫函數
設定 MQTT 發佈者
翻譯後,資料已準備好發佈至 SiteWise Edge MQTT 代理程式。
使用這些設定來設定 MQTT 發佈者,將資料傳送至 SiteWise Edge MQTT 代理程式:
匯入 MQTT 輸出節點
-
使用 匯入 MQTT 輸出組態節點
"type": "mqtt out"
。MQTT 輸出節點可讓您共用代理程式的組態。 -
輸入鍵值對,以取得 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
部署和驗證連線
-
連接三個節點,如資料發佈流程中所示。
-
選擇部署以套用所有節點連線變更。
-
導覽至 AWS IoT SiteWise 主控台
,然後選擇資料串流。 -
確定已在下拉式功能表中選取別名字首。然後,搜尋
/Renton/WindFarm/Turbine/WindSpeed
別名。
如果您在搜尋中看到正確的別名,表示您已部署流程和已驗證的資料傳輸。