你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
使用 Azure 事件网格可以通过在下游业务应用程序中触发操作,对 IoT 中心内的事件做出反应。
本文逐步讲解一个使用 IoT 中心和事件网格的示例配置。 在本文末尾,我们将设置一个 Azure 逻辑应用,使其在每次将设备连接到 IoT 中心或与其断开连接时,都会发送一封通知电子邮件。 事件网格可用于及时通知关键设备断开连接。 指标和诊断可能需要几分钟(例如 20 分钟或更长时间)才能显示在日志/警报中。 对于关键基础结构而言,较长的处理时间可能是不可接受的。
如果没有 Azure 帐户,请在开始前创建一个免费帐户。
Prerequisites
- 来自 Azure 逻辑应用支持的任何电子邮件提供程序(例如 Office 365 Outlook 或 Outlook.com)的电子邮件帐户。 此电子邮件帐户用于发送事件通知。
在 Azure Cloud Shell 中使用 Bash 环境。 有关详细信息,请参阅 Azure Cloud Shell 入门。
如果要在本地运行 CLI 引用命令,请安装 Azure CLI。 如果在 Windows 或 macOS 上运行,请考虑在 Docker 容器中运行 Azure CLI。 有关详细信息,请参阅如何在 Docker 容器中运行 Azure CLI。
如果使用的是本地安装,请使用 az login 命令登录到 Azure CLI。 要完成身份验证过程,请遵循终端中显示的步骤。 有关其他登录选项,请参阅 使用 Azure CLI 向 Azure 进行身份验证。
如果系统发出提示,则在首次使用时安装 Azure CLI 扩展。 有关扩展的详细信息,请参阅 使用和管理 Azure CLI 中的扩展。
运行 az version 以查找所安装的版本和依赖库。 若要升级到最新版本,请运行 az upgrade。
创建 IoT 中心
可使用门户中的 Azure Cloud Shell 终端快速创建新的 IoT 中心。
登录 Azure 门户。
在页面右上角选择“Cloud Shell”按钮。
运行以下命令来创建新资源组:
az group create --name {your resource group name} --location westus运行以下命令创建 IoT 中心:
az iot hub create --name {your iot hub name} --resource-group {your resource group name} --sku S1最小化 Cloud Shell 终端。 将在本教程的后面部分返回到 shell。
创建逻辑应用
接下来,创建一个逻辑应用并添加一个 HTTP 事件网格触发器来处理来自 IoT 中心的请求。
创建逻辑应用资源
在 Azure 门户中,选择“ 创建资源”,然后在搜索框中键入“逻辑应用”,然后按 Enter。 从结果中选择“逻辑应用”。
在下一个屏幕上选择“创建”。
在“ 创建逻辑应用 ”页上,选择“ 消耗”(多租户),然后选择“ 选择”。
在 “创建逻辑应用”(多租户) 页上,为逻辑应用提供订阅中的唯一名称,然后选择与 IoT 中心相同的订阅、资源组和位置。
选择“查看 + 创建”。
验证设置,然后选择“创建”。
创建资源后,选择“转到资源”。
在资源菜单中,选择开发工具下的逻辑应用模板。
在工作窗格中,选择 “空白”工作流 ,以便可以从空工作流开始。
选择触发器
触发器是启动逻辑应用的特定事件。 在本教程中,触发工作流的触发器通过 HTTP 接收请求。
在工作流设计器中,选择“添加触发器”。
在连接器和触发器搜索栏中,键入 HTTP。
滚动浏览结果并选择“请求 - 当收到 HTTP 请求时”作为触发器。
在触发器配置框中,选择 “使用示例有效负载生成架构”。
复制以下内容
json,并将占位符值<>替换为你自己的值。将 设备连接事件架构 JSON 粘贴到 输入或粘贴示例 JSON 负载 的文本框中,然后选择“完成”。
[{ "id": "f6bbf8f4-d365-520d-a878-17bf7238abd8", "topic": "/SUBSCRIPTIONS/<azure 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": "<hub name>", "deviceId": "LogicAppTestDevice", "moduleId" : "DeviceModuleID" }, "dataVersion": "1", "metadataVersion": "1" }]重要说明
请务必将 JSON 片段粘贴到“使用示例有效负载生成架构”链接提供的框中,而不是直接粘贴到“请求正文 JSON 架构”框中。 示例有效负载链接提供了一种基于 JSON 片段生成 JSON 内容的方法。 最终出现在请求正文中的 JSON 与 JSON 片段不同。
当设备连接到 IoT 中心时发布此事件。
在设计器工具栏上选择“保存”。
注意
你可能会收到一条弹出通知,指出,请记住在 请求中包含一个设置为 application/json 的 Content-Type 标头。 可以放心地忽略此建议,并转到下一部分。
关闭触发器信息框。
创建操作
操作是在触发器启动逻辑应用工作流之后发生的任何步骤。 在本教程中,操作是从电子邮件提供程序发送电子邮件通知。
在设计器上,选择触发器下的加号(+),然后选择 “添加操作”。
在 “添加操作” 框中,搜索 Outlook。
根据你的电子邮件提供程序,找到并选择匹配的连接器。 本教程使用 Outlook.com 作为其电子邮件提供商。 若要使用相应的连接器,请在 Outlook.com 下选择 发送电子邮件(V2) 操作。 使用其他电子邮件提供程序时执行的步骤类似。 或者,可以使用 Office 365 Outlook 跳过登录步骤。
选择“登录”并登录到你的电子邮件帐户。 选择“是”,允许应用访问你的信息。
生成电子邮件模板。
收件人:输入接收通知电子邮件的电子邮件地址。 本教程使用你可以访问的测试电子邮件帐户。
主题:填写主题文本。 选择 “主题 ”文本框时,可以选择文本框旁边显示的函数图标或键入斜杠(/)字符,然后选择 “插入动态内容 列表”选项以包括动态内容。 例如,本教程使用
IoT Hub alert: {eventType}。
选择
eventType后,将看到到目前为止的电子邮件表单输出。 选择“发送和电子邮件(V2)”以编辑电子邮件正文。- 正文:为电子邮件写入文本。 在选择器工具中选择 JSON 属性,以包含基于事件数据的动态内容。 如果看不到选择器工具,请选择 “正文 ”文本框,然后选择文本框旁显示的函数图标,以包含表达式和动态内容。 如果未显示所需字段,请在“动态内容”屏幕中选择“查看更多”,以包含上一个操作中的字段。
电子邮件模板可能如以下示例所示:
在工作流设计器中选择“ 保存 ”。
复制 HTTP URL
在退出工作流设计器之前,请复制逻辑应用要侦听的触发器 URL。 稍后要使用此 URL 来配置事件网格。
为 IoT 中心事件配置订阅
在本部分中,将 IoT 中心配置为在事件发生时发布事件。
在 Azure 门户中导航到 IoT 中心。 可以通过从 Azure 仪表板中选择“IoT 中心”来找到 IoT 中心,然后从资源列表中选择 IoT 中心实例。
选择“事件”。
选择“事件订阅”。
使用以下值创建事件订阅:
在“事件订阅详细信息”部分:
- 为事件订阅提供一个名称。
- 对于“事件架构”,请选择“事件网格架构”。
在“主题详细信息”部分:
- 确认“主题类型”是否设置为“IoT 中心”。
- 确认 IoT 中心的名称是否设置为“源资源”字段的值。
- 输入要为你创建的系统主题的名称。 若要了解系统主题,请参阅 Azure 事件网格中的系统主题。
在“事件类型”部分:
在“终结点详细信息”部分:
- 选择“终结点类型”作为“Web Hook”。
- 选择一个终结点,粘贴从逻辑应用复制的 URL,并确认选择。
完成后,窗格应如以下示例所示:
选择“创建”。
模拟新设备连接并发送遥测数据
使用 Azure CLI 快速模拟设备连接来测试逻辑应用。
选择 Cloud Shell 按钮以重新打开终端。
运行以下命令创建模拟设备标识:
az iot hub device-identity create --device-id simDevice --hub-name {YourIoTHubName}处理可能需要一分钟时间。 处理完成后,控制台中会显示 JSON 打印输出。
运行以下命令以模拟将设备连接到 IoT 中心并发送遥测数据:
az iot device simulate -d simDevice -n {YourIoTHubName}模拟设备连接到 IoT 中心时,会收到一封电子邮件,通知你“DeviceConnected”事件。
模拟完成后,你会收到一封电子邮件,通知你“DeviceDisconnected”事件。
清理资源
本教程使用的资源会在 Azure 订阅中产生费用。 学习完本教程并测试结果后,请禁用或删除不再想要保留的资源。
若要删除在本教程中创建的所有资源,请删除资源组。
选择“资源组”,然后选择本教程中创建的资源组。
在“资源组”页上,选择“删除资源组”。 系统会提示你输入资源组名称,然后你可以将其删除。 同时会删除其中包含的所有资源。
Next steps
- 详细了解如何通过使用事件网格触发操作来对 IoT 中心事件做出反应。
- 了解如何订阅设备已连接和已断开连接事件
- 了解事件网格的其他作用。
有关支持的逻辑应用连接器的完整列表,请参阅: