Compartilhar via

作为事件网格源Azure IoT 中心

本文提供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 ConnectedDevice 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 CreatedDevice 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 中心与事件网格集成概述。
对已连接设备和设备断开连接的事件进行排序 演示如何对设备连接状态事件进行排序。

后续步骤