

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

# 設定資料保留流程
<a name="windows-nodered-data-retention-flow"></a>

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

流程由三個關鍵元件組成，共同確保正確擷取和存放您的資料：
+ **MQTT 訂閱用戶端** - 從代理程式接收資料，確保您擷取所有相關工業資料
+ **InfluxDB 轉譯器** - 將 AWS IoT SiteWise 承載轉換為 InfluxDB 格式，準備資料以實現高效的時間序列儲存
+ **InfluxDB 寫入器** - 處理本機儲存，確保本機應用程式的資料持久性和可用性

![Node-RED 資料保留流程](http://docs.aws.amazon.com/zh_tw/iot-sitewise/latest/userguide/images/gateway-open-source-nodered-data-retention.png)


## 設定 MQTT 訂閱用戶端
<a name="windows-nodered-mqtt-subscriber"></a>
+  AWS IoT SiteWise 匯入以下範例，在 Node-RED 中設定 MQTT 訂閱用戶端，以接收來自 中 MQTT EMQX 代理程式的資料。  
**Example ：節點中的 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 發佈者](windows-nodered-data-publish-flow.md#windows-nodered-mqtt-publisher-config)區段相同的 MQTT 連線參數，具有下列訂閱設定：
+ 主題 – `/Renton/WindFarm/Turbine/WindSpeed`
+ QoS – `1`

如需詳細資訊，請參閱 *Node-RED 文件*中的[連線至 MQTT 中介裝置](https://cookbook.nodered.org/mqtt/connect-to-broker)。

## 設定 InfluxDB 轉譯器
<a name="windows-nodered-influxdb-translator"></a>

InfluxDB 使用索引的[標籤](https://docs.influxdata.com/influxdb/v1/concepts/glossary/#tag)和值[的欄位](https://docs.influxdata.com/influxdb/v1/concepts/glossary/#field)來組織資料。此組織會最佳化時間序列資料的查詢效能和儲存效率。匯入包含 JavaScript 程式碼的範例函數節點，將 AWS IoT SiteWise 承載轉換為 InfluxDB 格式。轉譯器會將屬性分割成兩個群組：
+ 標籤 – 有效率索引的品質和名稱屬性
+ 欄位 – 時間戳記 （自 epoch 起以毫秒為單位） 和值

**Example ：轉換為 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](https://github.com/mblackstock/node-red-contrib-influxdb)。 GitHub 

## 設定 InfluxDB 寫入器
<a name="windows-nodered-influxdb-writer"></a>

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

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

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

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

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

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

   1. 輸入您的 InfluxDB 身分驗證字符。此安全字符會授權與資料庫的連線。您在[使用 InfluxDB 設定本機儲存](windows-influxdb-setup.md)程序期間產生權杖。

1. 指定儲存位置參數，以定義資料的存放位置和方式：

   1. 輸入您的 InfluxDB 組織名稱 – 組織是一組使用者的工作區，您的儲存貯體和儀表板屬於其中。如需詳細資訊，請參閱《》中的[管理組織](https://docs.influxdata.com/influxdb/v2/admin/organizations/)*InfluxData Documentation*。

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

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

**注意**  
在 InfluxDB 執行個體的左側邊欄中尋找您的組織名稱。組織、儲存貯體和測量概念是 InfluxDB 資料組織模型的基礎。如需詳細資訊，請參閱 [InfluxDB 文件](https://docs.influxdata.com/influxdb/v2/admin/organizations/)。

## 部署和驗證保留流程
<a name="windows-nodered-retention-deploy"></a>

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

1. 連接三個節點，如資料保留流程圖所示。這會建立從資料訂閱到本機儲存的完整管道。  
![Node-RED 資料保留流程](http://docs.aws.amazon.com/zh_tw/iot-sitewise/latest/userguide/images/gateway-open-source-nodered-data-retention.png)

1. 選擇**部署**以套用變更並啟用流程。這會啟動資料收集和儲存程序。

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

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

   如需詳細資訊，請參閱《》[中的在 Data Explorer 中查詢](https://docs.influxdata.com/influxdb/v2/query-data/execute-queries/data-explorer/)*InfluxData Documentation*。

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