本系列是一个入门级别的动手实验,也是抽取了我们在做物联网开发中的最典型的应用场景,包含:

  1. 设备发送数据到云;
  2. 从云端控制设备;
  3. 在云端对上传的数据进行实时分析,提取有用的数据写入数据库;
  4. 在云端对上传的数据进行实时分析,满足某些条件时发出邮件报警;

本系列内容共分三篇文章介绍:

 

1.《Azure IoT Hub 动手训练营 (1)- 前置条件(准备工作)

2.《Azure IoT Hub 动手训练营 (2)- 实验1,发送设备到云的消息和从云端控制设备(Node.js Device SDK /Service SDK)

3.《Azure IoT Hub 动手训练营 (3)- 实验2,使用流分析(Stream Analytics)对遥测数据进行实时在线分析并将结果写入Azure SQL Server数据库和Logic app发邮件报警

 

本文是本系列内容第二篇,以下是本文正文:


 

整个步骤分为五个部分:

1.开发环境及开发工具准备( 本小节的内容已经在本文前置条件中在参加活动前自行准备完成 ):
  1. Node.js 运行时安装;
  2. 代码开发工具安装配置(Visual studio code及Azure IoT 开发相关的扩展);
  3. 在本案例中需要用到的其他开发调试的工具;

 

2. Azure IoT Hub 创建及Device配置:观看本节视频演示
  1. 至少两种创建Azure IoT Hub的方法:Azure CLI和在Portal创建,本例中使用Portal创建,阅读详细图文步骤
  2. 至少两种创建Device的方法:Azure CLI 和在Portal创建,本例中使用Portal创建,阅读详细图文步骤
  3. 了解关键的Device连接字符串和IoT Hub连接字符串,阅读详细图文步骤

 

3. 使用微软示例代码和Node.js Device SDK 向Azure IoT Hub 发送遥测数据:观看本节视频演示
  1. 安装Node.js SDK,阅读详细图文步骤
  2. 使用Visual Studio Code ,修改Device连接字符串,阅读详细图文步骤
  3. 运行代码向云端发送遥测数据,阅读详细图文步骤

 

4.在云端接收设备发送的遥测数据:
  1. 使用Visual Studio Code或Azure CLI 查看遥测消息,阅读详细图文步
  2. 使用Node.js Event Hub SDK和示例代码查看遥测消息,阅读详细图文步

 

5.从云端向设备发起控制指令(仅演示direct method方式,介绍cloud to device 模式及其区别):观看本节视频演示
  1. 使用Node.js  Service SDK及示例代码向在线的设备发起控制指令,阅读详细图文步

 

扩展内容(有时间就做):
6.使用消息路由讲数据路由至Service Bus队列以进行业务逻辑对接
  1.  创建Service Bus 队列
  2. 创建路由终结点
  3. 创建路由
  4. 在Service Bus 队列中查看遥测消息

本案例请参照:


2.Azure IoT Hub 创建及Device配置
a.创建Azure IoT Hub:

 

点击创建资源:

输入资源组:

 

点击创建:

 

本例中,输入姓名或项目名等唯一的值:

 

接下来在资源组中,创建Azure IoT Hub:

 

选择IoT中心:

本例中,以自己的姓名或其他唯一值为IoT 中心名称:

大小和规格中,选择:标准S1

b.接下来创建IoT Device:

 

本例中,我们使用自己的姓名作为设备ID,同时选择对称密钥的身份验证类型:

 

至此,测试用的Device创建完成。

 

c.Azure IoT Hub连接字符串和Device 连接字符串:

IoT Hub连接字符串:

在IoT Hub中点击左侧“共享访问策略”:

点击如下图第一项:

右侧弹框中,主要连接字符串即为IoT Hub连接字符串:

 

设备连接字符串:

在IoT设备中,选中要使用的设备:

进入设备详细页面中 ,主连接字符串即为设备连接字符串:

 

 


 

 

3. 使用微软示例代码和Node.js Device SDK 向Azure IoT Hub 发送遥测数据

 

 

使用如下路径下的示例代码:

azure-iot-samples-node-master\azure-iot-samples-node-master\iot-hub\Quickstarts\simulated-device

a. npm install 下载package.json中的Node.js Device SDK 

在命令提示符中,进入该目录,输入 npm install,该操作将根据package.json里的配置安装Azure IoT Hub Device 的SDK:

 

b.修改SimulatedDevice.js 中的connectiongString:

连接字符串的获取,请参见:获取device 连接字符串

c.修改好后保存,接下来在命令提示符中运行示例代码:

执行  node SimulatedDevice.js, 如下图,可以看到执行完成后,程序1秒中向云端发送一个模拟的温湿度值。

 


 
 
4.在云端接收设备发送的遥测数据

 

 

a.使用Visual Studio Code或其他工具查看遥测消息

使用Azure IoT Explorer 查阅发送到云端的遥测消息:

打开Azure IoT Explorer, 输入IoT Hub的连接字符串

在要查看的设备的左侧列表中,选择Telemerty, 点击上方的Start/Stop按钮可以开始监视/停止监视遥测消息:

 

使用VS Code 查阅发送到云端的遥测消息:

打开VS Code, 输入 ctrl+shift+p, 输入 Azure: Sign in, 在浏览器中输入Azure 账号密码,登录Azure 中:

在VS Code 左下角的Azure IoT Hub中,选择 Select IoT Hub:

在上方的下拉列表中,选择要连接的IoT Hub:

 

连接成功后,在设备上右键,选择 Start Monitoring Built-in Event Endpoint:

在下方的Output 框中,可以看到遥测消息:

 

 

b.使用Node.js Event Hub SDK和示例代码查看遥测消息

 

本案例使用示例代码:azure-iot-samples-node-master\azure-iot-samples-node-master\iot-hub\Quickstarts\read-d2c-messages

执行npm install 安装 package.json中的 SDK,注意,本例中使用的是 event hub sdk从IoT Hub 默认的SDK中读取遥测数据,

修改示例代码ReadDeviceToCloudMessages.js中的 IoT Hub的连接字符串

运行示例代码,执行 node readdevcietocloudmessages.js:

 


 

5.从云端向设备发起控制指令(仅演示direct method方式)

 

a.使用Node.js  Service SDK及示例代码向在线的设备发起控制指令

本案例使用如下两个代码,效果如下:

simulated-device-2 默认1秒向IoT Hub 发送一次遥测数据,back-end-application 调用simulated-device-2中已经写好的方法,该方法修改上报数据的时间间隔,执行成功后,设备由1秒上报1次,改为10秒上报一次。

 

先关闭刚才运行的模拟程序,接下来在simulated-device-2中安装SDK, 修改连接字符串,并运行 :

 

进入back-end-application, 安装SDK,修改IoT Hub连接字符串,修改受控设备ID,运行代码:

 

 

 

 


 

在Azure Portal 创建Azure IoT Hub和Device 的视频讲解

 

 

 

使用Device SDK 向云端发送遥测消息以及从云端接收遥测消息的视频演示

 

 

使用Service SDK 向设备发送控制指令(direct method 方式)的完整视频演示