在前面的两篇文章《 Azure IoT Edge on Windows 10 IoT Core 》和《 Azure IoT Edge on Raspberry Pi 3 with Raspbian 》中,我们学习了如何在 Windows 10 和 Linux 系统上进行 Docker 的部署和 Python、Iotedgectl 工具的安装,同时,在 Azure Portal 上完成了 IoT Edge Device 的创建、Azure IoT Edge Module 的部署与运行。而在实际的生产环境中,IoT 设备可以生成大量的数据。 为了减少上传的数据量或降低控制策略的延时,有时必须在设备端对数据进行实时分析或处理。Azure Stream Analytics 服务就是很好的解决方案之一,用户可以从 Azure Portal 中创建 Azure Stream Analytics 服务,然后在 Azure IoTHub 中将其设置为 IoT Edge Module 并部署到 Azure IoT Edge 设备上。本文将演示如何创建 Azure Stream Analytics Job, 并将其部署到 IoT Edge 设备上。
首先,在 Azure 门户中,转到 "New",在搜索框输入 "Storage",选择 "Storage account - Blob,file, table, queue"。
然后,在 "Create Storage Account" 中,输入存储帐户的名称,选择存储 IoTHub 的同一位置 (这里为 East Asia),然后选择 "Create"。 请记下该名称供稍后使用。
接着,转到刚刚创建的存储帐户,选择 "Blob Service"。为 Azure Stream Analytics 模块创建一个新容器用于存储数据,将访问级别设置为 "Container",选择 "确定"。
首先,在 Azure 门户中,转到 "Create" > "Internet of Things",然后选择 "Stream Analytics Job"。
然后,在 "New Stream Analytics Job" 中执行以下操作:在 "Job name" 框中键入作业名称; 在 "Hosting Environment" 下,选择 "Edge";在剩余字段中使用默认值。
接着,在所创建作业中的 "Job Topology" 下,依次选择 "Input"-"Add"。在 "Input alias" 框中,输入 temperature。在 "Source Type" 框中,选择 "Data stream"。在剩余字段中使用默认值。
接下来,在所创建作业中的 "Job Topology" 下,依次选择 "Output"-"Add", 在 "输出别名" 框中,键入 alert,在剩余字段中使用默认值。之后选择 "创建" 。
最后,在在所创建作业中的 "Job Topology" 下,依次选择 "Query"-"Add", 加入以下 SQL 语句并保存
SELECT
'reset' AS command
INTO
alert
FROM
temperature TIMESTAMP BY timeCreated
GROUP BY TumblingWindow(second,30)
HAVING Avg(machine.temperature) > 70
首先,在 Azure Portal 的 IoTHub 页面内,转到 "IoT Edge" 并打开 IoT Edge 设备的详细信息页。
选择 "Set Modules",并确保已经按照之前文章中的步骤添加了 tempSensor 模块,因为这里的 Azure Stream Analytics 模块是针对 tempSensor 模块产生的数据来进行实时分析的。
在 "Add Modules" 页面,选择 "Import Azure Stream Analytics IoT Edge Module",
在接下来的 Edge Deployment 页面,选择之前创建好的 Stream Analytics - Edge Job,注意,这里要选择之前第一部分已经创建好的存储账户和 Container,点击保存,如下图所示。
之后,将一下代码复制到 Routes,将 {moduleName} 替换为复制的模块名称:
{
"routes": {
"telemetryToCloud": "FROM /messages/modules/tempSensor/* INTO $upstream",
"alertsToCloud": "FROM /messages/modules/{moduleName}/* INTO $upstream",
"alertsToReset": "FROM /messages/modules/{moduleName}/* INTO BrokeredEndpoint(\"/modules/tempSensor/inputs/control\")",
"telemetryToAsa": "FROM /messages/modules/tempSensor/* INTO BrokeredEndpoint(\"/modules/{moduleName}/inputs/temperature\")"
}
}
选择下一步,然后 Submit。返回到 "设备详细信息" 页,并选择 "刷新"。应会看到新的流分析模块已经在列表中,但是状态还是处于 Pending Deployment。
一段时间以后,等该 Module 部署到设备以后,刷新列表,可以发现,EdgeASA 已经处于 running 状态,如下图所示。
回到 Putty 工具,利用 "docker logs -f {moduleName} "指令(其中,{moduleName} 用刚刚部署的流分析模块的名称代替),就可以查看流分析的日志信息,如下图所示。
至此,我们完成了存储账户的创建、Azure Stream Analytics Job 的创建和 Azure Stream Analytics Job 的部署与运行。 参考链接:
1. Azure IoT Edge on Windows 10 IoT Core
2. Azure IoT Edge on Raspberry Pi 3 with Raspbian
3. Deploy Azure Stream Analytics as an IoT Edge module - preview
来源: https://www.cnblogs.com/dearsj001/p/AzureIoTEdgeASA.html