

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# データ発行フローを設定する
<a name="windows-nodered-data-publish-flow"></a>

データ発行フローでは、3 つのノードを使用して、産業データをクラウドに送信するパイプラインを作成します。このフローは、クラウドベースの分析、長期ストレージ、他の AWS サービスとの統合を可能にするために不可欠です。まず、シミュレートされたデバイスデータが SiteWise Edge MQTT ブローカーに送信されます。ゲートウェイはブローカーからデータを取得します。これにより、 AWS IoT SiteWise クラウドへの転送が可能になり、強力な分析と視覚化機能を活用できます。
+ **データ入力** - 産業機器またはシミュレーターからデバイスデータを受信します
+ **のデータトランスレーター AWS IoT SiteWise** - SiteWise Edge ゲートウェイとの互換性を確保するためにデータを AWS IoT SiteWise 形式に変換します
+ **MQTT パブリッシャー** - SiteWise Edge MQTT ブローカーにデータを発行し、ローカルコンシューマーとクラウドコンシューマーの両方が利用できるようにします。

![Node-RED データ発行フローを示す図。SiteWise Edge Gateway による集荷のために、シミュレートされたデバイスデータを SiteWise Edge MQTT ブローカーに送信し、その後 クラウドに送信します AWS IoT SiteWise 。](http://docs.aws.amazon.com/ja_jp/iot-sitewise/latest/userguide/images/gateway-open-source-nodered-publish-flow.png)


## データ入力ノードを設定する
<a name="windows-nodered-data-input-config"></a>

この例では、データ入力ノードは風速データを生成するシミュレートされた風力タービンデバイスを使用します。このノードは、シミュレートされたソース (この例のように) からか、本番環境の実際の産業用機器からかにかかわらず、産業用データのエントリポイントとして機能します。

データペイロードにはカスタム JSON 形式を使用して、ローカル処理ツールと AWS IoT SiteWise クラウドサービスの両方で効率的に機能する標準化された構造を提供します。この形式には、タイムスタンプや品質指標などの必須メタデータと実際の測定値が含まれているため、パイプライン全体で包括的なデータ管理と品質追跡が可能になります。挿入ノードをインポートして、タイムスタンプ、品質インジケータ、値を含むこの標準化された JSON 形式でシミュレートされたデータを受信します。

Node-RED inject ノードの詳細については、 *Node-REDドキュメント*の[「Inject](https://nodered.org/docs/user-guide/nodes#inject)」セクションを参照してください。

タービンシミュレーターは、この標準化された JSON 形式で毎秒風速データを生成します。

**Example : タービンデータペイロード**  

```
{
    name: string,         // Property name/identifier
    timestamp: number,    // Epoch time in nanoseconds
    quality: "GOOD" | "UNCERTAIN" | "BAD",
    value: number | string | boolean
}
```

この形式にはいくつかの利点があります。
+ `name` フィールドは特定のプロパティまたは測定値を識別し、同じデバイスから複数のデータポイントを追跡できます。
+ ナノ秒`timestamp`単位の により、正確な履歴分析のための正確な時間追跡が保証されます。
+ この`quality`インジケータは、信頼性に基づいてデータをフィルタリングして管理するのに役立ちます。
+ 柔軟な`value`フィールドは、さまざまなセンサー出力に対応するためにさまざまなデータ型をサポートします。

**Example : タービンシミュレーターのノードを挿入する**  

```
[
    {
        "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"
            ]
        ]
    }
]
```

## データ変換用にノードを設定する
<a name="windows-nodered-sitewiseise-translator-config"></a>

SiteWise Edge ゲートウェイには、 AWS IoT SiteWise クラウドとの互換性を確保するために、特定の形式のデータが必要です。トランスレーターノードは、入力データを必要な AWS IoT SiteWise ペイロード形式に変換する重要なコンポーネントです。この翻訳ステップにより、産業データをクラウド環境で適切に処理、保存、後で分析 AWS IoT SiteWise できます。

この段階でデータ形式を標準化することで、エッジデバイスとクラウドサービスの統合を有効にし、アセットモデリング、分析、視覚化機能を使用できます。次の構造を使用します。

**Example : SiteWise Edge データ解析のペイロード構造**  

```
{
  "propertyAlias": "string",  
  "propertyValues": [
    {
      "value": { 
          "booleanValue": boolean, 
          "doubleValue": number, 
          "integerValue": number,
          "stringValue": "string" 
     },
      "timestamp": {
          "timeInSeconds": number,
          "offsetInNanos": number
      },
      "quality": "GOOD" | "UNCERTAIN" | "BAD",
  }]
}
```

**注記**  
を MQTT トピック階層 (例: ) `propertyAlias`に一致させます`/Renton/WindFarm/Turbine/WindSpeed`。これにより、データが の正しいアセットプロパティに適切に関連付けられます AWS IoT SiteWise。詳細については、「」の「データストリームエイリアス」の概念を参照してください[AWS IoT SiteWise の概念](concept-overview.md)。

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"
               ]
           ]
       }
   ]
   ```

1. JavaScript コードが風速データを正しく変換していることを確認します。この関数は、いくつかの重要なタスクを実行します。
   + 入力からプロパティ名を抽出し、propertyAliasとして設定します
   + タイムスタンプをミリ秒から必要な秒およびナノ秒形式に変換します
   + データ信頼性追跡の品質インジケータを保持します
   + 値タイプを自動的に検出し、要件に従って AWS IoT SiteWise フォーマットする

1. ノードをフローに接続し、データ入力ノードと MQTT パブリッシャーの間でリンクします。

ビジネスニーズに固有の関数の作成に関するガイダンスについては、[「 ドキュメント」の「関数の記述](https://nodered.org/docs/user-guide/writing-functions)」を参照してください。 *Node-RED *

## MQTT パブリッシャーを設定する
<a name="windows-nodered-mqtt-publisher-config"></a>

翻訳後、データは SiteWise Edge MQTT ブローカーに発行する準備が整います。

SiteWise Edge MQTT ブローカーにデータを送信するには、以下の設定で MQTT パブリッシャーを設定します。

**MQTT Out ノードをインポートするには**

1. を使用して MQTT Out 設定ノードをインポートします`"type": "mqtt out"`。MQTT Out ノードを使用すると、ブローカーの設定を共有できます。

1. MQTT ブローカー接続とメッセージルーティングに関連する情報のキーと値のペアを入力します。

サンプル`mqtt out`ノードをインポートします。

**Example**  

```
[
    {
        "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 Out ノードは、次の情報を使用して MQTT 接続を作成します。
+ サーバー: `127.0.0.1`
+ ポート: `1883`
+ プロトコル: `MQTT V5`

次に、MQTT Out ノードは、次の情報を使用してメッセージルーティングを設定します。
+ トピック: `/Renton/WindFarm/Turbine/WindSpeed`
+ QoS: `1`

## ノードをデプロイして検証する
<a name="windows-verify-deployment"></a>

3 つのデータ発行フローノードを設定したら、次のステップに従ってフローをデプロイし、データが に正しく送信されていることを確認します。 AWS IoT SiteWise

**接続をデプロイして検証するには**

1. データ発行フローに示すように、3 つのノードを接続します。  
![](http://docs.aws.amazon.com/ja_jp/iot-sitewise/latest/userguide/images/gateway-open-source-nodered-publish-flow.png)

1. **デプロイ** を選択して、すべてのノード接続の変更を適用します。

1. [AWS IoT SiteWise コンソール](https://console.aws.amazon.com/iotsitewise/)に移動し、**データストリーム**を選択します。

1. ドロップダウンメニューで**エイリアスプレフィックス**が選択されていることを確認します。次に、`/Renton/WindFarm/Turbine/WindSpeed`エイリアスを検索します。

検索に正しいエイリアスが表示された場合は、フローをデプロイし、データ転送を検証しました。