你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
使用 Azure 逻辑应用监视来自 IoT 中心的传入设备遥测,并在触发警报时发送通知。
Azure 逻辑应用 可帮助跨本地和云服务、多个企业和各种协议协调工作流。 逻辑应用以触发器开头,然后是一个或多个可以使用内置控件(如条件和迭代器)进行顺序排列的动作。 这种灵活性使逻辑应用成为 IoT 监视方案的理想 IoT 解决方案。 例如,从设备到达 IoT 中心终结点的数据可以启动逻辑应用工作流,将数据存储在 Azure 存储 blob 中,发送电子邮件警报来警告数据异常,安排技术人员访问(如果设备报告故障等)。
将在本教程中执行以下任务:
创建服务总线队列。 在 IoT 中心创建一个路由,如果消息包含异常温度读数,则将消息发送到服务总线队列。 创建一个逻辑应用,用于监视传入队列的消息并发送电子邮件警报。
运行在您的设备上的客户端代码为其发送到 IoT 中心的每个遥测消息设置了应用程序属性temperatureAlert。 当客户端代码检测到高于给定阈值的温度时,它将此属性设置为 true;否则,它将属性设置为 false。
到达您的 IoT 中心的消息如下所示:消息正文中包含遥测数据,应用程序属性中包含temperatureAlert属性(系统属性未显示)。
{
"body": {
"messageId": 18,
"deviceId": "Raspberry Pi Web Client",
"temperature": 27.796111770668457,
"humidity": 66.77637926438427
},
"applicationProperties": {
"temperatureAlert": "false"
}
}
如果没有 Azure 订阅,请在开始之前创建一个免费帐户。
先决条件
在开始本教程之前准备以下先决条件。
有效的 Azure 订阅。
订阅中的 IoT 集线器。
将温度数据发送到 Azure IoT 中心的客户端应用。 本教程根据名为
temperatureAlert的消息属性筛选设备发送到云的消息。 使用此属性生成消息的一些示例包括:- .NET SDK: SimulatedDevice
- Java SDK: send-event
- Node.js SDK: simple_sample_device
- C SDK: iothub_II_client_shared_sample
- 无代码: Raspberry Pi 联机模拟器
创建服务总线命名空间和队列
创建服务总线命名空间和队列。 在本文后面部分,我们将在 IoT 中心创建路由规则,以将包含温度警报的消息定向到服务总线队列。 逻辑应用监视传入消息的队列,并为每个警报发送通知。
创建服务总线命名空间
在 Azure 门户中,使用搜索栏搜索并选择 服务总线。
选择 “创建 ”以创建服务总线命名空间。
在 “创建命名空间 ”窗格中,提供以下信息:
参数 价值 Subscription 选择包含 IoT 中心的同一订阅。 资源组 选择包含 IoT 中心的同一资源组。 命名空间名称 为服务总线命名空间提供名称。 命名空间在 Azure 中必须是唯一的。 位置 选择 IoT 中心使用的相同位置。 定价层 从下拉列表中选择 “基本 ”。 基本层足以用于本教程。 选择“查看 + 创建”。
选择 创建。
等待部署完成,然后选择“转到资源”。
将服务总线队列添加到命名空间
在服务总线命名空间的 “概述 ”页上,选择“ 队列”。
在“ 名称” 字段中,提供队列的名称。 接受其他字段的默认值,然后选择“ 创建”。
在服务总线命名空间中,从资源菜单的“设置”部分选择“共享访问策略”。
选择 RootManageSharedAccessKey 策略以打开其详细信息。
复制 主连接字符串 的值,并在配置逻辑应用时将其保存到本教程的后面部分使用。
将自定义终结点和路由规则添加到 IoT 中心
将服务总线队列的自定义终结点添加到 IoT 中心。 然后,创建一个消息路由规则,将包含温度警报的消息定向到该终结点,在那里它们将由逻辑应用程序处理。 路由规则使用路由查询 temperatureAlert = "true"根据设备上运行的客户端代码设置的应用程序属性的值 temperatureAlert 转发消息。 若要了解详细信息,请参阅 基于消息属性的消息路由查询。
添加自定义终结点和路由
在 Azure 门户中,转到 IoT 中心。
在 “中心设置”下的“资源”菜单中,选择“ 消息路由 ”,然后选择“ 添加”。
在 “终结点 ”选项卡上,通过提供以下信息为服务总线队列创建终结点:
参数 价值 终结点类型 选择 服务总线队列。 端点名称 为映射到服务总线队列的新终结点提供名称。 服务总线命名空间 使用下拉菜单选择在上一部分创建的服务总线命名空间。 服务总线队列 使用下拉菜单选择在命名空间中创建的服务总线队列。
选择“ 创建 + 下一步”。
在“ 路由 ”选项卡上,输入以下信息以创建指向服务总线队列终结点的路由:
参数 价值 名称 提供一个唯一的路由名称。 数据源 保留默认 设备遥测消息 数据源。 路由查询 输入 temperatureAlert = "true"为查询字符串。
选择“ 创建 + 跳过扩充”。
为通知配置逻辑应用
在上一部分中,您已将 IoT 中心设置为将包含温度警报的消息路由到您的服务总线队列。 现在,设置一个逻辑应用来监视服务总线队列,并在将消息添加到队列时发送电子邮件通知。
创建逻辑应用
在 Azure 门户中,搜索并选择 逻辑应用。
选择 “添加” 以创建新的逻辑应用。
在“创建逻辑应用的基本信息”选项卡上输入以下信息:
参数 价值 资源组 选择包含 IoT 中心的同一资源组。 名称 为逻辑应用提供名称。 Region 选择一个离您较近的位置。 计划类型 选择“ 消耗”,这足以满足本教程的需求。
选择“查看 + 创建”。
选择 创建。
部署完成后,选择 转到资源 以打开您的逻辑应用。
配置逻辑应用触发器
在 Azure 门户中的逻辑应用资源页上,从资源菜单的“开发工具”部分打开逻辑应用设计器。
在设计器中,向下滚动到 “模板 ”并选择 “空白逻辑应用”。
选择“ 所有 ”选项卡以显示所有连接器和触发器,然后选择 “服务总线”。
在“触发器”下,选择“一个或多个消息到达队列时”(自动完成)。
创建服务总线连接。
提供 连接名称 ,然后粘贴从服务总线命名空间复制的 连接字符串 。
选择 创建。
在下一个屏幕上,使用下拉菜单选择在服务总线命名空间中创建的队列。 然后,输入
175“最大消息计数”。
在逻辑应用设计器菜单上选择“ 保存” 以保存更改。
配置逻辑应用操作
在逻辑应用设计器中选择 “新建”步骤 。
创建 SMTP 服务连接。
搜索并选择 SMTP。
选择发送电子邮件(V3)作为此步骤的动作。
提供 连接名称,然后使用要用于发送通知消息的电子邮件帐户的 SMTP 信息填写其余字段。
根据邮件提供商,使用以下链接查找 SMTP 信息:
注释
可能需要禁用 TLS/SSL 才能建立连接。 如果是这种情况,并且希望在建立连接后重新启用 TLS,请参阅本部分末尾的可选步骤。
选择 创建。
配置“发送电子邮件”操作。
在“发送电子邮件”步骤的“添加新参数”下拉列表中,选择以下参数:
- From
- 至
- 主题
- 正文
单击或点击屏幕上的任意位置以关闭选择框。
输入上一步中选择的电子邮件参数的以下信息:
参数 价值 From 为 SMTP 连接配置的电子邮件地址。 至 一个或多个要用来发送通知电子邮件的电子邮件地址。 主题 High temperature detected。正文 High temperature detected。如果“ 添加动态内容 ”对话框打开,请选择“ 隐藏 ”将其关闭。 本教程中不使用动态内容。
选择 “保存” 以保存 SMTP 连接。
(可选)如果必须禁用 TLS 才能与电子邮件提供商建立连接并想要重新启用它,请执行以下步骤:
在 “逻辑应用 ”窗格的 “开发工具”下,选择 “API 连接”。
从 API 连接列表中选择 SMTP 连接。
在 smtp API 连接 窗格的 “常规”下,选择“ 编辑 API 连接”。
在 “编辑 API 连接 ”窗格中,选择“ 启用 SSL?”,重新输入电子邮件帐户的密码,然后选择“ 保存”。
现在,逻辑应用已准备好处理来自服务总线队列的温度警报,并将通知发送到电子邮件帐户。
测试逻辑应用
开始从 IoT 设备发送温度消息以测试监视和通知管道。
在设备上启动客户端应用程序。 客户端代码会随机输出遥测消息,当温度超过30摄氏度时,将
temperatureAlert属性设置为true。应开始接收逻辑应用发送的电子邮件通知。
注释
电子邮件服务提供商可能需要验证发件人标识,以确保是你发送电子邮件的人。
清理资源
如果不再需要在本教程中创建的资源,请将其删除,并在门户中删除资源组。 为此,请选择包含 IoT 中心的资源组,然后选择“ 删除”。
或者,使用 CLI:
# Delete your resource group and its contents
az group delete --name <RESOURCE_GROUP_NAME>
后续步骤
在本教程中,你创建了一个逻辑应用,用于连接 IoT 中心和邮箱,以便进行温度监视和通知。
若要继续开始使用 Azure IoT 中心并浏览所有扩展的 IoT 方案,请参阅以下内容: