Node-RED 是一种流程编程工具,可以通过拖放组件来构建 IoT 应用程序。它使用 Node.js 运行时,并提供了一个基于浏览器的编辑器,允许您创建和编辑流程。npm 是一个包管理器,可以很容易地找到和使用 Node.js 模块。 npm 包 node-red-contrib-redmond 为 Node-RED 提供了能够与 Microsoft Azure IoT Hub 进行通信的节点,并提供了一种轻松、简单的方式,在采集设备数据和执行硬件操作时,快速启动应用程序。
在本教程中,我们将学习如何使用 npm 包 node-red-contrib-redmond 模块来创建一个基于 Node-RED 的 Azure IoT Hub 应用程序,其中会将温度和湿度数据发送到 Azure IoT Hub。此外,还将演示如何从应用程序中读取和控制 IoT 设备的状态。
安装 node-red-contrib-redmond
首先,我们需要在 Node-RED 中安装 node-red-contrib-redmond。在终端或命令行提示符中,使用以下命令安装 npm 包:
npm install node-red-contrib-redmond
配置 Azure IoT Hub
要使用 node-red-contrib-redmond 包,需要在 Azure 门户中创建并配置一个 IoT 中心。首先,登录 Azure 门户;在 Azure 门户主页上,选择“新建”->“物联网”->“物联网中心”。
接下来,输入名称、订阅、资源组和位置。
在 “容量和规模” 页面上,选择您需要的选项。
在 “高级” 选项卡上检查 “设备到云消息”,以及是否启用了 IoT 中心的终端 (中心到设备)、设备管理和设备流。
单击 “创建” 按钮。
创建完成后,在 Azure 门户的 IoT 中心概览中,您可以找到 IoT 中心的默认值。您将需要在 node-red-contrib-redmond 配置窗口中使用此信息。
使用 node-red-contrib-redmond
现在,我们开始创建 Node-RED 流程来使用 node-red-contrib-redmond 包。节点是一种执行特定任务的单元。下面让我们了解一下 node-red-contrib-redmond 包中的几个节点。
设备连接节点
在 node-red 工具箱中,找到并拖动 “az-iot-hub” 设备连接节点。将其连接到 “inject” 节点。
在节点的配置界面中输入以下信息:
- Hub Name,中心名称 (此处与 Azure IoT Hub 中心名称一致)。
- Connection String,连接字符串 (在 Azure 门户中查找,共享访问策略的连接字符串)。
- Device Id,设备 Id (名义上的设备名称,在 IoT Hub 中用于标识 IoT 设备的编号)。
IoT 意图节点
从 node-red 工具箱中选择 “az-iot-hub” 的 IoT 意图节点。在 “az-iot-hub” 设备连接节点下方插入 “IoT 发送一条消息” 节点。
在意图节点的配置中输入以下信息:
- Message Type,消息类型 (例如 telemetry)。
- Message Properties,消息属性 (meta)。
- Message Body,消息内容了 (例如 { "temperature": 25,"humidity": 40 })。
节点属性链接节点
找到并拖动该属性链接节点。将它连接到 IoT 意图节点的 “msg” 输出上。配置窗口中,需要单击左侧菜单栏中的 “message.payload” 所在行,然后点击右侧菜单栏下方“payload”字段中的“New”按钮,此时将弹出一个输入窗口。在该窗口中,输入 “temperature” 以及 “humidity” 作为字段名称。然后,将“msg.payload.temperature”和“msg.payload.humidity”添加到消息正文中。
控制设备状态节点
找到并拖动 “IoT 更新设备状态” 节点。它用于更新设备的状态。将此节点插入 “IoT 发送一条消息” 后面,并连接到 “IoT 意图” 节点的 “msg” 输出上。
在 “IoT 更新设备状态” 的配置界面中,输入以下信息:
- Device Property,设备属性 (例如 temperature_change)。
- Device Property Value,设备属性值 (例如 { "fan": true })。
这些值将用于更新设备的状态。
示例代码
完成上述配置后,可以在 “主页” 主页上运行一个示例,以学习如何发送和读取单个消息。
[{"id":"c2bf7cfb.d5075","type":"inject","z":"faecac9b.98a16","name":"","topic":"","payload":"","payloadType":"date","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":160,"y":80,"wires":[["1a0a1c8d.efd31"]]},{"id":"22b9dc9e.27f0fc","type":"debug","z":"faecac9b.98a16","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","targetType":"full","x":1020,"y":80,"wires":[]},{"id":"766b611d.58b1fc","type":"az-iot-hub","z":"faecac9b.98a16","device":"bbf071dd.d91538","x":570,"y":140,"wires":[[]]},{"id":"1a0a1c8d.efd31","type":"function","z":"faecac9b.98a16","name":"create message","func":"return {payload:{temperature:35,humidity:25}};","outputs":1,"noerr":0,"x":330,"y":80,"wires":[["766b611d.58b1fc","22b9dc9e.27f0fc"]]},{"id":"2ba7424b.f761c6","type":"az-iot-hub","z":"faecac9b.98a16","device":"bbf071dd.d91538","x":570,"y":240,"wires":[[]]},{"id":"6a94af6d.cf1d","type":"inject","z":"faecac9b.98a16","name":"Device Properties","topic":"","payload":"{\"config\":{\"fan\":true}}","payloadType":"json","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":160,"y":240,"wires":[["2ba7424b.f761c6"]]},{"id":"bbf071dd.d91538","type":"az-iot-hub-device","z":"","device":"temp-sensor-001","connectionString":"HostName=[Azure IoT 中心名称].azure-devices.net;SharedAccessKeyName=iothubowner;SharedAccessKey=[primary, secondary SAS key or certificate];DeviceId=temp-sensor-001"}]
结论
通过本教程,您已经了解了如何使用 node-red-contrib-redmond npm 包来构建 Azure IoT Hub 应用程序,并能够读取和控制设备的状态。这是一个强大的工具,可以用于快速建立和测试 IoT 应用程序的原型,为 IoT 解决方案的开发提供了更加高效和有力的工具。祝您能够快乐学习并创造出有意义的 IoT 应用程序。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6005626e81e8991b448dfb6f