Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
本文提供Azure IoT 中心事件的属性和架构。 有关事件架构的简介,请参阅Azure 事件网格事件架构。
可用事件类型
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",
"source": "/SUBSCRIPTIONS/<subscription ID>/RESOURCEGROUPS/<resource group name>/PROVIDERS/MICROSOFT.DEVICES/IOTHUBS/<hub name>",
"subject": "devices/LogicAppTestDevice",
"type": "Microsoft.Devices.DeviceConnected",
"time": "2018-06-02T19:17:44.4383997Z",
"data": {
"deviceConnectionStateEventInfo": {
"sequenceNumber":
"000000000000000001D4132452F67CE200000002000000000000000000000001"
},
"hubName": "egtesthub1",
"deviceId": "LogicAppTestDevice",
"moduleId" : "DeviceModuleID"
},
"specversion": "1.0"
}]
当遥测事件发送到IoT 中心时,将引发 DeviceTelemetry 事件。 下面显示了此事件的示例架构。
[{
"id": "9af86784-8d40-fe2g-8b2a-bab65e106785",
"source": "/SUBSCRIPTIONS/<subscription ID>/RESOURCEGROUPS/<resource group name>/PROVIDERS/MICROSOFT.DEVICES/IOTHUBS/<hub name>",
"subject": "devices/LogicAppTestDevice",
"type": "Microsoft.Devices.DeviceTelemetry",
"time": "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"
}
},
"specversion": "1.0"
}]
DeviceCreated 和 DeviceDeleted 事件的架构具有相同的结构。 此示例事件显示当设备注册到 IoT 中心时引发的事件的架构:
[{
"id": "56afc886-767b-d359-d59e-0da7877166b2",
"source": "/SUBSCRIPTIONS/<subscription ID>/RESOURCEGROUPS/<resource group name>/PROVIDERS/MICROSOFT.DEVICES/IOTHUBS/<hub name>",
"subject": "devices/LogicAppTestDevice",
"type": "Microsoft.Devices.DeviceCreated",
"time": "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"
},
"specversion": "1.0"
}]
事件属性
所有事件都包含相同的顶级数据:
| 财产 | 类型 | 说明 |
|---|---|---|
id |
字符串 | 事件的唯一标识符。 |
source |
字符串 | 事件源的完整资源路径。 此字段不可写入。 事件网格提供此值。 |
subject |
字符串 | Publisher定义的事件主题路径。 |
type |
字符串 | 该事件源的其中一种注册事件类型。 |
time |
字符串 | 事件生成的时间是基于提供者的 UTC 时间。 |
data |
对象 | IoT 中心事件数据。 |
specversion |
字符串 | CloudEvents 架构规范版本。 |
对于所有IoT 中心事件,数据对象包含以下属性:
| 财产 | 类型 | 说明 |
|---|---|---|
hubName |
字符串 | 创建或删除设备的IoT 中心的名称。 |
deviceId |
字符串 | 设备的唯一标识符。 此区分大小写的字符串长度最多可为 128 个字符,并支持 ASCII 7 位字母数字字符以及以下特殊字符: - : . + % _ # * ? ! ( ) , = @ ; $ ' |
数据对象的内容对于每个事件发布者都是不同的。
对于 Device Connected 和 Device Disconnected IoT 中心 事件,数据对象包含以下属性:
| 财产 | 类型 | 说明 |
|---|---|---|
moduleId |
字符串 | 模块的唯一标识符。 此字段仅针对模块设备输出。 此区分大小写的字符串长度最多可为 128 个字符,并支持 ASCII 7 位字母数字字符以及以下特殊字符: - : . + % _ # * ? ! ( ) , = @ ; $ ' |
deviceConnectionStateEventInfo |
对象 | 设备连接状态事件信息 |
sequenceNumber |
字符串 | 一个数字,可帮助指示设备已连接或设备断开连接事件的顺序。 最新事件将具有高于上一个事件的序列号。 此数字可能会更改超过 1,但严格增加。 了解如何 使用序列号。 |
对于 Device Telemetry IoT 中心 事件,数据对象以 IoT hub 消息格式包含设备到云的消息具有以下属性:
| 财产 | 类型 | 说明 |
|---|---|---|
body |
字符串 | 来自设备的消息的内容。 |
properties |
字符串 | 应用程序属性是用户定义的字符串,可以添加到消息。 这些字段为可选字段。 |
system properties |
字符串 | 系统属性 有助于识别消息的内容和源。 设备遥测消息必须采用有效的 JSON 格式,并且 contentType 设置为 JSON,并且消息系统属性中 contentEncoding 设置为 UTF-8。 如果未设置,则IoT 中心将以 base 64 编码格式写入消息。 |
对于 Device Created 和 Device Deleted IoT 中心 事件,数据对象包含以下属性:
| 财产 | 类型 | 说明 |
|---|---|---|
twin |
对象 | 有关设备孪生的信息,它是应用程序设备元数据的云表示形式。 |
deviceID |
字符串 | 设备孪生的唯一标识符。 |
etag |
字符串 | 用于确保设备孪生更新一致性的有效验证程序。 每个 etag 保证每个设备孪生是唯一的。 |
deviceEtag |
字符串 | 用于确保设备注册表更新一致性的有效验证程序。 每个 deviceEtag 保证每个设备注册表是唯一的。 |
status |
字符串 | 指示设备孪生是启用或禁用的。 |
statusUpdateTime |
字符串 | 上次设备孪生状态更新的ISO8601时间戳。 |
connectionState |
字符串 | 指示设备是已连接还是断开连接。 |
lastActivityTime |
字符串 | 最后一个活动的ISO8601时间戳。 |
cloudToDeviceMessageCount |
整数 | 发送到此设备的云到设备消息计数。 |
authenticationType |
字符串 | 用于此设备的身份验证类型:或SASSelfSignedCertificateAuthority。 |
x509Thumbprint |
字符串 | 指纹是 x509 证书的唯一值,通常用于在证书存储中查找特定证书。 指纹是使用 SHA1 算法动态生成的,在证书中不存在物理上。 |
primaryThumbprint |
字符串 | x509 证书的主指纹。 |
secondaryThumbprint |
字符串 | x509 证书的辅助指纹。 |
version |
整数 | 每次更新设备孪生时递增一个整数。 |
desired |
对象 | 一部分属性,这些属性只能由应用程序后端写入,并由设备读取。 |
reported |
对象 | 一部分属性,这些属性只能由设备写入,并由应用程序后端读取。 |
lastUpdated |
字符串 | 上次设备孪生属性更新的ISO8601时间戳。 |
教程与操作方法
| 标题 | 说明 |
|---|---|
| 使用逻辑应用发送有关Azure IoT 中心事件的电子邮件通知 | 每次将设备添加到IoT 中心时,逻辑应用都会发送通知电子邮件。 |
| 使用事件网格触发操作来IoT 中心事件 | 将IoT 中心与事件网格集成概述。 |
| 对已连接设备和设备断开连接的事件进行排序 | 演示如何对设备连接状态事件进行排序。 |
后续步骤
- 有关Azure 事件网格简介,请参阅 什么是事件网格?
- 若要了解IoT 中心和事件网格如何协同工作,请参阅 使用事件网格触发操作IoT 中心事件。