

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

# 在 中使用警示監控資料 AWS IoT SiteWise
<a name="industrial-alarms"></a>

您可以設定資料的警示，在設備或程序以次最佳化方式執行時提醒您的團隊。機器或程序的最佳效能，表示特定指標的值應該在高低限制範圍內。當這些指標超出其操作範圍時，則必須通知設備操作員以便修正問題。使用警示來快速識別問題並通知操作員，以最大限度地提高設備和程序的效能。

**Topics**
+ [警示類型](#alarm-types)
+ [警示狀態](#alarm-states)
+ [警示狀態屬性](#alarm-state-properties)
+ [在 中定義資產模型的警示 AWS IoT SiteWise](define-alarms.md)
+ [在 中設定資產警示 AWS IoT SiteWise](configure-alarms.md)
+ [在 中回應警示 AWS IoT SiteWise](respond-to-alarms.md)
+ [在 中擷取外部警示狀態 AWS IoT SiteWise](ingest-external-alarm-state.md)

## 警示類型
<a name="alarm-types"></a>

您可以定義在 AWS 雲端中偵測到的警示，以及使用外部程序偵測到的警示。 AWS IoT SiteWise 支援下列類型的警示：
+ **AWS IoT Events 警示**
**注意**  
結束支援通知： AWS 結束對 的支援 AWS IoT Events。如需詳細資訊，請參閱[AWS IoT Events 終止支援](https://docs.aws.amazon.com/iotevents/latest/developerguide/iotevents-end-of-support.html)。

  AWS IoT Events 警示是偵測 in. AWS IoT Events AWS IoT SiteWise sends 資產屬性值到警示模型的警示 AWS IoT Events。然後，將警示狀態 AWS IoT Events 傳送至 AWS IoT SiteWise。您可以設定選項，例如警示偵測到時，以及警示狀態變更時要通知誰。您也可以定義警示狀態變更時所發生[AWS IoT Events 的動作](https://docs.aws.amazon.com/iotevents/latest/developerguide/iotevents-supported-actions.html)。

  中的警示 AWS IoT Events 是警示模型的執行個體。警示模型會指定警示的閾值和嚴重性、警示狀態變更時應採取的動作等。當您設定警示模型的每個特徵時，您可以從警示監控的資產模型指定屬性屬性。當 AWS IoT Events 評估警示的特性時，所有以資產模型為基礎的資產都會使用 屬性的值。如需詳細資訊，請參閱《 *AWS IoT Events 開發人員指南*》中的[使用警示](https://docs.aws.amazon.com/iotevents/latest/developerguide/iotevents-alarms.html)。

  您可以在 AWS IoT Events 警示變更狀態時回應警示。例如，您可以在警示變成作用中時確認警示或將其休眠。您也可以啟用、停用和重設警示。

  SiteWise Monitor 使用者可以在 SiteWise Monitor 入口網站中視覺化、設定和回應 AWS IoT Events 警示。如需詳細資訊，請參閱《 *AWS IoT SiteWise Monitor 應用程式指南*》中的[使用警示進行監控](https://docs.aws.amazon.com/iot-sitewise/latest/appguide/monitor-alarms.html)。
**注意**  
AWS IoT Events 費用適用於評估這些警示，以及在 AWS IoT SiteWise 和 之間傳輸資料 AWS IoT Events。如需詳細資訊，請參閱 [AWS IoT Events 定價](https://aws.amazon.com/iot-events/pricing/)。
+ **外部警示**

  外部警示是您在 外部評估的警示 AWS IoT SiteWise。如果您有報告警示狀態的資料來源，請使用外部警示。外部警示包含您擷取警示狀態資料的測量屬性。

  當外部警示變更狀態時，您無法確認或休眠外部警示。

  SiteWise Monitor 使用者可以在 SiteWise Monitor 入口網站中查看外部警示的狀態，但無法設定或回應這些警示。

  AWS IoT SiteWise 不會評估外部警示的狀態。

## 警示狀態
<a name="alarm-states"></a>

工業警示包含其監控之設備或程序狀態的相關資訊，以及 （選用） 運算子回應警示狀態的相關資訊。

當您定義 AWS IoT Events 警示時，您可以指定是否啟用*確認流程*。預設會啟用確認流程。當您啟用此選項時，運算子可以確認警示，並記下警示的詳細資訊或他們為了解決該警示而採取的動作。如果運算子在處於非作用中狀態之前未確認作用中警示，則警示會遭到鎖定。閂鎖狀態表示警示變成作用中且未確認，因此操作員需要檢查設備或程序，並確認閂鎖警示。

警示具有下列狀態：
+ **正常** (`Normal`) – 警示已啟用但非作用中。工業程序或設備可如預期運作。
+ **作用中** (`Active`) – 警示處於作用中狀態。工業程序或設備超出其操作範圍，需要注意。
+ **已確認 **(`Acknowledged`) – 操作員已確認警示的狀態。

  此狀態僅適用於您啟用確認流程的警示。
+ **鎖定 **(`Latched`) – 警示傳回正常，但處於作用中狀態，且沒有操作員認可。工業程序或設備需要操作員的注意，才能將警示重設為正常。

  此狀態僅適用於您啟用確認流程的警示。
+ **Snoozed** (`SnoozeDisabled`) – 警示已停用，因為運算子將警示休眠。運算子定義警示休眠的持續時間。在該持續時間之後，警示會返回正常狀態。
+ **Disabled** (`Disabled`) – 警示已停用且無法偵測。

## 警示狀態屬性
<a name="alarm-state-properties"></a>

AWS IoT SiteWise 會將警示狀態資料儲存為序列化為字串的 JSON 物件。此物件包含警示的狀態和其他資訊，例如運算子回應動作和警示評估的規則。

您可以依警示狀態屬性的名稱和結構類型 來識別警示狀態屬性`AWS/ALARM_STATE`。如需詳細資訊，請參閱[在 中定義資產模型的警示 AWS IoT SiteWise](define-alarms.md)。

警示狀態資料物件包含下列資訊：

`stateName`  
警示的狀態。如需詳細資訊，請參閱[警示狀態](#alarm-states)。  
資料類型： `STRING`

`customerAction`  
（選用） 包含運算子對警示回應相關資訊的物件。操作員可以啟用、停用、確認和休眠警示。當他們這樣做時，警示狀態資料包含其回應，以及他們可以在回應時離開的備註。此物件包含下列資訊：    
`actionName`  
運算子用來回應警示的動作名稱。此值包含下列其中一個字串：  
+ `ENABLE`
+ `DISABLE`
+ `SNOOZE`
+ `ACKNOWLEDGE`
+ `RESET`
資料類型： `STRING`  
`enable`  
（選用） 當運算子啟用警示`customerAction`時，存在於 中的物件。當 運算子啟用警示時，警示狀態會變更為 `Normal`。此物件包含下列資訊：    
`note`  
（選用） 客戶啟用警示時離開的備註。  
資料類型： `STRING`  
長度上限：128 個字元  
`disable`  
（選用） 當運算子停用警示`customerAction`時，存在於 中的物件。當 運算子啟用警示時，警示狀態會變更為 `Disabled`。此物件包含下列資訊：    
`note`  
（選用） 客戶停用警示時離開的備註。  
資料類型： `STRING`  
長度上限：128 個字元  
`acknowledge`  
（選用） 當運算子確認警示`customerAction`時，存在於 中的物件。當 運算子啟用警示時，警示狀態會變更為 `Acknowledged`。此物件包含下列資訊：    
`note`  
（選用） 客戶確認警示時離開的備註。  
資料類型： `STRING`  
長度上限：128 個字元  
`snooze`  
（選用） 當運算子休眠警示`customerAction`時，存在於 中的物件。當 運算子啟用警示時，警示狀態會變更為 `SnoozeDisabled`。此物件包含下列資訊：    
`snoozeDuration`  
運算子延遲警示的持續時間，以秒為單位。在此持續時間之後，警示會變更為 `Normal` 狀態。  
資料類型： `INTEGER`  
`note`  
（選用） 客戶休眠警示時離開的注意事項。  
資料類型： `STRING`  
長度上限：128 個字元

`ruleEvaluation`  
（選用） 包含評估警示之規則相關資訊的物件。此物件包含下列資訊：    
`simpleRule`  
包含簡單規則相關資訊的物件，該規則會將屬性值與閾值與比較運算子進行比較。此物件包含下列資訊：    
`inputProperty`  
此警示評估的 屬性值。  
資料類型： `DOUBLE`  
`operator`  
此警示用來比較 屬性與閾值的比較運算子。此值包含下列其中一個字串：  
+ `<` – 小於
+ `<=` – 小於或等於
+ `==` – 等於
+ `!=` – 不等於
+ `>=` – 大於或等於
+ `>` – 大於
資料類型： `STRING`  
`threshold`  
此警示比較屬性值的閾值。  
資料類型： `DOUBLE`

# 在 中定義資產模型的警示 AWS IoT SiteWise
<a name="define-alarms"></a>

資產模型可推動工業資料和警示的標準化。您可以在資產模型上定義警示定義，以根據資產模型標準化所有資產的警示。

您可以使用*複合資產模型*來定義資產模型的警示。複合資產模型是資產模型，可標準化另一個資產模型上的特定屬性集。複合資產模型可確保資產模型上存在特定屬性。警示具有類型、狀態和 （選用） 來源屬性，因此警示複合模型會強制執行這些屬性存在。

每個複合資產模型都有定義該複合模型屬性的類型。警示複合模型會定義警示類型、警示狀態和 （選用） 警示來源的屬性。當您從具有複合模型的資產模型建立資產時，資產會包含複合模型的屬性，以及您在資產模型中指定的屬性。

複合模型中的每個屬性都必須具有識別其複合模型類型的名稱。複合模型屬性支援具有複雜資料類型的屬性。這些屬性具有指定屬性複雜資料類型的`STRUCT`資料類型和`dataTypeSpec`特性。複雜資料類型屬性包含序列化為字串的 JSON 資料。

警示複合模型具有下列屬性。每個屬性都必須有識別此類型複合模型的名稱。

**警示類型**  
警示的類型。請指定下列其中一項：  
+ `IOT_EVENTS` – AWS IoT Events alarm. AWS IoT SiteWise sends data 至 AWS IoT Events 以評估此警示的狀態。您必須指定警示來源屬性，才能定義此 AWS IoT Events 警示定義的警示模型。
**注意**  
結束支援通知： AWS 結束對 的支援 AWS IoT Events。如需詳細資訊，請參閱[AWS IoT Events 終止支援](https://docs.aws.amazon.com/iotevents/latest/developerguide/iotevents-end-of-support.html)。
+ `EXTERNAL` – 外部警示。您可以將警示的狀態擷取為測量。
屬性名稱： `AWS/ALARM_TYPE`  
屬性類型： [屬性](attributes.md)  
資料類型： `STRING`

**警示狀態**  
警示狀態的時間序列資料。這是序列化為字串的物件，其中包含警示的狀態和其他資訊。如需詳細資訊，請參閱[警示狀態屬性](industrial-alarms.md#alarm-state-properties)。  
屬性名稱： `AWS/ALARM_STATE`  
屬性類型：[測量](measurements.md)  
資料類型： `STRUCT`  
資料結構類型： `AWS/ALARM_STATE`

**警示來源**  
（選用） 評估警示狀態之資源的 Amazon Resource Name (ARN)。對於 AWS IoT Events 警示，這是警示模型的 ARN。  
屬性名稱： `AWS/ALARM_SOURCE`  
屬性類型： [屬性](attributes.md)  
資料類型： `STRING`

**Example 警示複合模型範例**  
下列資產模型代表具有警示以監控其溫度的鍋爐。 會將溫度資料 AWS IoT SiteWise 傳送至 AWS IoT Events 以偵測警示。  

```
{
  "assetModelName": "Boiler",
  "assetModelDescription": "A boiler that alarms when its temperature exceeds its limit.",
  "assetModelProperties": [
    {
      "name": "Temperature",
      "dataType": "DOUBLE",
      "unit": "Celsius",
      "type": {
        "measurement": {}
      }
    },
    {
      "name": "High Temperature",
      "dataType": "DOUBLE",
      "unit": "Celsius",
      "type": {
        "attribute": {
          "defaultValue": "105.0"
        }
      }
    }
  ],
  "assetModelCompositeModels": [
    {
      "name": "BoilerTemperatureHighAlarm",
      "type": "AWS/ALARM",
      "properties": [
        {
          "name": "AWS/ALARM_TYPE",
          "dataType": "STRING",
          "type": {
            "attribute": {
              "defaultValue": "IOT_EVENTS"
            }
          }
        },
        {
          "name": "AWS/ALARM_STATE",
          "dataType": "STRUCT",
          "dataTypeSpec": "AWS/ALARM_STATE",
          "type": {
            "measurement": {}
          }
        },
        {
          "name": "AWS/ALARM_SOURCE",
          "dataType": "STRING",
          "type": {
            "attribute": {}
          }
        }
      ]
    }
  ]
}
```

**Topics**
+ [中的警示通知需求 AWS IoT SiteWise](iot-events-alarm-notification-requirements.md)
+ [定義 的 AWS IoT Events 警示 AWS IoT SiteWise](define-iot-events-alarms.md)
+ [在 中定義外部警示 AWS IoT SiteWise](define-external-alarms.md)

# 中的警示通知需求 AWS IoT SiteWise
<a name="iot-events-alarm-notification-requirements"></a>

AWS IoT Events 會在您的帳戶中使用 AWS Lambda 函數 AWS 來傳送警示通知。您必須在與警示相同的 AWS 區域中建立此 Lambda 函數，才能啟用警示通知。此 Lambda 函數使用 [Amazon Simple Notification Service (Amazon SNS)](https://docs.aws.amazon.com/sns/latest/dg/welcome.html) 傳送文字通知和 [Amazon Simple Email Service (Amazon SES)](https://docs.aws.amazon.com/ses/latest/dg/Welcome.html) 傳送電子郵件通知。建立 AWS IoT Events 警示時，您可以設定警示用來傳送通知的通訊協定和設定。

**注意**  
結束支援通知： AWS 結束對 的支援 AWS IoT Events。如需詳細資訊，請參閱[AWS IoT Events 終止支援](https://docs.aws.amazon.com/iotevents/latest/developerguide/iotevents-end-of-support.html)。

AWS IoT Events 提供 AWS CloudFormation 堆疊範本，可讓您用來在帳戶中建立此 Lambda 函數。如需詳細資訊，請參閱《 *AWS IoT Events 開發人員指南*》中的[警示通知 Lambda 函數](https://docs.aws.amazon.com/iotevents/latest/developerguide/lambda-support.html)。

# 定義 的 AWS IoT Events 警示 AWS IoT SiteWise
<a name="define-iot-events-alarms"></a>

**注意**  
結束支援通知： AWS 結束對 的支援 AWS IoT Events。如需詳細資訊，請參閱[AWS IoT Events 終止支援](https://docs.aws.amazon.com/iotevents/latest/developerguide/iotevents-end-of-support.html)。

當您建立 AWS IoT Events 警示時， AWS IoT SiteWise 會將資產屬性值傳送至 AWS IoT Events ，以評估 alarm. AWS IoT Events alarm 定義的狀態，取決於您在 中定義的警示模型 AWS IoT Events。若要在資產模型上定義 AWS IoT Events 警示，您可以定義警示複合模型，將 AWS IoT Events 警示模型指定為其警示來源屬性。

AWS IoT Events 警示取決於警示閾值和警示通知設定等輸入。您可以在資產模型上將這些輸入定義為屬性。然後，您可以根據模型在每個資產上自訂這些輸入。 AWS IoT SiteWise 主控台可以為您建立這些屬性。如果您使用 AWS CLI 或 API 定義警示，您必須在資產模型上手動定義這些屬性。

您也可以定義警示偵測到時發生的其他動作，例如自訂警示通知動作。例如，您可以設定將推送通知傳送至 Amazon SNS 主題的動作。如需您可以定義的動作詳細資訊，請參閱《 *AWS IoT Events 開發人員指南*》中的[使用其他 AWS 服務](https://docs.aws.amazon.com/iotevents/latest/developerguide/iotevents-other-aws-services.html)。

當您更新或刪除資產模型時， AWS IoT SiteWise 可以檢查 中的 AWS IoT Events 警示模型是否正在監控與此資產模型相關聯的資產屬性。這可防止您刪除 AWS IoT Events 警示目前正在使用的資產屬性。若要在 中啟用此功能 AWS IoT SiteWise，您必須擁有 `iotevents:ListInputRoutings`許可。此許可允許 AWS IoT SiteWise 呼叫 支援的 [ListInputRoutings](https://docs.aws.amazon.com/iotevents/latest/apireference/API_ListInputRoutings.html) API 操作 AWS IoT Events。如需詳細資訊，請參閱[（選用） ListInputRoutings 許可](alarms-iam-permissions.md#alarms-listInputRoutings-permissions)。

**注意**  
警示通知功能不適用於中國 （北京） 區域。

**Topics**
+ [定義 AWS IoT Events 警示AWS IoT SiteWise （主控台）](#define-iot-events-alarm-console)
+ [定義 AWS IoT Events 警示AWS IoT Events （主控台）](#define-iot-events-alarm-console-ite-console)
+ [定義 AWS IoT Events 警示 (AWS CLI)](#define-iot-events-alarm-cli)

## 定義 AWS IoT Events 警示AWS IoT SiteWise （主控台）
<a name="define-iot-events-alarm-console"></a>

您可以使用 AWS IoT SiteWise 主控台在現有資產模型上定義 AWS IoT Events 警示。若要在新的資產模型上定義 AWS IoT Events 警示，請建立資產模型，然後完成這些步驟。如需詳細資訊，請參閱[在 中建立資產模型 AWS IoT SiteWise](create-asset-models.md)。

**重要**  
每個警示都需要一個屬性，指定要與警示比較的閾值。您必須先在資產模型上定義閾值屬性，才能定義警示。  
假設您想要定義警示，以偵測風力發電機何時超過最大風速等級 50 mph 的範例。定義警示之前，您必須定義預設值為 的屬性 (**最大風速**)`50`。

**在資產模型上定義 AWS IoT Events 警示**

1. 導覽至 [AWS IoT SiteWise 主控台](https://console.aws.amazon.com/iotsitewise/)。

1. 在導覽窗格中，選擇 **Models (模型)**。

1. 選擇要為其定義警示的資產模型。

1. 選擇**警示**索引標籤。

1. 選擇**新增警示**。

1. 在**警示類型選項**區段中，選擇**AWS IoT Events 警示**。

1. 在**警示詳細資訊**區段中，執行下列動作：

   1. 輸入警示的名稱。

   1. （選用） 輸入警示的描述。

1. 在**閾值定義**區段中，您可以定義警示何時偵測到警示以及警示的嚴重性。請執行下列操作：

   1. 選取警示偵測到的**屬性**。每次此屬性收到新值時， 都會將值 AWS IoT SiteWise 傳送至 AWS IoT Events ，以評估警示的狀態。

   1. 選取要用來比較 屬性與閾值的**運算子**。您可以從以下選項中選擇：
      + **< 小於**
      + **<= 小於或等於**
      + **== 等於**
      + **！= 不相等**
      + **>= 大於或等於**
      + **> 大於**

   1. 針對 **值**，選取要用作閾值的屬性屬性。 會將 屬性的值與此屬性的值 AWS IoT Events 進行比較。

   1. 輸入警示的**嚴重性**。使用您的團隊了解的數字來反映此警示的嚴重性。

1. （選用） 在**通知設定 - *選用***區段中，執行下列動作：

   1. 選擇**作用中**。
**注意**  
如果您選擇**非作用中**，您和您的團隊將不會收到任何警示通知。

   1. 針對**收件人**，選擇收件人。
**重要**  <a name="alarm-notifications-sso-requirement"></a>
您可以傳送警示通知給 AWS IAM Identity Center 使用者。若要使用此功能，您必須啟用 IAM Identity Center。您 AWS 一次只能在一個區域中啟用 IAM Identity Center。這表示您只能在啟用 IAM Identity Center 的區域中定義警示通知。如需詳細資訊，請參閱*《AWS IAM Identity Center 使用者指南》*中的[「入門」](https://docs.aws.amazon.com/singlesignon/latest/userguide/getting-started.html)。

   1. 針對**通訊協定**，從下列選項中選擇：
      + **電子郵件和文字** – 警示會以簡訊和電子郵件訊息通知 IAM Identity Center 使用者。
      + **電子郵件** – 警示會以電子郵件訊息通知 IAM Identity Center 使用者。
      + **文字** – 警示會以簡訊通知 IAM Identity Center 使用者。

   1. 針對**寄件者**，選擇寄件者。
**重要**  
您必須在 Amazon Simple Email Service (Amazon SES中驗證寄件者電子郵件地址。如需詳細資訊，請參閱《*Amazon Simple Email Service 開發人員指南*》中的[驗證電子郵件地址身分](https://docs.aws.amazon.com/ses/latest/dg/creating-identities.html#just-verify-email-proc)。

1. 在**預設資產狀態**區段中，您可以為從此資產模型建立的警示設定預設狀態。
**注意**  
您可以為稍後步驟中從此資產模型建立的資產啟用或停用此警示。

1. 在**進階設定**區段中，您可以設定許可、其他通知設定、警示狀態動作、SiteWise Monitor 中的警示模型，以及確認流程。
**注意**  
AWS IoT Events 警示需要下列服務角色：  
 AWS IoT Events 擔任將警示狀態值傳送至其中的角色 AWS IoT SiteWise。
 AWS IoT Events 擔任將資料傳送至 Lambda 的角色。只有在警示傳送通知時，您才需要此角色。

   在**許可**區段中，執行下列動作：

   1. 對於**AWS IoT Events 角色**，請使用現有角色或建立具有所需許可的角色。此角色需要`iotsitewise:BatchPutAssetPropertyValue`許可和允許 iotevents.amazonaws.com 擔任該角色的信任關係。

   1. 對於 **AWS IoT Events Lambda 角色**，請使用現有角色或建立具有所需許可的角色。此角色需要 `lambda:InvokeFunction`和 `sso-directory:DescribeUser`許可，以及允許 `iotevents.amazonaws.com`擔任該角色的信任關係。

1. （選用） 在**其他通知設定**區段中，執行下列動作：

   1. 對於**收件人屬性**，您可以定義屬性，其值會指定通知的收件人。您可以選擇 IAM Identity Center 使用者做為收件人。

      您可以在資產模型上建立屬性或使用現有的屬性。
      + 如果您選擇**建立新的收件人屬性**，請指定**收件人屬性名稱**和**收件人預設值 - 屬性為**選用****。
      + 如果您選擇**使用現有的收件人屬性**，請在**收件人屬性名稱中選擇屬性**。警示會使用您選擇的屬性的預設值。

      您可以覆寫從此資產模型建立的每個資產的預設值。

   1. 對於**自訂訊息屬性**，您可以定義 屬性，其值指定除了預設狀態變更訊息之外要傳送的自訂訊息。例如，您可以指定訊息，以協助您的團隊了解如何處理此警示。

      您可以選擇在資產模型上建立屬性或使用現有的屬性。
      + 如果您選擇**建立新的自訂訊息屬性**，請指定**自訂訊息屬性名稱**和**自訂訊息預設值 - 屬性為*選用***。
      + 如果您選擇**使用現有的自訂訊息屬性**，請在**自訂訊息屬性名稱中選擇屬性**。警示會使用您選擇的屬性的預設值。

      您可以覆寫從此資產模型建立的每個資產的預設值。

   1. 針對**管理您的 Lambda 函數**，請執行下列其中一項操作：
      + 若要 AWS IoT SiteWise 建立新的 Lambda 函數，請選擇**從 AWS 受管範本建立新的 Lambda**。
      + 若要使用現有的 Lambda 函數，請選擇**使用現有的 Lambda**，然後選擇函數的名稱。

      如需詳細資訊，請參閱《 *AWS IoT Events 開發人員指南*》中的[管理警示通知](https://docs.aws.amazon.com/iotevents/latest/developerguide/lambda-support.html)。

1. （選用） 在**設定狀態動作**區段中，執行下列動作：

   1. 選擇**編輯動作**。

   1. 在**新增警示狀態動作**下，新增動作。 和 選擇**儲存**。

      您最多可以新增 10 個動作。

   AWS IoT Events 可以在警示處於作用中狀態時執行動作。您可以定義內建動作以使用計時器或設定變數，或將資料傳送至其他 AWS 資源。如需詳細資訊，請參閱《 *AWS IoT Events 開發人員指南*》中的[支援的動作](https://docs.aws.amazon.com/iotevents/latest/developerguide/iotevents-supported-actions.html)。

1. （選用） 在 ** SiteWise Monitor 中的管理警示模型下 - *選用***，選擇**作用中**或非**作用中**。

   使用此選項可讓您在 SiteWise Monitors 中更新警示模型。此選項預設為啟用。

1. 在**確認流程**下，選擇**作用中**或非**作用中**。如需確認流程的詳細資訊，請參閱 [警示狀態](industrial-alarms.md#alarm-states)。

1. 選擇**新增警示**。
**注意**  
 AWS IoT SiteWise 主控台會發出多個 API 請求，將警示新增至資產模型。當您選擇**新增警示**時，主控台會開啟顯示這些 API 請求進度的對話方塊。請保留在此頁面上，直到每個 API 請求成功或 API 請求失敗為止。如果請求失敗，請關閉對話方塊，修正問題，然後選擇**新增警示**再試一次。

## 定義 AWS IoT Events 警示AWS IoT Events （主控台）
<a name="define-iot-events-alarm-console-ite-console"></a>

您可以使用 AWS IoT Events 主控台在現有資產模型上定義 AWS IoT Events 警示。若要在新的資產模型上定義 AWS IoT Events 警示，請建立資產模型，然後完成這些步驟。如需詳細資訊，請參閱[在 中建立資產模型 AWS IoT SiteWise](create-asset-models.md)。

**重要**  
每個警示都需要一個屬性，指定要與警示比較的閾值。您必須先在資產模型上定義閾值屬性，才能定義警示。  
假設您想要定義警示，以偵測風力發電機何時超過最大風速等級 50 mph 的範例。定義警示之前，您必須定義預設值為 的屬性 (**最大風速**)`50`。

**在資產模型上定義 AWS IoT Events 警示**

1. 導覽至 [AWS IoT Events 主控台](https://console.aws.amazon.com/iotevents/)。

1. 在導覽窗格中，選擇**警示模型**。

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

1. 輸入警示的名稱。

1. （選用） 輸入警示的描述。

1. 在**警示目標**區段中，執行下列動作：

   1. 針對**目標選項**，選擇**AWS IoT SiteWise 資產屬性**。

   1. 選擇您要為其新增警示的資產模型。

1. 在**閾值定義**區段中，您可以定義警示偵測的時間和警示的嚴重性。請執行下列操作：

   1. 選取警示偵測到的**屬性**。每次此屬性收到新值時， 都會將值 AWS IoT SiteWise 傳送至 AWS IoT Events ，以評估警示的狀態。

   1. 選取要用來比較 屬性與閾值的**運算子**。您可以從以下選項中選擇：
      + **< 小於**
      + **<= 小於或等於**
      + **== 等於**
      + **！= 不相等**
      + **>= 大於或等於**
      + **> 大於**

   1. 針對**值**，選取要用作閾值的屬性屬性。 會 AWS IoT Events 比較 屬性的值與此屬性的值。

   1. 輸入警示的**嚴重性**。使用您的團隊了解的數字來反映此警示的嚴重性。

1. （選用） 在**通知設定 - *選用***區段中，執行下列動作：

   1. 針對**通訊協定**，從下列選項中選擇：
      + **電子郵件和文字** – 警示會以簡訊和電子郵件訊息通知 IAM Identity Center 使用者。
      + **電子郵件** – 警示會以電子郵件訊息通知 IAM Identity Center 使用者。
      + **文字** – 警示會以簡訊通知 IAM Identity Center 使用者。

   1. 針對**寄件者**，選擇寄件者。
**重要**  
您必須在 Amazon Simple Email Service (Amazon SES中驗證寄件者電子郵件地址。如需詳細資訊，請參閱《[Amazon Simple Email Service 開發人員指南》中的在 Amazon SES 中驗證電子郵件地址](https://docs.aws.amazon.com/ses/latest/dg/verify-addresses-and-domains.html)。 **

   1. 在收件人屬性中選擇**屬性 - *選用***。警示會使用您選擇的屬性的預設值。

   1. 選擇**自訂訊息屬性中的屬性 - *選用***。警示會使用您選擇的屬性的預設值。

1. 在**執行個體**區段中，指定此警示**的預設狀態**。您可以為稍後步驟中從此資產模型建立的所有資產啟用或停用此警示。

1. 在**進階設定**設定中，您可以設定許可、其他通知設定、警示狀態動作、SiteWise Monitor 中的警示模型，以及確認流程。
**注意**  
AWS IoT Events 警示需要下列服務角色：  
 AWS IoT Events 擔任將警示狀態值傳送至其中的角色 AWS IoT SiteWise。
 AWS IoT Events 擔任將資料傳送至 Lambda 的角色。只有在警示傳送通知時，您才需要此角色。

   1. 在**確認流程**區段中，選擇**啟用或停用******。如需確認流程的詳細資訊，請參閱 [警示狀態](industrial-alarms.md#alarm-states)。

   1. 在**許可**區段中，執行下列動作：

      1. 對於**AWS IoT Events 角色**，請使用現有角色或建立具有所需許可的角色。此角色需要`iotsitewise:BatchPutAssetPropertyValue`許可和允許 iotevents.amazonaws.com 擔任該角色的信任關係。

      1. 對於 **Lambda 角色**，請使用現有角色或建立具有所需許可的角色。此角色需要 `lambda:InvokeFunction`和 `sso-directory:DescribeUser`許可，以及允許 `iotevents.amazonaws.com`擔任角色的信任關係。

   1. （選用） 在**其他通知設定**窗格中，執行下列動作：

      1. 針對**管理您的 Lambda 函數**，請執行下列其中一項操作：
        + 若要 AWS IoT Events 建立新的 Lambda 函數，請選擇**建立新的 Lambda 函數**。
        + 若要使用現有的 Lambda 函數，請選擇**使用現有的 Lambda 函數**，然後選擇函數的名稱。

        如需詳細資訊，請參閱《 *AWS IoT Events 開發人員指南*》中的[管理警示通知](https://docs.aws.amazon.com/iotevents/latest/developerguide/lambda-support.html)。

   1. （選用） 在**設定狀態動作 - *選用***區段中，執行下列動作：

      1. 在**警示狀態動作**下，新增動作。，然後選擇**儲存**。

        您最多可以新增 10 個動作。

      AWS IoT Events 可以在警示處於作用中狀態時執行動作。您可以定義內建動作以使用計時器或設定變數，或將資料傳送至其他 AWS 資源。如需詳細資訊，請參閱《 *AWS IoT Events 開發人員指南*》中的[支援的動作](https://docs.aws.amazon.com/iotevents/latest/developerguide/iotevents-supported-actions.html)。

1. 選擇**建立**。
**注意**  
 AWS IoT Events 主控台會發出多個 API 請求，將警示新增至資產模型。當您選擇**新增警示**時，主控台會開啟顯示這些 API 請求進度的對話方塊。請保留在此頁面上，直到每個 API 請求成功或 API 請求失敗為止。如果請求失敗，請關閉對話方塊，修正問題，然後選擇**新增警示**再試一次。

## 定義 AWS IoT Events 警示 (AWS CLI)
<a name="define-iot-events-alarm-cli"></a>

您可以使用 AWS Command Line Interface (AWS CLI) 來定義監控資產屬性的 AWS IoT Events 警示。您可以在新的或現有的資產模型上定義警示。在資產模型上定義警示之後，您可以在 中建立警示， AWS IoT Events 並將其連接到資產模型。在此程序中，您會執行下列動作：

**Topics**
+ [步驟 1：在資產模型上定義警示](#define-iot-events-alarm-definition-cli)
+ [步驟 2：定義 AWS IoT Events 警示模型](#define-iot-events-alarm-model-cli)
+ [步驟 3：啟用 AWS IoT SiteWise 和 之間的資料流程 AWS IoT Events](#define-iot-events-alarm-data-flow-cli)

### 步驟 1：在資產模型上定義警示
<a name="define-iot-events-alarm-definition-cli"></a>

將警示定義和相關聯的屬性新增至新的或現有的資產模型。

**在資產模型上定義警示 (CLI)**

1. 建立稱為 `asset-model-payload.json` 的檔案。請依照這些其他章節中的步驟，將資產模型的詳細資訊新增至 檔案，但不要提交建立或更新資產模型的請求。在本節中，您將警示定義新增至 `asset-model-payload.json` 檔案中的資產模型詳細資訊。
   + 如需如何建立資產模型的詳細資訊，請參閱 [建立資產模型 (AWS CLI)](create-asset-models.md#create-asset-model-cli)。
   + 如需如何更新現有資產模型的詳細資訊，請參閱 [更新資產模型、元件模型或界面 (AWS CLI)](update-asset-models.md#update-asset-model-cli)。
**注意**  
您的資產模型必須至少定義一個資產屬性，包括使用警示監控的資產屬性。

1. 將警示複合模型 (`assetModelCompositeModels`) 新增至資產模型。 AWS IoT Events 警示複合模型會指定 `IOT_EVENTS`類型，並指定警示來源屬性。您可以在建立警示模型後新增警示來源屬性 AWS IoT Events。
**重要**  
警示複合模型的名稱必須與稍後建立的 AWS IoT Events 警示模型相同。警示模型名稱只能包含英數字元。指定唯一的英數名稱，以便您可以為警示模型使用相同的名稱。

   ```
   {
     ...
     "assetModelCompositeModels": [
       {
         "name": "BoilerTemperatureHighAlarm",
         "type": "AWS/ALARM",
         "properties": [
           {
             "name": "AWS/ALARM_TYPE",
             "dataType": "STRING",
             "type": {
               "attribute": {
                 "defaultValue": "IOT_EVENTS"
               }
             }
           },
           {
             "name": "AWS/ALARM_STATE",
             "dataType": "STRUCT",
             "dataTypeSpec": "AWS/ALARM_STATE",
             "type": {
               "measurement": {}
             }
           }
         ]
       }
     ]
   }
   ```

1. 將警示閾值屬性新增至資產模型。指定要用於此閾值的預設值。您可以根據此模型覆寫每個資產上的此預設值。
**注意**  
警示閾值屬性必須是 `INTEGER`或 `DOUBLE`。

   ```
   {
     ...
     "assetModelProperties": [
       ...
       {
         "name": "Temperature Max Threshold",
         "dataType": "DOUBLE",
         "type": {
           "attribute": {
             "defaultValue": "105.0"
           }
         }
       }
     ]
   }
   ```

1. （選用） 將警示通知屬性新增至資產模型。這些屬性會指定 IAM Identity Center 收件人，以及警示變更狀態時 AWS IoT Events 用來傳送通知的其他輸入。您可以根據此模型覆寫每個資產上的這些預設值。
**重要**  <a name="alarm-notifications-sso-requirement"></a>
您可以傳送警示通知給 AWS IAM Identity Center 使用者。若要使用此功能，您必須啟用 IAM Identity Center。您 AWS 一次只能在一個區域中啟用 IAM Identity Center。這表示您只能在啟用 IAM Identity Center 的區域中定義警示通知。如需詳細資訊，請參閱*《AWS IAM Identity Center 使用者指南》*中的[「入門」](https://docs.aws.amazon.com/singlesignon/latest/userguide/getting-started.html)。

   請執行下列操作：

   1. 新增 屬性，指定 IAM Identity Center 身分存放區的 ID。您可以使用 IAM Identity Center [ListInstances](https://docs.aws.amazon.com/singlesignon/latest/APIReference/API_ListInstances.html) API 操作來列出您的身分存放區。此操作僅適用於您啟用 IAM Identity Center 的 區域。

      ```
      aws sso-admin list-instances
      ```

      然後，指定身分存放區 ID （例如 `d-123EXAMPLE`) 做為 屬性的預設值。

      ```
      {
        ...
        "assetModelProperties": [
          ...
          {
            "name": "identityStoreId",
            "dataType": "STRING",
            "type": {
              "attribute": {
                "defaultValue": "d-123EXAMPLE"
              }
            }
          }
        ]
      }
      ```

   1. 新增 屬性，指定接收通知的 IAM Identity Center 使用者 ID。若要定義預設通知收件人，請新增 IAM Identity Center 使用者 ID 做為預設值。執行下列其中一項以取得 IAM Identity Center 使用者 ID：

      1. 您可以使用 IAM Identity Center [ListUsers](https://docs.aws.amazon.com/singlesignon/latest/IdentityStoreAPIReference/API_ListUsers.html) API 來取得您知道其使用者名稱的 ID。將 *d-123EXAMPLE* 取代為您身分存放區的 ID，並將 *Name* 取代為使用者名稱。

         ```
         aws identitystore list-users \
           --identity-store-id d-123EXAMPLE \
           --filters AttributePath=UserName,AttributeValue=Name
         ```

      1. 使用 [IAM Identity Center 主控台](https://console.aws.amazon.com/singlesignon)瀏覽您的使用者並尋找使用者 ID。

      然後，指定使用者 ID （例如 `123EXAMPLE-a1b2c3d4-5678-90ab-cdef-33333EXAMPLE`) 做為 屬性的預設值，或定義沒有預設值的屬性。

      ```
      {
        ...
        "assetModelProperties": [
          ...
          {
            "name": "userId",
            "dataType": "STRING",
            "type": {
              "attribute": {
                "defaultValue": "123EXAMPLE-a1b2c3d4-5678-90ab-cdef-33333EXAMPLE"
              }
            }
          }
        ]
      }
      ```

   1. （選用） 新增 屬性，指定簡訊 （文字） 訊息通知的預設寄件者 ID。寄件者 ID 會在 Amazon Simple Notification Service (Amazon SNS) 傳送的訊息上顯示為訊息寄件者。如需詳細資訊，請參閱*AWS End User Messaging SMS 《 使用者指南*》中的在 [中請求寄件者 ID AWS End User Messaging SMS](https://docs.aws.amazon.com/sms-voice/latest/userguide/sender-id-request.html)。

      ```
      {
        ...
        "assetModelProperties": [
          ...
          {
            "name": "senderId",
            "dataType": "STRING",
            "type": {
              "attribute": {
                "defaultValue": "MyFactory"
              }
            }
          }
        ]
      }
      ```

   1. （選用） 新增 屬性，指定要用作電子郵件通知中*來源*地址的預設電子郵件地址。

      ```
      {
        ...
        "assetModelProperties": [
          ...
          {
            "name": "fromAddress",
            "dataType": "STRING",
            "type": {
              "attribute": {
                "defaultValue": "my.factory@example.com"
              }
            }
          }
        ]
      }
      ```

   1. （選用） 新增 屬性，指定要在電子郵件通知中使用的預設主旨。

      ```
      {
        ...
        "assetModelProperties": [
          ...
          {
            "name": "emailSubject",
            "dataType": "STRING",
            "type": {
              "attribute": {
                "defaultValue": "[ALERT] High boiler temperature"
              }
            }
          }
        ]
      }
      ```

   1. （選用） 新增屬性，指定要包含在通知中的額外訊息。根據預設，通知訊息會包含警示的相關資訊。您也可以包含額外的訊息，提供使用者更多資訊。

      ```
      {
        ...
        "assetModelProperties": [
          ...
          {
            "name": "additionalMessage",
            "dataType": "STRING",
            "type": {
              "attribute": {
                "defaultValue": "Turn off the power before you check the alarm."
              }
            }
          }
        ]
      }
      ```

1. 建立資產模型或更新現有的資產模型。執行以下任意一項：
   + 若要建立資產模型，請執行下列命令。

     ```
     aws iotsitewise create-asset-model --cli-input-json file://asset-model-payload.json
     ```
   + 若要更新現有的資產模型，請執行下列命令。將 *asset-model-id* 取代為資產模型的 ID。

     ```
     aws iotsitewise update-asset-model \
       --asset-model-id asset-model-id \
       --cli-input-json file://asset-model-payload.json
     ```

   執行 命令之後，請在回應`assetModelId`中記下 。

#### 範例：Boiler 資產模型
<a name="alarm-asset-model-example"></a>

下列資產模型代表報告溫度資料的鍋爐。此資產模型會定義警示，以偵測鍋爐何時過熱。

```
{
  "assetModelName": "Boiler Model",
  "assetModelDescription": "Represents a boiler.",
  "assetModelProperties": [
    {
      "name": "Temperature",
      "dataType": "DOUBLE",
      "unit": "C",
      "type": {
        "measurement": {}
      }
    },
    {
      "name": "Temperature Max Threshold",
      "dataType": "DOUBLE",
      "type": {
        "attribute": {
          "defaultValue": "105.0"
        }
      }
    },
    {
      "name": "identityStoreId",
      "dataType": "STRING",
      "type": {
        "attribute": {
          "defaultValue": "d-123EXAMPLE"
        }
      }
    },
    {
      "name": "userId",
      "dataType": "STRING",
      "type": {
        "attribute": {
          "defaultValue": "123EXAMPLE-a1b2c3d4-5678-90ab-cdef-33333EXAMPLE"
        }
      }
    },
    {
      "name": "senderId",
      "dataType": "STRING",
      "type": {
        "attribute": {
          "defaultValue": "MyFactory"
        }
      }
    },
    {
      "name": "fromAddress",
      "dataType": "STRING",
      "type": {
        "attribute": {
          "defaultValue": "my.factory@example.com"
        }
      }
    },
    {
      "name": "emailSubject",
      "dataType": "STRING",
      "type": {
        "attribute": {
          "defaultValue": "[ALERT] High boiler temperature"
        }
      }
    },
    {
      "name": "additionalMessage",
      "dataType": "STRING",
      "type": {
        "attribute": {
          "defaultValue": "Turn off the power before you check the alarm."
        }
      }
    }
  ],
  "assetModelHierarchies": [
  
  ],
  "assetModelCompositeModels": [
    {
      "name": "BoilerTemperatureHighAlarm",
      "type": "AWS/ALARM",
      "properties": [
        {
          "name": "AWS/ALARM_TYPE",
          "dataType": "STRING",
          "type": {
            "attribute": {
              "defaultValue": "IOT_EVENTS"
            }
          }
        },
        {
          "name": "AWS/ALARM_STATE",
          "dataType": "STRUCT",
          "dataTypeSpec": "AWS/ALARM_STATE",
          "type": {
            "measurement": {}
          }
        }
      ]
    }
  ]
}
```

### 步驟 2：定義 AWS IoT Events 警示模型
<a name="define-iot-events-alarm-model-cli"></a>

在 中建立警示模型 AWS IoT Events。在 中 AWS IoT Events，您可以使用*表達式*來指定警示模型中的值。您可以使用表達式來指定來自 的值 AWS IoT SiteWise ，以評估並使用 做為警示的輸入。當 AWS IoT SiteWise 將資產屬性值傳送至警示模型時， AWS IoT Events 會評估表達式，以取得 屬性的值或資產的 ID。您可以在警示模型中使用下列表達式：
+ **資產屬性值**

  若要取得資產屬性的值，請使用下列表達式。將 *assetModelId* 取代為資產模型的 ID，並將 *propertyId* 取代為 屬性的 ID。

  ```
  $sitewise.assetModel.`assetModelId`.`propertyId`.propertyValue.value
  ```
+ **資產 IDs**

  若要取得資產的 ID，請使用下列表達式。將 *assetModelId* 取代為資產模型的 ID，並將 *propertyId* 取代為 屬性的 ID。

  ```
  $sitewise.assetModel.`assetModelId`.`propertyId`.assetId
  ```

**注意**  
建立警示模型時，您可以定義常值，而不是評估為 AWS IoT SiteWise 值的表達式。這可以減少您在資產模型上定義的屬性數目。不過，如果您將值定義為常值，則無法根據資產模型在資產上自訂該值。您的 AWS IoT SiteWise Monitor 使用者也無法自訂警示，因為他們只能在資產上設定警示設定。

**建立 AWS IoT Events 警示模型 (CLI)**

1. 在 中建立警示模型時 AWS IoT Events，您必須指定警示使用的每個屬性 ID，其中包括下列項目：
   + 複合資產模型中的警示狀態屬性
   + 警示監控的 屬性
   + 閾值屬性
   + （選用） IAM Identity Center 身分存放區 ID 屬性
   + （選用） IAM Identity Center 使用者 ID 屬性
   + （選用） SMS 寄件者 ID 屬性
   + （選用） *來自*地址屬性的電子郵件
   + （選用） 電子郵件主旨屬性
   + （選用） 其他訊息屬性

   執行下列命令來擷取資產模型上這些屬性IDs。將 *asset-model-id* 取代為上一個步驟的資產模型 ID。

   ```
   aws iotsitewise describe-asset-model --asset-model-id asset-model-id
   ```

   此操作會傳回包含資產模型詳細資料的回應。請注意警示使用的每個屬性 ID。在下一個步驟中建立 AWS IoT Events 警示模型時，您會使用這些 IDs。

1. 在 中建立警示模型 AWS IoT Events。請執行下列操作：

   1. 建立稱為 `alarm-model-payload.json` 的檔案。

   1. 將下列 JSON 物件複製到 檔案。

   1. 輸入警示的名稱 (`alarmModelName`)、描述 (`alarmModelDescription`) 和嚴重性 (`severity`)。針對嚴重性，請指定反映貴公司嚴重性等級的整數。
**重要**  
警示模型必須與您先前在資產模型上定義的警示複合模型具有相同的名稱。  
警示模型名稱只能包含英數字元。

      ```
      {
        "alarmModelName": "BoilerTemperatureHighAlarm",
        "alarmModelDescription": "Detects when the boiler temperature is high.",
        "severity": 3
      }
      ```

   1. 將比較規則 (`alarmRule`) 新增至警示。此規則定義要監控的 屬性 (`inputProperty`)、要比較的閾值 (`threshold`)，以及要使用的比較運算子 ()`comparisonOperator`。
      + 以資產模型的 ID 取代 *assetModelId*。
      + 將 *alarmPropertyId* 取代為警示監控的 屬性 ID。
      + 將 *thresholdAttributeId* 取代為 threshold 屬性的 ID。
      + 將 *GREATER* 取代為運算子，以用來比較屬性值與閾值。您可以從以下選項中選擇：
        + `LESS`
        + `LESS_OR_EQUAL`
        + `EQUAL`
        + `NOT_EQUAL`
        + `GREATER_OR_EQUAL`
        + `GREATER`

      ```
      {
        "alarmModelName": "BoilerTemperatureHighAlarm",
        "alarmModelDescription": "Detects when the boiler temperature is high.",
        "severity": 3,
        "alarmRule": {
          "simpleRule": {
            "inputProperty": "$sitewise.assetModel.`assetModelId`.`alarmPropertyId`.propertyValue.value",
            "comparisonOperator": "GREATER",
            "threshold": "$sitewise.assetModel.`assetModelId`.`thresholdAttributeId`.propertyValue.value"
          }
        }
      }
      ```

   1. 新增動作 (`alarmEventActions`)，以在警示變更狀態 AWS IoT SiteWise 時將警示狀態傳送至 。
**注意**  
對於進階組態，您可以定義警示變更狀態時要執行的其他動作。例如，您可以呼叫 AWS Lambda 函數或發佈至 MQTT 主題。如需詳細資訊，請參閱《 *AWS IoT Events 開發人員指南*》中的[使用其他 AWS 服務](https://docs.aws.amazon.com/iotevents/latest/developerguide/iotevents-other-aws-services.html)。
      + 以資產模型的 ID 取代 *assetModelId*。
      + 將 *alarmPropertyId* 取代為警示監控的 屬性 ID。
      + 將 *alarmStatePropertyId* 取代為警示複合模型中警示狀態屬性的 ID。

      ```
      {
        "alarmModelName": "BoilerTemperatureHighAlarm",
        "alarmModelDescription": "Detects when the boiler temperature is high.",
        "severity": 3,
        "alarmRule": {
          "simpleRule": {
            "inputProperty": "$sitewise.assetModel.`assetModelId`.`alarmPropertyId`.propertyValue.value",
            "comparisonOperator": "GREATER",
            "threshold": "$sitewise.assetModel.`assetModelId`.`thresholdAttributeId`.propertyValue.value"
          }
        },
        "alarmEventActions": {
          "alarmActions": [
            {
              "iotSiteWise": {
                "assetId": "$sitewise.assetModel.`assetModelId`.`alarmPropertyId`.assetId",
                "propertyId": "'alarmStatePropertyId'"
              }
            }
          ]
        }
      }
      ```

   1. （選用） 設定警示通知設定。警示通知動作會使用您帳戶中的 Lambda 函數來傳送警示通知。如需詳細資訊，請參閱[中的警示通知需求 AWS IoT SiteWise](iot-events-alarm-notification-requirements.md)。在警示通知設定中，您可以設定要傳送給 IAM Identity Center 使用者的簡訊和電子郵件通知。請執行下列操作：

      1. 將警示通知組態 (`alarmNotification`) 新增至 中的承載`alarm-model-payload.json`。
         + 將 *alarmNotificationFunctionArn* 取代為處理警示通知的 Lambda 函數的 ARN。

         ```
         {
           "alarmModelName": "BoilerTemperatureHighAlarm",
           "alarmModelDescription": "Detects when the boiler temperature is high.",
           "severity": 3,
           "alarmRule": {
             "simpleRule": {
               "inputProperty": "$sitewise.assetModel.`assetModelId`.`alarmPropertyId`.propertyValue.value",
               "comparisonOperator": "GREATER",
               "threshold": "$sitewise.assetModel.`assetModelId`.`thresholdAttributeId`.propertyValue.value"
             }
           },
           "alarmEventActions": {
             "alarmActions": [
               {
                 "iotSiteWise": {
                   "assetId": "$sitewise.assetModel.`assetModelId`.`alarmPropertyId`.assetId",
                   "propertyId": "'alarmStatePropertyId'"
                 }
               }
             ]
           },
           "alarmNotification": {
             "notificationActions": [
               {
                 "action": {
                   "lambdaAction": {
                     "functionArn": "alarmNotificationFunctionArn"
                   }
                 }
               }
             ]
           }
         }
         ```

      1. （選用） 設定 SMS 通知 (`smsConfigurations`)，以在警示變更狀態時傳送給 IAM Identity Center 使用者。
         + 將 *identityStoreIdAttributeId* 取代為包含 IAM Identity Center 身分存放區 ID 的屬性 ID。
         + 將 *userIdAttributeId* 取代為包含 IAM Identity Center 使用者 ID 的屬性 ID。
         + 將 *senderIdAttributeId* 取代為包含 Amazon SNS 寄件者 ID 的屬性 ID，或從`senderId`承載中移除。
         + 以包含額外訊息的屬性 ID 取代 *additionalMessageAttributeId*，或從`additionalMessage`承載中移除。

         ```
         {
           "alarmModelName": "BoilerTemperatureHighAlarm",
           "alarmModelDescription": "Detects when the boiler temperature is high.",
           "severity": 3,
           "alarmRule": {
             "simpleRule": {
               "inputProperty": "$sitewise.assetModel.`assetModelId`.`alarmPropertyId`.propertyValue.value",
               "comparisonOperator": "GREATER",
               "threshold": "$sitewise.assetModel.`assetModelId`.`thresholdAttributeId`.propertyValue.value"
             }
           },
           "alarmEventActions": {
             "alarmActions": [
               {
                 "iotSiteWise": {
                   "assetId": "$sitewise.assetModel.`assetModelId`.`alarmPropertyId`.assetId",
                   "propertyId": "'alarmStatePropertyId'"
                 }
               }
             ]
           },
           "alarmNotification": {
             "notificationActions": [
               {
                 "action": {
                   "lambdaAction": {
                     "functionArn": "alarmNotificationFunctionArn"
                   }
                 },
                 "smsConfigurations": [
                   {
                     "recipients": [
                       {
                         "ssoIdentity": {
                           "identityStoreId": "$sitewise.assetModel.`assetModelId`.`identityStoreIdAttributeId`.propertyValue.value",
                           "userId": "$sitewise.assetModel.`assetModelId`.`userIdAttributeId`.propertyValue.value"
                         }
                       }
                     ],
                     "senderId": "$sitewise.assetModel.`assetModelId`.`senderIdAttributeId`.propertyValue.value",
                     "additionalMessage": "$sitewise.assetModel.`assetModelId`.`additionalMessageAttributeId`.propertyValue.value"
                   }
                 ]
               }
             ]
           }
         }
         ```

      1. （選用） 設定電子郵件通知 (`emailConfigurations`)，以在警示變更狀態時傳送給 IAM Identity Center 使用者。
         + 將 *identityStoreIdAttributeId* 取代為 IAM Identity Center 身分存放區 ID 屬性的 ID。
         + 將 *userIdAttributeId* 取代為 IAM Identity Center 使用者 ID 屬性的 ID。
         + 以「寄件人」地址屬性屬性的 ID 取代 *fromAddressAttributeId*，或從`from`承載中移除。
         + 將 *emailSubjectAttributeId* 取代為電子郵件主體屬性屬性的 ID，或從`subject`承載中移除。
         + 以其他訊息屬性屬性的 ID 取代 *additionalMessageAttributeId*，或從`additionalMessage`承載中移除。

         ```
         {
           "alarmModelName": "BoilerTemperatureHighAlarm",
           "alarmModelDescription": "Detects when the boiler temperature is high.",
           "severity": 3,
           "alarmRule": {
             "simpleRule": {
               "inputProperty": "$sitewise.assetModel.`assetModelId`.`alarmPropertyId`.propertyValue.value",
               "comparisonOperator": "GREATER",
               "threshold": "$sitewise.assetModel.`assetModelId`.`thresholdAttributeId`.propertyValue.value"
             }
           },
           "alarmEventActions": {
             "alarmActions": [
               {
                 "iotSiteWise": {
                   "assetId": "$sitewise.assetModel.`assetModelId`.`alarmPropertyId`.assetId",
                   "propertyId": "'alarmStatePropertyId'"
                 }
               }
             ]
           },
           "alarmNotification": {
             "notificationActions": [
               {
                 "action": {
                   "lambdaAction": {
                     "functionArn": "alarmNotificationFunctionArn"
                   }
                 },
                 "smsConfigurations": [
                   {
                     "recipients": [
                       {
                         "ssoIdentity": {
                           "identityStoreId": "$sitewise.assetModel.`assetModelId`.`identityStoreIdAttributeId`.propertyValue.value",
                           "userId": "$sitewise.assetModel.`assetModelId`.`userIdAttributeId`.propertyValue.value"
                         }
                       }
                     ],
                     "senderId": "$sitewise.assetModel.`assetModelId`.`senderIdAttributeId`.propertyValue.value",
                     "additionalMessage": "$sitewise.assetModel.`assetModelId`.`additionalMessageAttributeId`.propertyValue.value"
                   }
                 ],
                 "emailConfigurations": [
                   {
                     "from": "$sitewise.assetModel.`assetModelId`.`fromAddressAttributeId`.propertyValue.value",
                     "recipients": {
                       "to": [
                         {
                           "ssoIdentity": {
                             "identityStoreId": "$sitewise.assetModel.`assetModelId`.`identityStoreIdAttributeId`.propertyValue.value",
                             "userId": "$sitewise.assetModel.`assetModelId`.`userIdAttributeId`.propertyValue.value"
                           }
                         }
                       ]
                     },
                     "content": {
                       "subject": "$sitewise.assetModel.`assetModelId`.`emailSubjectAttributeId`.propertyValue.value",
                       "additionalMessage": "$sitewise.assetModel.`assetModelId`.`additionalMessageAttributeId`.propertyValue.value"
                     }
                   }
                 ]
               }
             ]
           }
         }
         ```

   1. （選用） 將警示功能 (`alarmCapabilities`) 新增至 中的承載`alarm-model-payload.json`。在此物件中，您可以根據資產模型指定確認流程是否已啟用，以及資產的預設啟用狀態。如需確認流程的詳細資訊，請參閱 [警示狀態](industrial-alarms.md#alarm-states)。

      ```
      {
        "alarmModelName": "BoilerTemperatureHighAlarm",
        "alarmModelDescription": "Detects when the boiler temperature is high.",
        "severity": 3,
        "alarmRule": {
          "simpleRule": {
            "inputProperty": "$sitewise.assetModel.`assetModelId`.`alarmPropertyId`.propertyValue.value",
            "comparisonOperator": "GREATER",
            "threshold": "$sitewise.assetModel.`assetModelId`.`thresholdAttributeId`.propertyValue.value"
          }
        },
        "alarmEventActions": {
          "alarmActions": [
            {
              "iotSiteWise": {
                "assetId": "$sitewise.assetModel.`assetModelId`.`alarmPropertyId`.assetId",
                "propertyId": "'alarmStatePropertyId'"
              }
            }
          ]
        },
        "alarmNotification": {
          "notificationActions": [
            {
              "action": {
                "lambdaAction": {
                  "functionArn": "alarmNotificationFunctionArn"
                }
              },
              "smsConfigurations": [
                {
                  "recipients": [
                    {
                      "ssoIdentity": {
                        "identityStoreId": "$sitewise.assetModel.`assetModelId`.`identityStoreIdAttributeId`.propertyValue.value",
                        "userId": "$sitewise.assetModel.`assetModelId`.`userIdAttributeId`.propertyValue.value"
                      }
                    }
                  ],
                  "senderId": "$sitewise.assetModel.`assetModelId`.`senderIdAttributeId`.propertyValue.value",
                  "additionalMessage": "$sitewise.assetModel.`assetModelId`.`additionalMessageAttributeId`.propertyValue.value"
                }
              ],
              "emailConfigurations": [
                {
                  "from": "$sitewise.assetModel.`assetModelId`.`fromAddressAttributeId`.propertyValue.value",
                  "recipients": {
                    "to": [
                      {
                        "ssoIdentity": {
                          "identityStoreId": "$sitewise.assetModel.`assetModelId`.`identityStoreIdAttributeId`.propertyValue.value",
                          "userId": "$sitewise.assetModel.`assetModelId`.`userIdAttributeId`.propertyValue.value"
                        }
                      }
                    ]
                  },
                  "content": {
                    "subject": "$sitewise.assetModel.`assetModelId`.`emailSubjectAttributeId`.propertyValue.value",
                    "additionalMessage": "$sitewise.assetModel.`assetModelId`.`additionalMessageAttributeId`.propertyValue.value"
                  }
                }
              ]
            }
          ]
        },
        "alarmCapabilities": {
          "initializationConfiguration": {
            "disabledOnInitialization": false
          },
          "acknowledgeFlow": {
            "enabled": true
          }
        }
      }
      ```

   1. 新增 AWS IoT Events 可擔任傳送資料的 IAM 服務角色 (`roleArn`) AWS IoT SiteWise。此角色需要允許 `iotevents.amazonaws.com`擔任角色的`iotsitewise:BatchPutAssetPropertyValue`許可和信任關係。若要傳送通知，此角色也需要 `lambda:InvokeFunction`和 `sso-directory:DescribeUser`許可。如需詳細資訊，請參閱《 *AWS IoT Events 開發人員指南*》中的[警示服務角色](https://docs.aws.amazon.com/iotevents/latest/developerguide/security-iam.html)。
      + 將 取代`roleArn`為 AWS IoT Events 可擔任以執行這些動作之角色的 ARN。

      ```
      {
        "alarmModelName": "BoilerTemperatureHighAlarm",
        "alarmModelDescription": "Detects when the boiler temperature is high.",
        "severity": 3,
        "alarmRule": {
          "simpleRule": {
            "inputProperty": "$sitewise.assetModel.`assetModelId`.`alarmPropertyId`.propertyValue.value",
            "comparisonOperator": "GREATER",
            "threshold": "$sitewise.assetModel.`assetModelId`.`thresholdAttributeId`.propertyValue.value"
          }
        },
        "alarmEventActions": {
          "alarmActions": [
            {
              "iotSiteWise": {
                "assetId": "$sitewise.assetModel.`assetModelId`.`alarmPropertyId`.assetId",
                "propertyId": "'alarmStatePropertyId'"
              }
            }
          ]
        },
        "alarmNotification": {
          "notificationActions": [
            {
              "action": {
                "lambdaAction": {
                  "functionArn": "alarmNotificationFunctionArn"
                }
              },
              "smsConfigurations": [
                {
                  "recipients": [
                    {
                      "ssoIdentity": {
                        "identityStoreId": "$sitewise.assetModel.`assetModelId`.`identityStoreIdAttributeId`.propertyValue.value",
                        "userId": "$sitewise.assetModel.`assetModelId`.`userIdAttributeId`.propertyValue.value"
                      }
                    }
                  ],
                  "senderId": "$sitewise.assetModel.`assetModelId`.`senderIdAttributeId`.propertyValue.value",
                  "additionalMessage": "$sitewise.assetModel.`assetModelId`.`additionalMessageAttributeId`.propertyValue.value"
                }
              ],
              "emailConfigurations": [
                {
                  "from": "$sitewise.assetModel.`assetModelId`.`fromAddressAttributeId`.propertyValue.value",
                  "recipients": {
                    "to": [
                      {
                        "ssoIdentity": {
                          "identityStoreId": "$sitewise.assetModel.`assetModelId`.`identityStoreIdAttributeId`.propertyValue.value",
                          "userId": "$sitewise.assetModel.`assetModelId`.`userIdAttributeId`.propertyValue.value"
                        }
                      }
                    ]
                  },
                  "content": {
                    "subject": "$sitewise.assetModel.`assetModelId`.`emailSubjectAttributeId`.propertyValue.value",
                    "additionalMessage": "$sitewise.assetModel.`assetModelId`.`additionalMessageAttributeId`.propertyValue.value"
                  }
                }
              ]
            }
          ]
        },
        "alarmCapabilities": {
          "initializationConfiguration": {
            "disabledOnInitialization": false
          },
          "acknowledgeFlow": {
            "enabled": false
          }
        },
        "roleArn": "arn:aws:iam::123456789012:role/MyIoTEventsAlarmRole"
      }
      ```

   1. 執行下列命令，從 中的承載建立 AWS IoT Events 警示模型`alarm-model-payload.json`。

      ```
      aws iotevents create-alarm-model --cli-input-json file://alarm-model-payload.json
      ```

   1. 操作會傳回包含警示模型 ARN 的回應 `alarmModelArn`。複製此 ARN 以在下一個步驟的資產模型警示定義中設定 。

### 步驟 3：啟用 AWS IoT SiteWise 和 之間的資料流程 AWS IoT Events
<a name="define-iot-events-alarm-data-flow-cli"></a>

在 AWS IoT SiteWise 和 中建立所需的資源後 AWS IoT Events，您可以啟用資源之間的資料流程，以啟用警示。在本節中，您會更新資產模型中的警示定義，以使用您在上一個步驟中建立的警示模型。

**啟用 AWS IoT SiteWise 和 AWS IoT Events (CLI) 之間的資料流程**
+ 在資產模型中將警示模型設定為警示的來源。請執行下列操作：

  1. 執行以下命令來擷取現有的資產模型定義。將 *asset-model-id* 取代為資產模型的 ID。

     ```
     aws iotsitewise describe-asset-model --asset-model-id asset-model-id
     ```

     此操作會傳回包含資產模型詳細資料的回應。

  1. 建立名為 `update-asset-model-payload.json` 的文件，並將前一個命令的回應複製到檔案中。

  1. 從 `update-asset-model-payload.json` 檔案中移除下列鍵/值對：
     + `assetModelId`
     + `assetModelArn`
     + `assetModelCreationDate`
     + `assetModelLastUpdateDate`
     + `assetModelStatus`

  1. 將警示來源屬性 (`AWS/ALARM_SOURCE`) 新增至您先前定義的警示複合模型。將 *alarmModelArn* 取代為警示模型的 ARN，這會設定警示來源屬性的值。

     ```
     {
       ...
       "assetModelCompositeModels": [
         ...
         {
           "name": "BoilerTemperatureHighAlarm",
           "type": "AWS/ALARM",
           "properties": [
             {
               "id": "a1b2c3d4-5678-90ab-cdef-11111EXAMPLE",
               "name": "AWS/ALARM_TYPE",
               "dataType": "STRING",
               "type": {
                 "attribute": {
                   "defaultValue": "IOT_EVENTS"
                 }
               }
             },
             {
               "id": "a1b2c3d4-5678-90ab-cdef-22222EXAMPLE",
               "name": "AWS/ALARM_STATE",
               "dataType": "STRUCT",
               "dataTypeSpec": "AWS/ALARM_STATE",
               "type": {
                 "measurement": {}
               }
             },
             {
               "name": "AWS/ALARM_SOURCE",
               "dataType": "STRING",
               "type": {
                 "attribute": {
                   "defaultValue": "alarmModelArn"
                 }
               }
             }
           ]
         }
       ]
     }
     ```

  1. 執行下列命令，使用存放在 `update-asset-model-payload.json` 檔案中的定義來更新資產模型。將 *asset-model-id* 取代為資產模型的 ID。

     ```
     aws iotsitewise update-asset-model \
       --asset-model-id asset-model-id \
       --cli-input-json file://update-asset-model-payload.json
     ```

您的資產模型現在定義 偵測傳入的警示 AWS IoT Events。警示會根據此資產模型監控所有資產中的目標屬性。您可以在每個資產上設定警示，以自訂屬性，例如每個資產的閾值或 IAM Identity Center 收件人。如需詳細資訊，請參閱[在 中設定資產警示 AWS IoT SiteWise](configure-alarms.md)。

# 在 中定義外部警示 AWS IoT SiteWise
<a name="define-external-alarms"></a>

外部警示包含您在 外部偵測到的警示狀態 AWS IoT SiteWise。

## 定義外部警示 （主控台）
<a name="define-external-alarm-console"></a>

您可以使用 AWS IoT SiteWise 主控台，在現有資產模型上定義外部警示。若要在新的資產模型上定義外部警示，請建立資產模型，然後完成這些步驟。如需詳細資訊，請參閱[在 中建立資產模型 AWS IoT SiteWise](create-asset-models.md)。

**在資產模型上定義警示**

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. 選擇**警示定義**索引標籤。

1. 選擇**新增警示**。

1. 在**警示類型選項**中，選擇**外部警示**。

1. 輸入警示的名稱。

1. （選用） 輸入警示的描述。

1. 選擇**新增警示**。

## 定義外部警示 (CLI)
<a name="define-external-alarm-cli"></a>

您可以使用 AWS CLI 在新的或現有的資產模型上定義外部警示。

若要將外部警示新增至資產模型，請將警示複合模型新增至資產模型。外部警示複合模型會指定 `EXTERNAL`類型，且不指定警示來源屬性。下列範例複合警示會定義外部溫度警示。

```
{
  ...
  "assetModelCompositeModels": [
    {
      "name": "BoilerTemperatureHighAlarm",
      "type": "AWS/ALARM",
      "properties": [
        {
          "name": "AWS/ALARM_TYPE",
          "dataType": "STRING",
          "type": {
            "attribute": {
              "defaultValue": "EXTERNAL"
            }
          }
        },
        {
          "name": "AWS/ALARM_STATE",
          "dataType": "STRUCT",
          "dataTypeSpec": "AWS/ALARM_STATE",
          "type": {
            "measurement": {}
          }
        }
      ]
    }
  ]
}
```

如需如何將複合模型新增至新資產模型或現有資產模型的詳細資訊，請參閱下列內容：
+ [建立資產模型 (AWS CLI)](create-asset-models.md#create-asset-model-cli)
+ [更新資產模型、元件模型或界面 (AWS CLI)](update-asset-models.md#update-asset-model-cli)

定義外部警示之後，您可以根據資產模型將警示狀態擷取至資產。如需詳細資訊，請參閱[在 中擷取外部警示狀態 AWS IoT SiteWise](ingest-external-alarm-state.md)。

# 在 中設定資產警示 AWS IoT SiteWise
<a name="configure-alarms"></a>

在資產模型上定義 AWS IoT Events 警示之後，您可以根據資產模型在每個資產上設定警示。您可以編輯警示的閾值和通知設定。每個值都是資產上的屬性，因此您可以更新屬性的預設值來設定這些值。

**注意**  
您可以為 AWS IoT Events 警示設定這些值，但不能在外部警示上設定這些值。

**Topics**
+ [設定閾值 （主控台）](#configure-alarm-threshold-value-console)
+ [設定閾值 (AWS CLI)](#configure-alarm-threshold-value-cli)
+ [在 中設定通知設定 AWS IoT SiteWise](configure-alarm-notification-settings.md)

## 設定閾值 （主控台）
<a name="configure-alarm-threshold-value-console"></a>

您可以使用 AWS IoT SiteWise 主控台來更新指定警示閾值的 屬性值。

**更新警示的閾值 （主控台）**

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

1. <a name="sitewise-choose-assets"></a>在導覽窗格中，選擇 **Assets (資產)**。

1. 選擇您要更新警示閾值的資產。
**提示**  <a name="sitewise-expand-asset-hierarchy"></a>
您可以選擇箭頭圖示來展開資產階層，以尋找您的資產。

1. 選擇**編輯**。

1. 尋找警示用於其閾值的屬性，然後輸入其新值。

1. 選擇**儲存**。

## 設定閾值 (AWS CLI)
<a name="configure-alarm-threshold-value-cli"></a>

您可以使用 AWS Command Line Interface (AWS CLI) 來更新指定警示閾值的 屬性值。

您必須知道資產的 `assetId` 和財產的 `propertyId`，才能完成此程序。您也可以使用外部 ID。如果您建立資產但不知道其 `assetId`，請使用 [ListAssets](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_ListAssets.html) API 列出特定模型的所有資產。使用 [DescribeAsset](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_DescribeAsset.html) 操作來檢視資產的屬性，包括屬性 IDs。

使用 [BatchPutAssetPropertyValue](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_BatchPutAssetPropertyValue.html) 操作將屬性值指派給您的資產。您可以使用此操作一次設定多個屬性。此操作的裝載包含項目清單，而每個項目都包含資產 ID、屬性 ID 和屬性值。<a name="attribute-id-update-cli"></a>

**更新屬性的值 (AWS CLI)**

1. 建立名為 `batch-put-payload.json` 的檔案，並將下列 JSON 物件複製到檔案。此範例承載示範如何設定風力發電機的緯度和經度。更新 ID、值和時間戳記，以修改您的使用案例的承載。

   ```
   {
     "entries": [
       {
         "entryId": "windfarm3-turbine7-latitude",
         "assetId": "a1b2c3d4-5678-90ab-cdef-22222EXAMPLE",
         "propertyId": "a1b2c3d4-5678-90ab-cdef-33333EXAMPLE",
         "propertyValues": [
           {
             "value": {
               "doubleValue": 47.6204
             },
             "timestamp": {
               "timeInSeconds": 1575691200
             }
           }
         ]
       },
       {
         "entryId": "windfarm3-turbine7-longitude",
         "assetId": "a1b2c3d4-5678-90ab-cdef-22222EXAMPLE",
         "propertyId": "a1b2c3d4-5678-90ab-cdef-55555EXAMPLE",
         "propertyValues": [
           {
             "value": {
               "doubleValue": 122.3491
             },
             "timestamp": {
               "timeInSeconds": 1575691200
             }
           }
         ]
       }
     ]
   }
   ```
   + 承載中的每個項目都包含 `entryId`，您可以將其定義為任何獨特的字串。如果有任何請求項目失敗，每個錯誤都會包含對應請求的 `entryId`，這樣您就可以知道要重試哪些請求。
   + 若要設定屬性值，您可以在每個屬性內容的 `propertyValues` 清單中包含一個時間戳記品質值 (TQV) 結構。此結構必須包含新的 `value` 和目前的 `timestamp`。
     + `value` – 包含下列其中一個欄位的結構，取決於所設定屬性的類型：
       + `booleanValue`
       + `doubleValue`
       + `integerValue`
       + `stringValue`
       + `nullValue`
     + `timestamp` – 包含目前 Unix epoch 時間的結構，以秒為單位，`timeInSeconds`. AWS IoT SiteWise 會拒絕過去超過 7 天或未來超過 5 分鐘的任何時間戳記資料點。

   如需如何準備 [BatchPutAssetPropertyValue](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_BatchPutAssetPropertyValue.html) 承載的詳細資訊，請參閱 [使用 AWS IoT SiteWise APIs 擷取資料](ingest-api.md)。

1. 執行下列命令，將屬性值傳送至 AWS IoT SiteWise：

   ```
   aws iotsitewise batch-put-asset-property-value -\-cli-input-json file://batch-put-payload.json
   ```

# 在 中設定通知設定 AWS IoT SiteWise
<a name="configure-alarm-notification-settings"></a>

您可以使用 AWS IoT SiteWise 主控台或 AWS Command Line Interface () 來設定警示通知設定AWS CLI。

## 設定通知設定 （主控台）
<a name="configure-alarm-notification-settings-console"></a>

您可以使用 AWS IoT SiteWise 主控台來更新指定警示通知設定的屬性值。

**更新警示的通知設定 （主控台）**

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

1. <a name="sitewise-choose-assets"></a>在導覽窗格中，選擇 **Assets (資產)**。

1. 選擇您要更新警示設定的資產。

1. 選擇**編輯**。

1. 尋找警示用於您要變更之通知設定的屬性，然後輸入其新值。

1. 選擇**儲存**。

## 設定通知設定 (CLI)
<a name="configure-alarm-notification-settings-cli"></a>

您可以使用 AWS Command Line Interface (AWS CLI) 來更新指定警示通知設定的 屬性值。

您必須知道資產的 `assetId` 和財產的 `propertyId`，才能完成此程序。您也可以使用外部 ID。如果您建立資產但不知道其 `assetId`，請使用 [ListAssets](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_ListAssets.html) API 列出特定模型的所有資產。使用 [DescribeAsset](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_DescribeAsset.html) 操作來檢視資產的屬性，包括屬性 IDs。

使用 [BatchPutAssetPropertyValue](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_BatchPutAssetPropertyValue.html) 操作將屬性值指派給您的資產。您可以使用此操作一次設定多個屬性。此操作的裝載包含項目清單，而每個項目都包含資產 ID、屬性 ID 和屬性值。<a name="attribute-id-update-cli"></a>

**更新屬性的值 (AWS CLI)**

1. 建立名為 `batch-put-payload.json` 的檔案，並將下列 JSON 物件複製到檔案。此範例承載示範如何設定風力發電機的緯度和經度。更新 ID、值和時間戳記，以修改您的使用案例的承載。

   ```
   {
     "entries": [
       {
         "entryId": "windfarm3-turbine7-latitude",
         "assetId": "a1b2c3d4-5678-90ab-cdef-22222EXAMPLE",
         "propertyId": "a1b2c3d4-5678-90ab-cdef-33333EXAMPLE",
         "propertyValues": [
           {
             "value": {
               "doubleValue": 47.6204
             },
             "timestamp": {
               "timeInSeconds": 1575691200
             }
           }
         ]
       },
       {
         "entryId": "windfarm3-turbine7-longitude",
         "assetId": "a1b2c3d4-5678-90ab-cdef-22222EXAMPLE",
         "propertyId": "a1b2c3d4-5678-90ab-cdef-55555EXAMPLE",
         "propertyValues": [
           {
             "value": {
               "doubleValue": 122.3491
             },
             "timestamp": {
               "timeInSeconds": 1575691200
             }
           }
         ]
       }
     ]
   }
   ```
   + 承載中的每個項目都包含 `entryId`，您可以將其定義為任何獨特的字串。如果有任何請求項目失敗，每個錯誤都會包含對應請求的 `entryId`，這樣您就可以知道要重試哪些請求。
   + 若要設定屬性值，您可以在每個屬性內容的 `propertyValues` 清單中包含一個時間戳記品質值 (TQV) 結構。此結構必須包含新的 `value` 和目前的 `timestamp`。
     + `value` – 包含下列其中一個欄位的結構，取決於所設定屬性的類型：
       + `booleanValue`
       + `doubleValue`
       + `integerValue`
       + `stringValue`
       + `nullValue`
     + `timestamp` – 包含目前 Unix epoch 時間的結構，以秒為單位，`timeInSeconds`. AWS IoT SiteWise 會拒絕過去超過 7 天或未來超過 5 分鐘的任何時間戳記資料點。

   如需如何準備 [BatchPutAssetPropertyValue](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_BatchPutAssetPropertyValue.html) 承載的詳細資訊，請參閱 [使用 AWS IoT SiteWise APIs 擷取資料](ingest-api.md)。

1. 執行下列命令，將屬性值傳送至 AWS IoT SiteWise：

   ```
   aws iotsitewise batch-put-asset-property-value -\-cli-input-json file://batch-put-payload.json
   ```

# 在 中回應警示 AWS IoT SiteWise
<a name="respond-to-alarms"></a>

當 AWS IoT Events 警示變更狀態時，您可以執行下列動作來回應警示：
+ 確認警示，表示您正在處理問題。
+ 暫停警示以暫時停用它。
+ 停用警示以永久停用它，直到您再次啟用它為止。
+ 啟用停用的警示以偵測警示狀態。
+ 重設警示以清除其狀態和最新值。

您可以使用 AWS IoT SiteWise 主控台或 AWS IoT Events API 來回應警示。

**注意**  
您可以回應 AWS IoT Events 警示，但不能回應外部警示。

**Topics**
+ [回應警示 （主控台）](#respond-to-alarm-console)
+ [回應警示 (API)](#respond-to-alarm-cli)

## 回應警示 （主控台）
<a name="respond-to-alarm-console"></a>

您可以使用 AWS IoT SiteWise 主控台來確認、暫停、停用或啟用警示。

**Topics**
+ [確認警示 （主控台）](#acknowledge-alarm-console)
+ [暫停警示 （主控台）](#snooze-alarm-console)
+ [停用警示 （主控台）](#disable-alarm-console)
+ [啟用警示 （主控台）](#enable-alarm-console)
+ [重設警示 （主控台）](#reset-alarm-console)

### 確認警示 （主控台）
<a name="acknowledge-alarm-console"></a>

您可以確認警示，表示您正在處理問題。

**注意**  
您必須啟用警示的確認流程，才能確認警示。如果您從主控台定義警示，則預設會 AWS IoT SiteWise 啟用此選項。

**確認警示 （主控台）**

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

1. <a name="sitewise-choose-assets"></a>在導覽窗格中，選擇 **Assets (資產)**。

1. 選擇您要確認警示的資產。
**提示**  <a name="sitewise-expand-asset-hierarchy"></a>
您可以選擇箭頭圖示來展開資產階層，以尋找您的資產。

1. 選擇**警示**索引標籤。

1. 選取要確認的警示，然後選擇**動作**以開啟回應動作功能表。

1. 選擇**確認**。警示的狀態變更為**已確認**。

### 暫停警示 （主控台）
<a name="snooze-alarm-console"></a>

您可以暫停警示以暫時停用它。指定休眠警示的持續時間。

**暫停警示 （主控台）**

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

1. <a name="sitewise-choose-assets"></a>在導覽窗格中，選擇 **Assets (資產)**。

1. 選擇您要讓警示休眠的資產。
**提示**  <a name="sitewise-expand-asset-hierarchy"></a>
您可以選擇箭頭圖示來展開資產階層，以尋找您的資產。

1. 選擇**警示**索引標籤。

1. 選取要暫停的警示，然後選擇**動作**以開啟回應動作功能表。

1. 選擇**暫停**。模型隨即開啟，您可以在其中指定休眠的持續時間。

1. 選擇 **Snooze 長度**或輸入**自訂 Snooze 長度**。

1. 選擇**儲存**。警示的狀態會變更為**暫停**。

### 停用警示 （主控台）
<a name="disable-alarm-console"></a>

您可以停用警示，使其不再偵測。停用警示之後，如果您想要偵測警示，則必須再次啟用它。

**停用警示 （主控台）**

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

1. <a name="sitewise-choose-assets"></a>在導覽窗格中，選擇 **Assets (資產)**。

1. 選擇您要停用警示的資產。
**提示**  <a name="sitewise-expand-asset-hierarchy"></a>
您可以選擇箭頭圖示來展開資產階層，以尋找您的資產。

1. 選擇**警示**索引標籤。

1. 選取要停用的警示，然後選擇**動作**以開啟回應動作功能表。

1. 選擇**停用**。警示的狀態會變更為**已停用**。

### 啟用警示 （主控台）
<a name="enable-alarm-console"></a>

您可以啟用警示，以便在停用或休眠後再次偵測。

**啟用警示 （主控台）**

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

1. <a name="sitewise-choose-assets"></a>在導覽窗格中，選擇 **Assets (資產)**。

1. 選擇您要為其啟用警示的資產。
**提示**  <a name="sitewise-expand-asset-hierarchy"></a>
您可以選擇箭頭圖示來展開資產階層，以尋找您的資產。

1. 選擇**警示**索引標籤。

1. 選取要啟用的警示，然後選擇**動作**以開啟回應動作功能表。

1. 選擇**啟用**。警示的狀態會變更為**「正常**」。

### 重設警示 （主控台）
<a name="reset-alarm-console"></a>

您可以重設警示以清除其狀態和最新值。

**重設警示 （主控台）**

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

1. <a name="sitewise-choose-assets"></a>在導覽窗格中，選擇 **Assets (資產)**。

1. 選擇您要為其重設警示的資產。
**提示**  <a name="sitewise-expand-asset-hierarchy"></a>
您可以選擇箭頭圖示來展開資產階層，以尋找您的資產。

1. 選擇**警示**索引標籤。

1. 選取要啟用的警示，然後選擇**動作**以開啟回應動作功能表。

1. 選擇 **Reset (重設)**。警示的狀態會變更為**「正常**」。

## 回應警示 (API)
<a name="respond-to-alarm-cli"></a>

您可以使用 AWS IoT Events API 來確認、暫停、停用、啟用或重設警示。如需詳細資訊，請參閱 *AWS IoT Events API 參考*中的下列操作：
+ [BatchAcknowledgeAlarm](https://docs.aws.amazon.com/iotevents/latest/apireference/API_iotevents-data_BatchAcknowledgeAlarm.html)
+ [BatchSnoozeAlarm](https://docs.aws.amazon.com/iotevents/latest/apireference/API_iotevents-data_BatchSnoozeAlarm.html)
+ [BatchDisableAlarm](https://docs.aws.amazon.com/iotevents/latest/apireference/API_iotevents-data_BatchDisableAlarm.html)
+ [BatchEnableAlarm](https://docs.aws.amazon.com/iotevents/latest/apireference/API_iotevents-data_BatchEnableAlarm.html)
+ [BatchResetAlarm](https://docs.aws.amazon.com/iotevents/latest/apireference/API_iotevents-data_BatchResetAlarm.html)

如需詳細資訊，請參閱《 *AWS IoT Events 開發人員指南*》中的[回應警示](https://docs.aws.amazon.com/iotevents/latest/developerguide/respond-to-alarms.html)。

# 在 中擷取外部警示狀態 AWS IoT SiteWise
<a name="ingest-external-alarm-state"></a>

外部警示是您在 外部評估的警示 AWS IoT SiteWise。當您的資料來源報告您想要擷取的警示狀態時，您可以使用外部警示 AWS IoT SiteWise。

警示狀態屬性需要警示狀態資料值的特定格式。每個資料值必須是序列化為字串的 JSON 物件。然後，您將序列化字串擷取為字串值。如需詳細資訊，請參閱[警示狀態屬性](industrial-alarms.md#alarm-state-properties)。

**Example 警示狀態資料值範例 （未序列化）**  

```
{
  "stateName": "Active"
}
```

**Example 警示狀態資料值範例 （序列化）**  

```
{\"stateName\":\"Active\"}
```

**注意**  
如果您的資料來源無法以此格式報告資料，或者您無法在擷取資料之前將資料轉換為此格式，您可以選擇不使用警示屬性。反之，您可以將資料擷取為具有字串資料類型的測量屬性。如需詳細資訊，請參閱[從設備定義資料串流 （度量）](measurements.md)及[將資料擷取至 AWS IoT SiteWise](industrial-data-ingestion.md)。

# 在 中映射外部警示狀態串流 AWS IoT SiteWise
<a name="connect-alarm-data-streams"></a>

您可以定義屬性別名，將資料串流映射至警示狀態屬性。這可協助您在擷取或擷取資料時輕鬆識別警示狀態屬性。如需屬性別名的詳細資訊，請參閱 [管理 的資料串流 AWS IoT SiteWise](manage-data-streams.md)。

**Topics**
+ [映射外部警示狀態串流 （主控台）](#connect-alarm-data-stream-console)
+ [映射外部警示狀態串流 (AWS CLI)](#connect-alarm-data-stream-cli)

## 映射外部警示狀態串流 （主控台）
<a name="connect-alarm-data-stream-console"></a>

您可以定義屬性別名，將資料串流映射至警示狀態屬性。這可協助您在擷取或擷取資料時輕鬆識別警示狀態屬性。如需屬性別名的詳細資訊，請參閱 [管理 的資料串流 AWS IoT SiteWise](manage-data-streams.md)。

您可以使用 AWS IoT SiteWise 主控台來設定警示狀態屬性的別名。

**設定警示狀態屬性的屬性別名 （主控台）**

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

1. <a name="sitewise-choose-assets"></a>在導覽窗格中，選擇 **Assets (資產)**。

1. 選擇您要為其設定屬性別名的資產。
**提示**  <a name="sitewise-expand-asset-hierarchy"></a>
您可以選擇箭頭圖示來展開資產階層，以尋找您的資產。

1. 選擇**編輯**。

1. 捲動至**警示**並展開 區段。

1. 在**外部警示**下，在**屬性別名中輸入別名 – *選用***。

1. 選擇**儲存**。

## 映射外部警示狀態串流 (AWS CLI)
<a name="connect-alarm-data-stream-cli"></a>

您可以定義屬性別名，將資料串流映射至警示狀態屬性。這可協助您在擷取或擷取資料時輕鬆識別警示狀態屬性。如需屬性別名的詳細資訊，請參閱 [管理 的資料串流 AWS IoT SiteWise](manage-data-streams.md)。

您可以使用 AWS Command Line Interface (AWS CLI) 來設定警示狀態屬性的別名。

您必須知道資產的 `assetId` 和財產的 `propertyId`，才能完成此程序。您也可以使用外部 ID。如果您建立資產但不知道其 `assetId`，請使用 [ListAssets](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_ListAssets.html) API 列出特定模型的所有資產。使用 [DescribeAsset](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_DescribeAsset.html) 操作來檢視資產的屬性，包括屬性 IDs。

**注意**  
[DescribeAsset](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_DescribeAsset.html) 回應包含資產的複合資產模型清單。每個警示都是複合模型。若要尋找 `propertyId`，請尋找警示的複合模型，然後在該複合模型中尋找 `AWS/ALARM_STATE` 屬性。

如需如何設定屬性別名的詳細資訊，請參閱 [更新資產屬性別名](update-data-streams-method.md)。

# 在 中擷取警示狀態資料 AWS IoT SiteWise
<a name="ingest-alarm-state-data"></a>

警示狀態屬性預期警示狀態為序列化 JSON 字串。若要將警示狀態擷取至 中的外部警示 AWS IoT SiteWise，您可以將此序列化字串擷取為時間戳記字串值。下列範例示範作用中警示的狀態資料值。

```
{\"stateName\":\"Active\"}
```

若要識別警示狀態屬性，您可以指定下列其中一項：
+ 您要傳送資料的警示屬性`propertyId`的 `assetId`和 。
+ `propertyAlias`，這是資料串流別名 （例如 `/company/windfarm/3/turbine/7/temperature/high`)。若要使用此選項，您必須先設定警示屬性的別名。若要了解如何設定警示狀態屬性的屬性別名，請參閱 [在 中映射外部警示狀態串流 AWS IoT SiteWise](connect-alarm-data-streams.md)。

下列範例 [BatchPutAssetPropertyValue](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_BatchPutAssetPropertyValue.html) API 承載示範如何格式化外部警示的狀態。此外部警示會在風力發電機每分鐘旋轉 (RPM) 讀數過高時回報。

**Example 警示狀態資料的範例 BatchPutAssetPropertyValue 承載**  

```
{
    "entries": [
      {
        "entryId": "unique entry ID",
        "propertyAlias": "/company/windfarm/3/turbine/7/temperature/high",
        "propertyValues": [
          {
            "value": {
              "stringValue": "{\"stateName\":\"Active\"}"
            },
            "timestamp": {
              "timeInSeconds": 1607550262
            }
          }
        ]
      }
    ]
  }
```
如需如何使用 `BatchPutAssetPropertyValue` API 擷取資料的詳細資訊，請參閱 [使用 AWS IoT SiteWise APIs 擷取資料](ingest-api.md)。  
如需其他擷取資料方式的詳細資訊，請參閱 [將資料擷取至 AWS IoT SiteWise](industrial-data-ingestion.md)。