共用方式為


設定規則

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

選取目標裝置

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

顯示規則中篩選定義的螢幕擷取畫面。

使用多重條件

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

在下列螢幕擷取畫面中,條件會檢查何時溫度大於 70°,濕度小於 10%。 當這些陳述式全都是 True 時,規則會評估為 True 並觸發動作。

螢幕擷取畫面顯示已指定溫度和濕度條件的冰箱監視器。

注意

目前僅支援遙測條件。

在值欄位中使用雲端屬性

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

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

使用彙總時間範圍

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

顯示如何定義輪轉視窗的圖表。

建立電子郵件動作

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

顯示規則電子郵件動作的螢幕擷取畫面。

建立 Webhook 動作

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

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

  1. 瀏覽至 RequestBin

  2. 選取 [建立 RequestBin]

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

  4. 複製 RequestBin 端點的 URL。

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

    顯示 Webhook 建立畫面的螢幕擷取畫面。

  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 範本建立和管理動作群組。

動作群組可以:

  • 傳送電子郵件、SMS 等通知或撥打語音電話。
  • 執行呼叫 Webhook 之類的動作。

下列螢幕擷取畫面顯示一個動作群組,其會傳送電子郵件和 SMS 通知,並呼叫 Webhook:

顯示 Azure 入口網站中動作群組的螢幕擷取畫面。

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

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

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

顯示 IoT Central 規則中動作群組的螢幕擷取畫面。

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

下表總結傳送至所支援動作類型的資訊:

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

下列文字是來自動作群組的範例 SMS 訊息:

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 來設定進階規則