

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

# 在 中建立資產模型 AWS IoT SiteWise
<a name="create-asset-models"></a>

AWS IoT SiteWise 資產模型可推動工業資料的標準化。資產模型包含名稱、說明、資產屬性和資產階層定義。例如，您可以定義具有溫度、每分鐘旋轉次數 (RPM) 和功率屬性的風力渦輪機模型。然後，您可以使用淨功率輸出性質和風力發電機階層定義來定義風力發電場模型。

**注意**  
建議您從最低層級的節點開始建立操作模型。例如，在建立風力發電場模型之前，先建立風力發電機模型。資產階層定義包含現有資產模型的參考。利用此方法，您可以在建立模型時定義資產階層。
資產模型不能包含其他資產模型。如果您必須將可參考的模型定義為另一個模型中的子組件，則應改為建立 component--> 模型。如需詳細資訊，請參閱[建立元件模型](create-component-models.md)。

下列各節說明如何使用 AWS IoT SiteWise 主控台或 API 來建立資產模型。下列各節也會說明您可用來建立模型的不同類型資產屬性和資產階層。

**Topics**
+ [建立資產模型 （主控台）](#create-asset-model-console)
+ [建立資產模型 (AWS CLI)](#create-asset-model-cli)
+ [範例資產模型](#asset-model-examples)
+ [定義資產模型階層](define-asset-hierarchies.md)

## 建立資產模型 （主控台）
<a name="create-asset-model-console"></a>

您可以使用 AWS IoT SiteWise 主控台來建立資產模型。 AWS IoT SiteWise 主控台提供各種功能，例如公式自動完成，可協助您定義有效的資產模型。

**建立資產模型 (主控台)**

1. <a name="sitewise-open-console"></a>導覽至 [AWS IoT SiteWise 主控台](https://console.aws.amazon.com/iotsitewise/)。

1. <a name="sitewise-choose-models"></a>在導覽窗格中，選擇 **Models (模型)**。

1. 選擇**建立資產模型**。

1. 在 **Create model (建立模型)** 頁面上，執行下列動作：

   1. 輸入資產模型的 **Name (名稱)**，例如 **Wind Turbine** 或 **Wind Turbine Model**。此名稱在您於此區域中帳戶的所有模型間都必須是唯一的。

   1. （選用） 新增模型的**外部 ID**。這是使用者定義的 ID。如需詳細資訊，請參閱《AWS IoT SiteWise 使用者指南》**中的 [參考具有外部 IDs物件](object-ids.md#external-id-references)。

   1. (選擇性) 新增模型的 **Measurement definitions (衡量值定義)**。測量代表來自您設備的資料串流。如需詳細資訊，請參閱[從設備定義資料串流 （度量）](measurements.md)。

   1. (選擇性) 新增模型的 **Transform definitions (轉換定義)**。轉換是將資料從一個表單映射到另一個表單的公式。如需詳細資訊，請參閱[轉換資料 （轉換）](transforms.md)。

   1. (選擇性) 新增模型的 **Metric definitions (指標定義)**。指標是跨時間間隔彙總資料的公式。指標可以從相關聯的資產輸入資料，讓您可以計算代表操作或操作子集的值。如需詳細資訊，請參閱[從屬性和其他資產彙總資料 （指標）](metrics.md)。

   1. (選擇性) 新增模型的 **Hierarchy definitions (階層定義)**。階層是資產之間的關係。如需詳細資訊，請參閱[定義資產模型階層](define-asset-hierarchies.md)。

   1. (選擇性) 新增資產模型的標籤。如需詳細資訊，請參閱[標記您的 AWS IoT SiteWise 資源](tag-resources.md)。

   1. 選擇**建立模型**。

   當您建立資產模型時， AWS IoT SiteWise 主控台會導覽至新模型的頁面。在此頁面上，您可以看到模型的 **Status (狀態)**，最初為 **CREATING (建立中)**。此頁面會自動更新，因此您可以等候模型的狀態更新。
**注意**  
複雜模型的資產模型建立程序可能需要幾分鐘的時間。在資產模型狀態為 **ACTIVE** 之後，您可以使用資產模型來建立資產。如需詳細資訊，請參閱[資產和模型狀態](asset-and-model-states.md)。

1. （選用） 建立資產模型後，您可以為邊緣設定資產模型。如需 SiteWise Edge 的詳細資訊，請參閱 [在 Edge 上設定 AWS IoT SiteWise 邊緣功能](edge-data-collection-and-processing.md)。

   1. 在模型頁面上，選擇**設定邊緣**。
**注意**  
資料處理套件 (DPP) 功能不再提供給新客戶使用。現有客戶可以繼續正常使用該服務。如需詳細資訊，請參閱[資料處理套件可用性變更](https://docs.aws.amazon.com/iot-sitewise/latest/appguide/iotsitewise-dpp-availability-change.html)。

   1. 在模型組態頁面上，選擇模型的邊緣組態。這會控制 AWS IoT SiteWise 可以運算和存放與此資產模型相關聯屬性的位置。如需為邊緣設定模型的詳細資訊，請參閱 [在 SiteWise Edge 中設定 OPC UA 來源](configure-opcua-source.md)。

   1. 針對**自訂節點組態**，選擇您要 AWS IoT SiteWise 運算的位置，並儲存每個資產模型屬性。
**注意**  
必須針對相同的位置設定相關聯的轉換和指標。如需為邊緣設定模型的詳細資訊，請參閱 [在 SiteWise Edge 中設定 OPC UA 來源](configure-opcua-source.md)。

   1. 選擇**儲存**。在模型頁面上，您的 **Edge 組態**現在應該已**設定**。

## 建立資產模型 (AWS CLI)
<a name="create-asset-model-cli"></a>

您可以使用 AWS Command Line Interface (AWS CLI) 來建立資產模型。

使用 [CreateAssetModel](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_CreateAssetModel.html) 操作建立具有屬性和階層的資產模型。此操作預期會有具備下列結構的承載。

```
{
  "assetModelType": "ASSET_MODEL",
  "assetModelName": "String",
  "assetModelDescription": "String",
  "assetModelProperties": Array of AssetModelProperty,
  "assetModelHierarchies": Array of AssetModelHierarchyDefinition
}
```

**建立資產模型 (AWS CLI)**

1. 建立名為 `asset-model-payload.json` 的檔案，然後將下列 JSON 物件複製到檔案。

   ```
   {
     "assetModelType": "ASSET_MODEL",
     "assetModelName": "",
     "assetModelDescription": "",
     "assetModelProperties": [
   
     ],
     "assetModelHierarchies": [
   
     ],
     "assetModelCompositeModels": [
   
     ]
   }
   ```

1. 使用您偏好的 JSON 文字編輯器來編輯下列項目的 `asset-model-payload.json` 檔案：

   1. 輸入資產模型的名稱 (`assetModelName`)，例如 **Wind Turbine** 或 **Wind Turbine Model**。此名稱在帳戶中的所有資產模型和元件模型中必須是唯一的 AWS 區域。

   1. （選用） 輸入資產模型的外部 ID (`assetModelExternalId`)。這是使用者定義的 ID。如需詳細資訊，請參閱《AWS IoT SiteWise 使用者指南》**中的 [參考具有外部 IDs物件](object-ids.md#external-id-references)。

   1. (選擇性) 輸入資產模型的說明 (`assetModelDescription`)，或移除 `assetModelDescription` 鍵值組。

   1. (選擇性) 定義模型的資產屬性 (`assetModelProperties`)。如需詳細資訊，請參閱[定義資料屬性](asset-properties.md)。

   1. (選擇性) 定義模型的資產階層 (`assetModelHierarchies`)。如需詳細資訊，請參閱[定義資產模型階層](define-asset-hierarchies.md)。

   1. （選用） 定義模型的警示。警示會監控其他屬性，讓您可以識別設備或程序何時需要注意。每個警示定義都是複合模型 (`assetModelCompositeModels`)，可標準化警示使用的屬性集。如需詳細資訊，請參閱[在 中使用警示監控資料 AWS IoT SiteWise](industrial-alarms.md)及[在 中定義資產模型的警示 AWS IoT SiteWise](define-alarms.md)。

   1. (選擇性) 新增資產模型的標籤 (`tags`)。如需詳細資訊，請參閱[標記您的 AWS IoT SiteWise 資源](tag-resources.md)。

1. 執行以下命令，透過 JSON 文件中的定義建立資產模型。

   ```
   aws iotsitewise create-asset-model --cli-input-json file://asset-model-payload.json
   ```

   操作會傳回回應，其中包含建立資產時您參考的 `assetModelId`。回應還包含模型 (`assetModelStatus.state`) 的狀態，起初為 `CREATING`。在變更傳播之前，資產模型狀態會保持為 `CREATING`。
**注意**  
複雜模型的資產模型建立程序可能需要幾分鐘的時間。若要檢查資產模型的目前狀態，請指定 來使用 [DescribeAssetModel](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_DescribeAssetModel.html) 操作`assetModelId`。資產模型狀態變成 `ACTIVE` 後，您便能使用資產模型來建立資產。如需詳細資訊，請參閱[資產和模型狀態](asset-and-model-states.md)。

1. （選用） 為您的資產模型建立自訂複合模型。使用自訂複合模型，您可以在模型中將屬性分組，或透過參考元件模型來包含子組件。如需詳細資訊，請參閱[建立自訂複合模型 （元件）](create-custom-composite-models.md)。

## 範例資產模型
<a name="asset-model-examples"></a>

本節包含資產模型定義範例，可用來使用 AWS CLI 和 AWS IoT SiteWise SDKs建立資產模型。這些資產模型代表風力渦輪機和風力發電廠。風力渦輪機資產會擷取原始感應器資料，並計算功率和平均風速等值。風力發電廠資產會計算數值，例如風力發電廠中所有風力發電機的總功率。

**Topics**
+ [風力發電機資產模型](#example-wind-turbine)
+ [風力發電場資產模型](#example-wind-farm)

### 風力發電機資產模型
<a name="example-wind-turbine"></a>

下列資產模型可呈現風力發電場中的風力發電機。風力發電機會擷取感應器資料，以計算功率和平均風速等值。

**注意**  
此範例模型類似於 AWS IoT SiteWise 示範中的風力渦輪機模型。如需詳細資訊，請參閱[使用 AWS IoT SiteWise 示範](getting-started-demo.md)。

```
{
  "assetModelType": "ASSET_MODEL",
  "assetModelName": "Wind Turbine Asset Model",
  "assetModelDescription": "Represents a turbine in a wind farm.",
  "assetModelProperties": [
    {
      "name": "Location",
      "dataType": "STRING",
      "type": {
        "attribute": {
          "defaultValue": "Renton"
        }
      }
    },
    {
      "name": "Make",
      "dataType": "STRING",
      "type": {
        "attribute": {
          "defaultValue": "Amazon"
        }
      }
    },
    {
      "name": "Model",
      "dataType": "INTEGER",
      "type": {
        "attribute": {
          "defaultValue": "500"
        }
      }
    },
    {
      "name": "Torque (KiloNewton Meter)",
      "dataType": "DOUBLE",
      "unit": "kNm",
      "type": {
        "measurement": {}
      }
    },
    {
      "name": "Wind Direction",
      "dataType": "DOUBLE",
      "unit": "Degrees",
      "type": {
        "measurement": {}
      }
    },
    {
      "name": "RotationsPerMinute",
      "dataType": "DOUBLE",
      "unit": "RPM",
      "type": {
        "measurement": {}
      }
    },
    {
      "name": "Wind Speed",
      "dataType": "DOUBLE",
      "unit": "m/s",
      "type": {
        "measurement": {}
      }
    },
    {
      "name": "RotationsPerSecond",
      "dataType": "DOUBLE",
      "unit": "RPS",
      "type": {
        "transform": {
          "expression": "rpm / 60",
          "variables": [
            {
              "name": "rpm",
              "value": {
                "propertyId": "RotationsPerMinute"
              }
            }
          ]
        }
      }
    },
    {
      "name": "Overdrive State",
      "dataType": "DOUBLE",
      "type": {
        "transform": {
          "expression": "gte(torque, 3)",
          "variables": [
            {
              "name": "torque",
              "value": {
                "propertyId": "Torque (KiloNewton Meter)"
              }
            }
          ]
        }
      }
    },
    {
      "name": "Average Power",
      "dataType": "DOUBLE",
      "unit": "Watts",
      "type": {
        "metric": {
          "expression": "avg(torque) * avg(rps) * 2 * 3.14",
          "variables": [
            {
              "name": "torque",
              "value": {
                "propertyId": "Torque (Newton Meter)"
              }
            },
            {
              "name": "rps",
              "value": {
                "propertyId": "RotationsPerSecond"
              }
            }
          ],
          "window": {
            "tumbling": {
              "interval": "5m"
            }
          }
        }
      }
    },
    {
      "name": "Average Wind Speed",
      "dataType": "DOUBLE",
      "unit": "m/s",
      "type": {
        "metric": {
          "expression": "avg(windspeed)",
          "variables": [
            {
              "name": "windspeed",
              "value": {
                "propertyId": "Wind Speed"
              }
            }
          ],
          "window": {
            "tumbling": {
              "interval": "5m"
            }
          }
        }
      }
    },
    {
      "name": "Torque (Newton Meter)",
      "dataType": "DOUBLE",
      "unit": "Nm",
      "type": {
        "transform": {
          "expression": "knm * 1000",
          "variables": [
            {
              "name": "knm",
              "value": {
                "propertyId": "Torque (KiloNewton Meter)"
              }
            }
          ]
        }
      }
    },
    {
      "name": "Overdrive State Time",
      "dataType": "DOUBLE",
      "unit": "Seconds",
      "type": {
        "metric": {
          "expression": "statetime(overdrive_state)",
          "variables": [
            {
              "name": "overdrive_state",
              "value": {
                "propertyId": "Overdrive State"
              }
            }
          ],
          "window": {
            "tumbling": {
              "interval": "5m"
            }
          }
        }
      }
    }
  ],
  "assetModelHierarchies": []
}
```

### 風力發電場資產模型
<a name="example-wind-farm"></a>

下列資產模型可呈現包括多個風力發電機的風力發電場。此資產模型會定義風力渦輪機模型的[階層](define-asset-hierarchies.md)。這可讓風力發電廠從風力發電廠中所有風力發電機的資料計算值 （例如平均功率）。

**注意**  
此範例模型類似於 AWS IoT SiteWise 示範中的風力發電廠模型。如需詳細資訊，請參閱[使用 AWS IoT SiteWise 示範](getting-started-demo.md)。

此資產模型取決於 [風力發電機資產模型](#example-wind-turbine)。將 `propertyId` 和 `childAssetModelId` 值取代為來自現有風力發電機資產模型中的值。

```
{
  "assetModelName": "Wind Farm Asset Model",
  "assetModelDescription": "Represents a wind farm.",
  "assetModelProperties": [
    {
      "name": "Code",
      "dataType": "INTEGER",
      "type": {
        "attribute": {
          "defaultValue": "300"
        }
      }
    },
    {
      "name": "Location",
      "dataType": "STRING",
      "type": {
        "attribute": {
          "defaultValue": "Renton"
        }
      }
    },
    {
      "name": "Reliability Manager",
      "dataType": "STRING",
      "type": {
        "attribute": {
          "defaultValue": "Mary Major"
        }
      }
    },
    {
      "name": "Total Overdrive State Time",
      "dataType": "DOUBLE",
      "unit": "seconds",
      "type": {
        "metric": {
          "expression": "sum(overdrive_state_time)",
          "variables": [
            {
              "name": "overdrive_state_time",
              "value": {
                "propertyId": "ID of Overdrive State Time property in Wind Turbine Asset Model",
                "hierarchyId": "Turbine Asset Model"
              }
            }
          ],
          "window": {
            "tumbling": {
              "interval": "5m"
            }
          }
        }
      }
    },
    {
      "name": "Total Average Power",
      "dataType": "DOUBLE",
      "unit": "Watts",
      "type": {
        "metric": {
          "expression": "sum(turbine_avg_power)",
          "variables": [
            {
              "name": "turbine_avg_power",
              "value": {
                "propertyId": "ID of Average Power property in Wind Turbine Asset Model",
                "hierarchyId": "Turbine Asset Model"
              }
            }
          ],
          "window": {
            "tumbling": {
              "interval": "5m"
            }
          }
        }
      }
    }
  ],
  "assetModelHierarchies": [
    {
      "name": "Turbine Asset Model",
      "childAssetModelId": "ID of Wind Turbine Asset Model"
    }
  ]
}
```

# 定義資產模型階層
<a name="define-asset-hierarchies"></a>

您可以定義資產模型階層，在工業操作中的資產模型之間建立邏輯關聯。例如，您可以定義由陸上和海上風力發電廠組成的風力發電廠。陸上風力發電廠包含渦輪機和陸上位置。海上風力發電廠包含渦輪機和海上位置。

![\[AWS IoT SiteWise 資產模型之間的風力發電廠階層。\]](http://docs.aws.amazon.com/zh_tw/iot-sitewise/latest/userguide/images/asset-model-hierarchies.png)


當您透過階層將子資產模型與父資產模型建立關聯時，父資產模型的指標可以從子資產模型的指標輸入資料。您可以使用資產模型階層和指標來計算統計資料，以深入了解您的操作或操作的子集。如需詳細資訊，請參閱[從屬性和其他資產彙總資料 （指標）](metrics.md)。

每個階層都會定義父資產模型與子資產模型之間的關係。在父資產模型中，您可以為相同的子資產模型定義多個階層。例如，如果您的風力發電廠中有兩個不同類型的風力發電機，其中所有風力發電機都由相同的資產模型表示，您可以為每個類型定義階層。然後，您可以在風力發電廠模型中定義指標，以計算每種風力發電機類型的獨立和合併統計資料。

父資產模型可以與多個子資產模型建立關聯。例如，如果您有由兩個不同的資產模型所代表的陸上風力發電廠和海上風力發電廠，您可以將這些資產模型與相同的父風力發電廠資產模型建立關聯。

子資產模型也可以與多個父資產模型建立關聯。例如，如果您有兩個不同類型的風力發電廠，其中所有風力發電機都由相同的資產模型表示，您可以將風力發電機資產模型與不同的風力發電廠資產模型建立關聯。

**注意**  
當您定義資產模型階層時，子資產模型必須是`ACTIVE`或具有先前的`ACTIVE`版本。如需詳細資訊，請參閱[資產和模型狀態](asset-and-model-states.md)。

定義階層式資產模型並建立資產之後，您可以將資產關聯，以完成父子關係。如需詳細資訊，請參閱[在 中建立資產模型的資產 AWS IoT SiteWise](create-assets.md)及[關聯和取消關聯資產](add-associated-assets.md)。

**Topics**
+ [定義資產模型階層 （主控台）](#define-asset-hierarchies-console)
+ [定義資產階層 (AWS CLI)](#define-asset-hierarchies-cli)

## 定義資產模型階層 （主控台）
<a name="define-asset-hierarchies-console"></a>

當您在 AWS IoT SiteWise 主控台中定義資產模型的階層時，您可以指定下列參數：
+ **階層名稱** – 階層的名稱，例如 **Wind Turbines**。
+ **階層模型** – 子資產模型。
+ **階層外部 ID** （選用） – 這是使用者定義的 ID。如需詳細資訊，請參閱《AWS IoT SiteWise 使用者指南》**中的 [參考具有外部 IDs物件](object-ids.md#external-id-references)。

如需詳細資訊，請參閱[建立資產模型 （主控台）](create-asset-models.md#create-asset-model-console)。

## 定義資產階層 (AWS CLI)
<a name="define-asset-hierarchies-cli"></a>

當您使用 AWS IoT SiteWise API 定義資產模型的階層時，您可以指定下列參數：
+ `name` – 階層的名稱，例如 **Wind Turbines**。
+ `childAssetModelId` – 階層的子資產模型 ID 或外部 ID。您可以使用 [ListassetModel](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_ListAssetModels.html) 操作來尋找現有資產模型的 ID。

**Example 範例階層定義**  
下列範例示範資產模型階層，其代表風力發電廠與風力發電機的關係。此物件是 [AssetModelHierarchy](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_AssetModelHierarchy.html) 的範例。如需詳細資訊，請參閱[建立資產模型 (AWS CLI)](create-asset-models.md#create-asset-model-cli)。  

```
{
  ...
  "assetModelHierarchies": [
    {
      "name": "Wind Turbines",
      "childAssetModelId": "a1b2c3d4-5678-90ab-cdef-11111EXAMPLE"
    },
  ]
}
```