腾龙娱乐公司开户【微kokang111】

Copper Contributor

实际的生产环境中,IoT 设备可以生成大量的数据。 为了减少上传的数据量或降低控制策略的延时,有时必须在设备端对数据进行实时分析或处理。Azure Stream Analytics 服务就是很好的解决方案之一,用户可以从Azure Portal中创建Azure Stream Analytics 服务,然后在 Azure IoTHub 中将其设置为 IoT Edge Module 并部署到Azure IoT Edge设备上。本文将演示如何创建Azure Stream Analytics Job, 并将其部署到 IoT Edge 设备上。

1. 创建存储账户

      首先,在 Azure 门户中,转到“New”,在搜索框输入“Storage”,选择“Storage account - Blob,file, table, queue”。

 

 

      然后,在“Create Storage Account ”中,输入存储帐户的名称,选择存储IoTHub的同一位置(这里为East Asia),然后选择“Create”。 请记下该名称供稍后使用。

 

 

      接着,转到刚刚创建的存储帐户,选择“Blob Service”。为Azure Stream Analytics 模块创建一个新容器用于存储数据,将访问级别设置为“Container”,选择“确定”。

 

41072-20171227152503488-587073204.png

2. 创建Azure Stream Analytics Job

      首先,在 Azure 门户中,转到“Create” > “Internet of Things”,然后选择“Stream Analytics Job”。

 

41072-20171227152504050-362479187.png

      然后,在“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,在剩余字段中使用默认值。之后选择“创建” 。

 

41072-20171227152504753-1384925148.png

      最后,在在所创建作业中的“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

3. 部署Stream Analytics Job

      首先,在 Azure Portal 的 IoTHub页面内,转到“IoT Edge”并打开 IoT Edge 设备的详细信息页。

 

 

      选择“Set Modules”,并确保已经按照之前文章中的步骤添加了tempSensor模块,因为这里的Azure Stream Analytics模块是针对tempSensor模块产生的数据来进行实时分析的。

 

41072-20171227152505503-1021979573.png

      在“Add Modules”页面,选择“Import Azure Stream Analytics IoT Edge Module”,

 

41072-20171227152505847-1021568978.png

      在接下来的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。

 

41072-20171227152506503-759893304.png

      一段时间以后,等该Module部署到设备以后,刷新列表,可以发现,EdgeASA已经处于running状态。

 

 

      回到Putty工具,利用“docker logs -f {moduleName} ”指令(其中,{moduleName} 用刚刚部署的流分析模块的名称代替),就可以查看流分析的日志信息。

 

 

      至此,我们完成了存储账户的创建、Azure Stream Analytics Job的创建和Azure Stream Analytics Job的部署与运行。

0 Replies