怎么用NodeRed实现树莓派与阿里云物联网平台通信?

时间:2024-04-01 15:15:08

Node-RED是构建物联网(IoT)应用程序的强大工具,它使用可视化的编程方法,允许开发人员将预定义的代码块(称为“节点”)连接在一起以执行任务。

当预定义的代码块连接在一起时,通常由输入节点,处理节点和输出节点组成的连接节点构成一个“流”。

RevPi Core模块已经内置Node-RED运行环境,本文将介绍基于Node-RED如何实现RevPi Core模块与阿里云物联网平台的通信。

01 启动Node-RED

RevPi Core模块已经搭建好了Node-RED运行环境,并且额外包含适用于RevPi设备的节点,无需额外安装软件,直接启动运行即可。

首先通过putty远程连接RevPi,输入以下命令以启动Node-RED:sudo node-red-start。

等待Node-RED启动后,通过在浏览器中输入 RevPi的IP:1880进入Node-RED界面。
怎么用NodeRed实现树莓派与阿里云物联网平台通信?
可以通过命令sudo systemctl enable nodered.service设置Node-RED的开机自启动。

02 配置阿里云物联网平台

在物联网平台控制台点击设备管理->产品->创建产品:
怎么用NodeRed实现树莓派与阿里云物联网平台通信?
安装下图所示配置产品:
怎么用NodeRed实现树莓派与阿里云物联网平台通信?
点击保存,并前往添加设备:
怎么用NodeRed实现树莓派与阿里云物联网平台通信?
输入设备名称,可以自行选择,这里设定的是RevPi:
怎么用NodeRed实现树莓派与阿里云物联网平台通信?
点击确认,并前往查看设备信息:
怎么用NodeRed实现树莓派与阿里云物联网平台通信?
暂时不要关闭此设备信息页面,稍后还需要此页面的相关信息。

03 创建Node-RED流

这里将采用MQTT通信方式与阿里云物联网平台进行通信。首先建立如下图所示流:
怎么用NodeRed实现树莓派与阿里云物联网平台通信?
时间戳(即inject节点)在这里仅起到触发作用,无需设置。

exec节点可执行系统命令,本文借助exec节点采集RevPi的CPU温度,并将其上传到云平台。对exec节点进行如下图所属配置。

其中命令框中输入:/usr/bin/vcgencmd measure_temp。
怎么用NodeRed实现树莓派与阿里云物联网平台通信?

04 mqtt out节点参数设定

mqtt out节点配置可以参考阿里云物联网平台文档“使用MQTT.fx接入物联网平台”,文档中采用的是MQTT.fx软件,但配置参数基本相同。

点击添加新的mqtt-broker节点,节点名称自行设定,本例设为AliIOT。
怎么用NodeRed实现树莓派与阿里云物联网平台通信?
需要配置的参数包括连接和属性两种,下面依次看一下:
怎么用NodeRed实现树莓派与阿里云物联网平台通信?
怎么用NodeRed实现树莓派与阿里云物联网平台通信?
服务端
根据官方文档,Broker的地址格式为:
${YourProductKey}.iot-as-mqtt. ${YourRegionId}.aliyuncs.com

上面的ProductKey可以在设备信息中找到,RegionId可以参考网址:https://help.aliyun.com/document_detail/40654.html?spm=a2c4g.11186623.2.19.3d1b5800pRBtd2#concept-h4v-j5k-xdb
完整示例:
a1A96I6bXvh.iot-as-mqtt.cn-shanghai.aliyuncs.com,
端口选择1883即可。

客户端ID
客户端ID的格式为:
${clientId}|securemode=3,signmethod=hmacsha1| 。

  • clientId用户可以自行设置,长度在64字符以内。本例中设置为RevPiNodeRED。
  • securemode为安全模式,TCP直连模式设置为securemode=3,TLS直连为securemode=2。本例选择安全模式为3。
  • signmethod为算法类型,支持hmacmd5和hmacsha1。本例选择hmacsha1。
    完整示例:
    RevPiNodeRED|securemode=3,signmethod=hmacsha1|

用户名及密码
用户名的格式为:
${YourDeviceName}& ${YourProductKey} 。
DeviceName和ProductKey均可在设备信息处找到,请自行对应填写。
完整示例:
RevPi&a1A96I6bXvh
密码需要根据设备信息进行加密运算生成。可以借助password生成小工具,下载地址:
https://files.alicdn.com/tpsservice/88413c66e471bec826257781969d1bc7.zip?spm=a2c4g.11186623.2.21.3d1b5800pRBtd2&file=88413c66e471bec826257781969d1bc7.zip
下载后解压,双击sign文件即可运行。
如下图所示,如实填写相关信息,时 间戳可省略,点击generate即可生成密码。
怎么用NodeRed实现树莓派与阿里云物联网平台通信?
另外还可以以手动方法生成密码,详细可参考阿里云物联网平台官方文档。

主题
将以上Broker相关信息填写完成后点击添加即可:
怎么用NodeRed实现树莓派与阿里云物联网平台通信?
主题可以在产品->Test->Topic类列表->自定义Topic中选择具有发布权限的Topic,并根据设备名称进行更改:
怎么用NodeRed实现树莓派与阿里云物联网平台通信?
当然,也可以自定义具有发布权限的主题。本例采用的主题为:
/a1A96I6bXvh/RevPi/user/update
mqtt out节点的QoS和保留选项设置可自行选择,配置完成后点击“完成”即可。然后点击“部署”按钮,将此流程部署到设备并运行。

05 通信测试

部署完成后,正常情况下mqtt out节点应显示“已连接”,若“未连接”或者一直在“连接中”,请检查相关配置是否有错。
怎么用NodeRed实现树莓派与阿里云物联网平台通信?
点击时间戳,触发流程,即可将温度信息上传到云平台。
可以在阿里云物联网平台控制台的监控运维->日志服务下,选择Test产品即可在云端运行日志下查看到接收到的温度信息。
怎么用NodeRed实现树莓派与阿里云物联网平台通信?
怎么用NodeRed实现树莓派与阿里云物联网平台通信?
当然,也可以通过具有订阅权限的主题实现从云平台将信息发送到RevPi,如果您对这方面感兴趣,可以根据官方手册自行探索实现方式。