Microsoft Azure IoT 开发教程
Microsoft Azure与AWS Cloud,Google Cloud为国际云服务厂商,提供云计算,物联网,AI等服务。本次教程具体来实践一下如何用微软云(Microsoft Azure)来连接物联网设备进行程序运行与数据采集等。
Azure登录与IoT hub设置
首先,我们需要登录Azure云:https://portal.azure.com,Azure为每个账户提供了一些永久免费的服务,其中就包含物联网相关的IoT hub。
我们从free services中找到Microsoft IoT Hub,点击创建,如图所示

其中我们可以自定义命名一个IoT hub name,然后选择我们的资源组(Resource Group)。关于Subscription和资源组,一般是在创建任何资源之前最先创建一个Subscription和其中的资源组的,所以如果第一次使用Azure,一开始会提示创建这两个的,不必担心。在Tier部分选择free,Rigion部分选择离我们较近的East Asia即可。
创建完之后我们打开并且点击左栏中的Device Management,然后点击其中的Device。如图所示,我们添加一个device。

点进去后我们指定device的名称,并且暂不勾选IoT edge device。如图所示,

这里我们简单辨析一下区别:
不勾选是最基础的模式,也是你目前树莓派模拟代码所使用的模式。它只负责采集数据,然后原封不动地通过 MQTT/AMQP 协议发送给 Azure IoT Hub(云端)。
勾选时它不仅能收发数据,还能运行容器 (Containers)。你可以把云端的逻辑(比如 Azure Functions, Stream Analytics, 甚至是 AI 模型)打包成 Docker 容器,直接下发到这就设备上运行。此时作为一个边缘计算设备,还可以作为其他IoT设备连接到cloud的网关。
此外,这里我们选择认证方式(Authentication)为symmetric key,为最简单的一种。后面两种一个是self-signed X509证书,也就是自签的证书,另一个是CA signed X509证书,也就是CA颁发给设备的证书。后两个均为利用公钥基础设施PKI进行设备认证的方式,这里我们并不关心认证方式,所以选择第一种,只用密钥认证即可。
创建设备成功后,我们点开查看其界面,如图所示:

这里的primary connection string和device会被用来连接。Primary connection string对应的是API调用中利用的primary key。
运行IoT device(模拟)并连接到IoT hub
这里为了方便,我们直接使用Azure官方给出的模拟IoT设备,以及模拟数据采集过程,模拟器页面如下:https://azure-samples.github.io/raspberry-pi-web-simulator/#Getstarted
代码如图所示:

在模拟器给出的代码中我们需要把connection string换成刚才提到的primary string。然后直接点击运行,传感器即可将数据传到IoT hub,传感器日志如图:

可视化传感器数据
注意我们的IoT hub并不能直接显示数据内容,而是只能显示发送过来的信息数量,如图:

所以接下来我们同样在Azure中,再创建一个web app,用来展示我们的传感器数据。我们点击左上Azure返回主界面如图,

然后打开app service并创建一个web app,此处我们暂不需要数据库(database)。

如图所示,最上方会有Subscription和Resource Group,我们尽量选择与之前相同的选项,Publish模式我们选择code,Runtime stack我们选择Node 24 LTS,因为IoT设备模拟器提供的代码是基于NodeJS的。Region仍然选择East Asia,并且在下方的pricing plan中选择free以省钱。
创建好之后,我们需要在此web app上创建网页项目用来展示我们的传感器数据。我们同样使用Azure的页面模板,项目地址为:https://github.com/Azure-Samples/web-apps-node-iot-hub-data-visualization.git。这里我们使用git操作进行下拉和push到刚才创建的web app环境中。命令如下:(先不要执行,我们要先用Azure web app界面配置一些环境变量)
1 | git clone https://github.com/Azure-Samples/web-apps-node-iot-hub-data-visualization.git |
现在来配置环境变量,打开Azure中刚才创建的web app管理界面,左侧栏找到setting,点击environment variables如图

(应该什么都没有,我这里是配置好后显示)。我们需要添加IotHubConnectionString和EventHubConsumerGroup两项,IotHubConnectionString在我们一开始创建的IoT hub中,打开security setting,找到shared access policies,然后点击service,如图所示,会出现primary connection string,就是它。

EventHubConsumerGroup我们同样需要打开IoT hub,然后找到hub setting,再找到built-in endpoints,然后我们在Event Hub Details中找到consumer groups并创建一个group,这里我命名为monitoring,如图。

下面回到web app中,我们需要设置认证方式,在本地进行向上git push的时候需要认证。

如图,我们需要打开setting的configuration并勾选SCM和FTP两个。然后我们打开Deployment中的deployment center,找到最右边的credentials项,如图:

然后在下面user scope中创建用户名和密码,用于push推送过程的认证,如图:

创建好之后,就万事俱备了。
我们开始执行如下命令
1 | git clone https://github.com/Azure-Samples/web-apps-node-iot-hub-data-visualization.git |
此处的git clone URL在deployment center的首界面即可看到。在最后一步push的过程中输入刚才创建的credential用户名和密码,即可完成部署。回到web app的overview界面,点击Default domain的链接并打开即可看到传感器实时数据,如图所示:




