教程:使用 Azure 逻辑应用监视 IoT 设备并发送通知
使用 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 门户上,使用搜索栏搜索并选择“服务总线”。
选择“创建”以创建服务总线命名空间。
在“创建命名空间”窗格中提供以下信息:
参数 值 订阅 选择包含你的 IoT 中心的订阅。 资源组 选择包含你的 IoT 中心的资源组。 命名空间名称 为服务总线命名空间提供一个名称。 该命名空间必须在整个 Azure 中唯一。 位置 选择 IoT 中心所用的同一位置。 定价层 从下拉列表中选择“基本”。 基本层对本教程而言就已足够。 选择“查看 + 创建”。
选择“创建”。
等待部署完成,然后选择“转到资源”。
将服务总线队列添加到命名空间
在你的服务总线命名空间的“概述”页上,选择“队列”。
在“名称”字段中,提供队列的名称。 接受其他字段的默认值,然后选择“创建”。
在服务总线命名空间中,从资源菜单的“设置”部分选择“共享访问策略”。
选择 RootManageSharedAccessKey 策略以打开其详细信息。
复制“主要连接字符串”的值并将其保存,以便在本教程中稍后配置逻辑应用时使用该值。
将自定义终结点和路由规则添加到 IoT 中心
将服务总线队列的自定义终结点添加到 IoT 中心。 然后创建一项消息路由规则,以将包含温度警报的消息定向到该终结点,而逻辑应用会在该终结点中拾取这些消息。 路由规则使用路由查询 temperatureAlert = "true"
,根据设备上运行的客户端代码设置的 temperatureAlert
应用程序属性值来转发消息。 有关详细信息,请参阅基于消息属性的消息路由查询。
添加自定义终结点和路由
在 Azure 门户中,转到 IoT 中心。
在资源菜单中的“中心设置”下,选择“消息路由”,然后选择“添加”。
在“终结点”选项卡上,通过提供以下信息为服务总线队列创建终结点:
参数 值 终结点类型 选择“服务总线队列”。 端点名称 为映射到服务总线队列的新终结点提供名称。 服务总线命名空间 使用下拉菜单选择已在上一部分创建的服务总线命名空间。 服务总线队列 使用下拉菜单选择已在命名空间中创建的服务总线队列。 选择“创建 + 下一步”。
在“路由”选项卡中,输入以下信息,创建指向你的服务总线队列终结点的路由:
参数 值 名称 为路由提供唯一的名称。 数据源 保留默认的“设备遥测消息”数据源。 路由查询 输入 temperatureAlert = "true"
作为查询字符串。选择“创建 + 跳过扩充”。
配置逻辑应用的通知
在上一部分,你已设置 IoT 中心,以将包含温度警报的消息路由到服务总线队列。 现在,请设置一个逻辑应用,以监视服务总线队列,并在每次将消息添加到队列时都发送一则电子邮件通知。
创建逻辑应用
在 Azure 门户中,搜索并选择“逻辑应用”。
选择“添加”以创建新的逻辑应用。
在“创建逻辑应用”的“基本信息”选项卡上输入以下信息:
参数 值 资源组 选择包含 IoT 中心的相同资源组。 Name 提供逻辑应用的名称。 区域 选择靠近自己的位置。 计划类型 选择“消耗”,这对于本教程来说已经足够了。 选择“查看 + 创建”。
选择“创建”。
部署完成后,选择“转到资源”以打开逻辑应用。
配置逻辑应用触发器
在 Azure 门户中的逻辑应用资源页上,从资源菜单的“开发工具”部分打开“逻辑应用设计器”。
在设计器中,向下滚动到“模板”并选择“空白逻辑应用”。
选择“所有”选项卡以显示所有连接器和触发器,然后选择“服务总线”。
在“触发器”下,选择“当一个或多个消息出现在队列中时(自动完成)”。
创建服务总线连接。
提供一个“连接名称”,然后粘贴从服务总线命名空间复制的“连接字符串”。
选择创建。
在下一屏幕上,使用下拉菜单选择已在服务总线命名空间中创建的队列。 然后输入
175
作为“最大消息计数”。
在逻辑应用设计器菜单上选择“保存”以保存更改。
配置逻辑应用操作
在逻辑应用设计器中选择“新步骤”。
创建 SMTP 服务连接。
搜索并选择“SMTP”。
选择“发送电子邮件(V3)”作为此步骤的操作。
提供一个“连接名称”,然后使用要用来发送通知消息的电子邮件帐户的 SMTP 信息填写其余字段。
为 Hotmail/Outlook.com、Gmail 和 Yahoo Mail 获取 SMTP 信息。
注意
可能需要禁用 TLS/SSL 才能建立连接。 如果存在这种情况,并且你想要在建立连接后重新启用 TLS,请参阅本部分末尾的可选步骤。
选择创建。
配置“发送电子邮件”操作。
在“发送电子邮件”步骤的“添加新参数”下拉列表中,选择以下参数:
- From
- 操作
- 主题
- 正文
单击或点击屏幕上的任意位置以关闭选框。
输入在上一步选择的电子邮件参数的以下信息:
参数 值 From 为 SMTP 连接配置的电子邮件地址。 操作 一个或多个要用来发送通知电子邮件的电子邮件地址。 主题 High temperature detected
。正文 High temperature detected
。如果“添加动态内容”对话框已打开,请选择“隐藏”以将其关闭。 本教程不使用动态内容。
选择“保存”以保存 SMTP 连接。
(可选)如果必须禁用 TLS 才能与电子邮件提供程序建立连接,并且事后你想要重新启用 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 方案,请参阅: