Azure IoT 中樞作為事件方格來源
本文提供 Azure IoT 中樞事件的屬性和結構描述。 如需事件結構描述的簡介,請參閱 Azure Event Grid 事件結構描述。
可用的事件類型
Azure IoT 中樞會發出下列事件類型:
事件類型 | 描述 |
---|---|
Microsoft.Devices.DeviceCreated | 裝置向 IoT 中樞註冊時發佈。 |
Microsoft.Devices.DeviceDeleted | 從 IoT 中樞刪除裝置時發佈。 |
Microsoft.Devices.DeviceConnected | 裝置連線到 IoT 中樞時發行。 |
Microsoft.Devices.DeviceDisconnected | 裝置從 IoT 中樞中斷連線時發佈。 |
Microsoft.Devices.DeviceTelemetry | 遙測訊息傳送至 IoT 中樞時發佈。 |
事件範例
DeviceConnected 和 DeviceDisconnected 事件的結構描述具有相同的結構。 此事件範例顯示裝置連線至 IoT 中樞註冊時引發的事件結構描述:
[{
"id": "f6bbf8f4-d365-520d-a878-17bf7238abd8",
"topic": "/SUBSCRIPTIONS/<subscription ID>/RESOURCEGROUPS/<resource group name>/PROVIDERS/MICROSOFT.DEVICES/IOTHUBS/<hub name>",
"subject": "devices/LogicAppTestDevice",
"eventType": "Microsoft.Devices.DeviceConnected",
"eventTime": "2018-06-02T19:17:44.4383997Z",
"data": {
"deviceConnectionStateEventInfo": {
"sequenceNumber":
"000000000000000001D4132452F67CE200000002000000000000000000000001"
},
"hubName": "egtesthub1",
"deviceId": "LogicAppTestDevice",
"moduleId" : "DeviceModuleID"
},
"dataVersion": "1",
"metadataVersion": "1"
}]
當遙測事件傳送至 IoT 中樞時,就會引發 DeviceTelemetry 事件。 此事件的範例結構描述如下所示。
[{
"id": "9af86784-8d40-fe2g-8b2a-bab65e106785",
"topic": "/SUBSCRIPTIONS/<subscription ID>/RESOURCEGROUPS/<resource group name>/PROVIDERS/MICROSOFT.DEVICES/IOTHUBS/<hub name>",
"subject": "devices/LogicAppTestDevice",
"eventType": "Microsoft.Devices.DeviceTelemetry",
"eventTime": "2019-01-07T20:58:30.48Z",
"data": {
"body": {
"Weather": {
"Temperature": 900
},
"Location": "USA"
},
"properties": {
"Status": "Active"
},
"systemProperties": {
"iothub-content-type": "application/json",
"iothub-content-encoding": "utf-8",
"iothub-connection-device-id": "d1",
"iothub-connection-auth-method": "{\"scope\":\"device\",\"type\":\"sas\",\"issuer\":\"iothub\",\"acceptingIpFilterRule\":null}",
"iothub-connection-auth-generation-id": "123455432199234570",
"iothub-enqueuedtime": "2019-01-07T20:58:30.48Z",
"iothub-message-source": "Telemetry"
}
},
"dataVersion": "",
"metadataVersion": "1"
}]
DeviceCreated 和 DeviceDeleted 事件的結構描述具有相同的結構。 此事件範例顯示向 IoT 中樞註冊裝置時引發之事件的結構描述:
[{
"id": "56afc886-767b-d359-d59e-0da7877166b2",
"topic": "/SUBSCRIPTIONS/<subscription ID>/RESOURCEGROUPS/<resource group name>/PROVIDERS/MICROSOFT.DEVICES/IOTHUBS/<hub name>",
"subject": "devices/LogicAppTestDevice",
"eventType": "Microsoft.Devices.DeviceCreated",
"eventTime": "2018-01-02T19:17:44.4383997Z",
"data": {
"twin": {
"deviceId": "LogicAppTestDevice",
"etag": "AAAAAAAAAAE=",
"deviceEtag": "null",
"status": "enabled",
"statusUpdateTime": "0001-01-01T00:00:00",
"connectionState": "Disconnected",
"lastActivityTime": "0001-01-01T00:00:00",
"cloudToDeviceMessageCount": 0,
"authenticationType": "sas",
"x509Thumbprint": {
"primaryThumbprint": null,
"secondaryThumbprint": null
},
"version": 2,
"properties": {
"desired": {
"$metadata": {
"$lastUpdated": "2018-01-02T19:17:44.4383997Z"
},
"$version": 1
},
"reported": {
"$metadata": {
"$lastUpdated": "2018-01-02T19:17:44.4383997Z"
},
"$version": 1
}
}
},
"hubName": "egtesthub1",
"deviceId": "LogicAppTestDevice"
},
"dataVersion": "1",
"metadataVersion": "1"
}]
事件屬性
所有事件都包含相同的最高層級資料:
屬性 | 類型 | 描述 |
---|---|---|
id |
string | 事件的唯一識別碼。 |
topic |
string | 事件來源的完整資源路徑。 此欄位無法寫入。 事件方格提供此值。 |
subject |
string | 發行者定義事件主旨的路徑。 |
eventType |
string | 此事件來源已註冊的事件類型之一。 |
eventTime |
string | 事件產生的時間,以提供者的 UTC 時間為準。 |
data |
object | IoT 中樞事件資料。 |
dataVersion |
string | 資料物件的結構描述版本。 發行者會定義結構描述版本。 |
metadataVersion |
string | 事件中繼資料的結構描述版本。 「事件方格」會定義最上層屬性的結構描述。 事件方格提供此值。 |
對於所有 IoT 中樞事件,資料物件都會包含下列屬性:
屬性 | 類型 | 描述 |
---|---|---|
hubName |
string | 已建立或刪除裝置的 IoT 中樞名稱。 |
deviceId |
string | 裝置的唯一識別碼。 此區分大小寫的字串最長為 128 個字元,並支援 ASCII 7 位元英數字元和下列特殊字元:- : . + % _ # * ? ! ( ) , = @ ; $ ' 。 |
每個事件發行者有不同的資料物件內容。
對於裝置連線和裝置中斷連線 IoT 中樞事件,資料物件會包含下列屬性:
屬性 | 類型 | 描述 |
---|---|---|
moduleId |
string | 模組的唯一識別碼。 針對模組裝置才會輸出此欄位。 此區分大小寫的字串最長為 128 個字元,並支援 ASCII 7 位元英數字元和下列特殊字元:- : . + % _ # * ? ! ( ) , = @ ; $ ' 。 |
deviceConnectionStateEventInfo |
object | 裝置連線狀態事件資訊 |
sequenceNumber |
string | 一個號碼,有助於指出裝置連線或裝置中斷連線事件的順序。 最新的事件會有高於前一個事件的序號。 此號碼的變動有可能超過 1,但只會增加不會減少。 請參閱如何使用序號。 |
針對裝置遙測IoT 中樞事件,資料物件包含 IoT 中樞訊息格式的裝置到雲端訊息,且具有下列屬性:
屬性 | 類型 | 描述 |
---|---|---|
body |
string | 來自裝置的訊息內容。 |
properties |
string | 應用程式屬性是可新增至訊息的使用者定義字串。 這些欄位是選擇性的。 |
system properties |
string | 系統屬性可協助識別訊息的內容和來源。 裝置遙測訊息必須是有效的 JSON 格式,且 contentType 設定為 JSON,而 contentEncoding 在訊息系統屬性中設定為 UTF-8。 如果未設定,則 IoT 中樞將會以 Base 64 編碼格式寫入訊息。 |
對於裝置建立和裝置刪除 IoT 中樞事件,資料物件會包含下列屬性:
屬性 | 類型 | 描述 |
---|---|---|
twin |
object | 裝置對應項的相關資訊,也就是應用程式裝置中繼資料的雲端表示。 |
deviceID |
string | 裝置對應項的唯一識別碼。 |
etag |
string | 可確保裝置對應項的更新具有一致性的驗證程式。 對每個裝對應項而言,每個 etag 保證都是唯一的。 |
deviceEtag |
string | 可確保裝置登錄的更新具有一致性的驗證程式。 對每個裝置登錄而言,每個 deviceEtag 保證都是唯一的。 |
status |
string | 指出是否已啟用或停用裝置對應項。 |
statusUpdateTime |
string | 上次更新裝置對應項狀態的 ISO8601 時間戳記。 |
connectionState |
string | 指出裝置是否已連線或中斷連線。 |
lastActivityTime |
string | 上次活動的 ISO8601 時間戳記。 |
cloudToDeviceMessageCount |
整數 | 傳送到此裝置的雲端到裝置訊息計數。 |
authenticationType |
string | 用於這個裝置的驗證類型:SAS 、SelfSigned 或 CertificateAuthority 。 |
x509Thumbprint |
string | 指紋是 x509 憑證的唯一值,通常用來尋找憑證存放區中的特定憑證。 指紋是使用 SHA1 演算法所動態產生的,並未實際存在於憑證中。 |
primaryThumbprint |
string | x509 憑證的主要指紋。 |
secondaryThumbprint |
string | x509 憑證的次要指紋。 |
version |
整數 | 每次更新裝置對應項時,整數就會遞增 1。 |
desired |
object | 只能由應用程式後端寫入,並可由裝置讀取的屬性部分。 |
reported |
object | 只能由裝置寫入,並可由應用程式後端讀取的屬性部分。 |
lastUpdated |
string | 上次更新裝置對應項屬性的 ISO8601 時間戳記。 |
教學課程和操作說明
標題 | 描述 |
---|---|
使用 Logic Apps 來傳送 Azure IoT 中樞事件的相關電子郵件通知 | 每當有裝置新增至您的 IoT 中樞時,邏輯應用程式就會傳送電子郵件通知。 |
使用事件方格來觸發動作以回應「IoT 中樞」事件 | 整合 IoT 中樞與事件方格的概觀。 |
排序裝置連線和裝置中斷連線事件 | 說明如何排序裝置連線狀態事件。 |
下一步
- 如需 Azure Event Grid 的簡介,請參閱什麼是 Event Grid?
- 若要深入了解 IoT 中樞與 Event Grid 一起運作的方式,請參閱使用 Event Grid 觸發動作來回應 IoT 中樞事件。