設定規則

IoT Central 中的規則可作為可自訂的回應工具,可在主動監視連線裝置的事件時觸發。 下列各節說明如何評估規則。 您可以定義規則引發時發生的一或多個動作,本文說明電子郵件、Webhook 和 Azure 監視器動作群組。 若要瞭解其他動作類型,請參閱 使用工作流程將 Azure IoT Central 應用程式與其他雲端服務 整合。

選取目標裝置

使用 [目標裝置] 區段來選取此規則適用的裝置類型。 篩選可讓您進一步精簡應包含的裝置。 篩選會使用裝置範本上的屬性來篩選一組裝置。 篩選本身不會觸發動作。 在下列螢幕擷取畫面中,規則的目標是 冰箱 裝置。 篩選準則指出,規則應該只包含 冰箱, 其中 製造狀態 屬性等於 華盛頓

Screenshot that shows a filter definition in a rule.

使用多重條件

條件會決定規則引發的裝置。 您可將多個條件新增至規則,並指定當所有條件皆成立或任一條件成立時,是否應觸發規則。

在下列螢幕擷取畫面中,條件會檢查溫度是否大於 70° F,濕度小於 10%。 當上述任何語句都成立時,規則會評估為 true 並觸發動作。

Screenshot shows a refrigerator monitor with conditions specified for temperature and humidity.

注意

目前僅支援遙測條件。

在值欄位中使用雲端屬性

您可以從條件的 [值 ] 欄位中,從裝置範本參考雲端屬性。 雲端屬性和遙測值必須有類似的類型。 例如,如果 Temperature 是雙精度浮點數,則只有類型 double 的雲端屬性會顯示為 [值 ] 下拉式清單中的選項

如果您選擇事件種類遙測值,[ ] 下拉式清單會包含 [任何] 選項 [任何 ] 選項表示當應用程式收到該類型的事件時,無論承載為何,都會引發規則。

使用彙總時間範圍

您可以指定時間彙總,以根據時間範圍觸發規則。 規則條件會將遙測資料上的彙總時間範圍評估為輪轉視窗。 若在規則中有任何屬性篩選條件,則會在時間範圍結束時套用。 在下列螢幕擷取畫面中,時間範圍是五分鐘。 規則會每隔五分鐘評估一次最後五分鐘的遙測資料。 資料僅在其對應的時間範圍內評估一次。

A diagram showing how tumbling windows are defined.

建立電子郵件動作

當您建立電子郵件動作時,電子郵件地址必須是 應用程式中的使用者識別碼 ,而且使用者必須至少登入應用程式一次。 您也可以指定要包括在電子郵件中的附註。 IoT Central 顯示當規則引發時電子郵件看起來的樣子範例:

Screenshot that shows an email action for a rule.

建立 Webhook 動作

Webhook 可讓您將 IoT Central 應用程式連線到其他應用程式和服務,以進行遠端監視和通知。 每當 IoT Central 應用程式中觸發規則時,Webhook 會自動通知您連線的其他應用程式和服務。 每當規則引發時,IoT Central 應用程式會將 POST 要求傳送至其他應用程式的 HTTP 端點。 承載包含裝置詳細資料和規則引發程式詳細資料。

在此範例中,您會連線到 RequestBin 以測試通知:

  1. 流覽至 RequestBin

  2. 選取 [建立 RequestBin ]。

  3. 使用其中一個可用方法登入。

  4. 複製 RequestBin 端點的 URL。

  5. 將動作新增至您的規則:

    Screenshot that shows the webhook creation screen.

  6. 選擇 Webhook 動作、輸入顯示名稱,然後將 RequestBin URL 貼上 為回呼 URL

  7. 儲存規則。

現在當規則引發時,您會看到 RequestBin 中會出現新的要求。

承載

當規則引發時,它會對回呼 URL 提出 HTTP POST 要求。 要求包含具有遙測、裝置、規則和應用程式詳細資料的 JSON 承載。 承載看起來像下列 JSON 程式碼片段:

{
    "timestamp": "2020-04-06T00:20:15.06Z",
    "action": {
        "id": "<id>",
        "type": "WebhookAction",
        "rules": [
            "<rule_id>"
        ],
        "displayName": "Webhook 1",
        "url": "<callback_url>"
    },
    "application": {
        "id": "<application_id>",
        "displayName": "Contoso",
        "subdomain": "contoso",
        "host": "contoso.azureiotcentral.com"
    },
    "device": {
        "id": "<device_id>",
        "etag": "<etag>",
        "displayName": "Refrigerator Monitor - 1yl6vvhax6c",
        "instanceOf": "<device_template_id>",
        "simulated": true,
        "provisioned": true,
        "approved": true,
        "cloudProperties": {
            "City": {
                "value": "Seattle"
            }
        },
        "properties": {
            "deviceinfo": {
                "firmwareVersion": {
                    "value": "1.0.0"
                }
            }
        },
        "telemetry": {
            "<interface_instance_name>": {
                "humidity": {
                    "value": 47.33228889360127
                }
            }
        }
    },
    "rule": {
        "id": "<rule_id>",
        "displayName": "Humidity monitor"
    }
}

如果規則監視一段時間的匯總遙測,承載會包含如下所示的遙測區段:

{
    "telemetry": {
        "<interface_instance_name>": {
            "Humidity": {
                "avg": 39.5
            }
        }
    }
}

資料格式變更注意事項

如果您在 2020 年 4 月 3 日之前 建立並儲存了一或多個 Webhook,請刪除 Webhook 並建立新的 Webhook。 較舊的 Webhook 會使用已被取代的承載格式:

{
    "id": "<id>",
    "displayName": "Webhook 1",
    "timestamp": "2019-10-24T18:27:13.538Z",
    "rule": {
        "id": "<id>",
        "displayName": "High temp alert",
        "enabled": true
    },
    "device": {
        "id": "rm1",
        "displayName": "Refrigerator Monitor - rm1",
        "instanceOf": "<device-template-id>",
        "simulated": true,
        "provisioned": true,
        "approved": true
    },
    "data": [{
        "@id": "<id>",
        "@type": ["Telemetry"],
        "name": "temperature",
        "displayName": "Temperature",
        "value": 66.27310467496761,
        "interfaceInstanceName": "sensors"
    }],
    "application": {
        "id": "<id>",
        "displayName": "x - Store Analytics Checkout",
        "subdomain": "<subdomain>",
        "host": "<host>"
    }
}

建立 Azure 監視器群組動作

本節說明如何使用 Azure 監視器 動作群組 ,將多個動作附加至 IoT Central 規則。 您可以將動作群組附加至多個規則。 動作群組是由 Azure 訂用帳戶的「擁有者」所定義的通知喜好設定集合。

您可以在 Azure 入口網站或 Azure Resource Manager 範本 中建立 和管理動作群組。

動作群組可以:

  • 傳送通知,例如電子郵件、簡訊或撥打語音電話。
  • 執行動作,例如呼叫 Webhook。

下列螢幕擷取畫面顯示傳送電子郵件和簡訊通知並呼叫 Webhook 的動作群組:

Screenshot that shows an action group in the Azure portal.

若要在 IoT Central 規則中使用動作群組,動作群組必須與 IoT Central 應用程式位於相同的 Azure 訂用帳戶中。

當您在 IoT Central 中將動作新增至規則時,請選取 [Azure 監視器動作群組 ]。

從您的 Azure 訂用帳戶選擇動作群組:

Screenshot that shows an action group in an IoT Central rule.

選取 [儲存]。 動作群組現在會出現在觸發規則時要執行的動作清單中。

下表摘要說明傳送至支援動作類型的資訊:

動作類型 輸出格式
電子郵件 標準 IoT Central 電子郵件範本
簡訊 Azure IoT Central 警示: ${applicationName} - "${ruleName}" triggered on "${deviceName}" at ${triggerDate} ${triggerTime}
語音 Azure I.O.T Central 警示:規則 "${ruleName}" triggered on device "${deviceName}" at ${triggerDate} ${triggerTime}, in application ${applicationName}
Webhook { "schemaId" : "AzureIoTCentralRuleWebhook", "data": {"regular webhook payload"}}

下列文字是動作群組的簡訊範例:

iotcentral: Azure IoT Central alert: Contoso - "Low pressure alert" triggered on "Motion sensor 2" at March 20, 2019 10:12 UTC

使用含有 IoT Edge 模組的規則

A 限制適用於應用於 IoT Edge 模組的規則。 來自不同模組的遙測規則並不會評估為有效規則。 以下列範例為例,規則的第一個條件是來自模組 A 的溫度遙測。規則的第二個條件是在模組 B 上的濕度遙測上。因為這兩個條件來自不同的模組,所以您有一組不正確條件。 規則無效,當您嘗試儲存規則時,會擲回錯誤。

下一步

既然您已瞭解如何在 Azure IoT Central 應用程式中設定規則,您可以瞭解如何使用 Power Automate 或 Azure Logic Apps 設定 進階規則