本系列是一个入门级别的动手实验,也是抽取了我们在做物联网开发中的最典型的应用场景,包含:
- 设备发送数据到云;
- 从云端控制设备;
- 在云端对上传的数据进行实时分析,提取有用的数据写入数据库;
- 在云端对上传的数据进行实时分析,满足某些条件时发出邮件报警;
本系列内容共分三篇文章介绍:
1.《Azure IoT Hub 动手训练营 (1)- 前置条件(准备工作)》
2.《Azure IoT Hub 动手训练营 (2)- 实验1,发送设备到云的消息和从云端控制设备(Node.js Device SDK /Service SDK)》
本文是本系列内容第二篇,以下是本文正文:
整个步骤分为五个部分:
1.开发环境及开发工具准备( 本小节的内容已经在本文前置条件中在参加活动前自行准备完成 ):
- Node.js 运行时安装;
- 代码开发工具安装配置(Visual studio code及Azure IoT 开发相关的扩展);
- 在本案例中需要用到的其他开发调试的工具;
2. Azure IoT Hub 创建及Device配置:观看本节视频演示
- 至少两种创建Azure IoT Hub的方法:Azure CLI和在Portal创建,本例中使用Portal创建,阅读详细图文步骤
- 至少两种创建Device的方法:Azure CLI 和在Portal创建,本例中使用Portal创建,阅读详细图文步骤
- 了解关键的Device连接字符串和IoT Hub连接字符串,阅读详细图文步骤
3. 使用微软示例代码和Node.js Device SDK 向Azure IoT Hub 发送遥测数据:观看本节视频演示
4.在云端接收设备发送的遥测数据:
5.从云端向设备发起控制指令(仅演示direct method方式,介绍cloud to device 模式及其区别):观看本节视频演示
- 使用Node.js Service SDK及示例代码向在线的设备发起控制指令,阅读详细图文步骤
扩展内容(有时间就做):
6.使用消息路由讲数据路由至Service Bus队列以进行业务逻辑对接
- 创建Service Bus 队列
- 创建路由终结点
- 创建路由
- 在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设备中,选中要使用的设备:
进入设备详细页面中 ,主连接字符串即为设备连接字符串:
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 连接字符串
执行 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 方式)的完整视频演示