介绍
node-red-contrib-felix 是一个为 Node-RED 提供的节点,它可以帮助你实现 MQTT 的消息订阅和发布,并且支持消息的格式化和转换。该节点的开发者是 felixaoo,他的 GitHub 主页是 https://github.com/felixaoo。
安装
在安装之前,请确保你已经全局安装了 npm 和 Node-RED。
使用以下命令进行安装:
npm install node-red-contrib-felix
安装完成后,你需要重新启动 Node-RED 服务器,这样才能加载该节点。
使用
node-red-contrib-felix 提供了两个不同的节点:MQTT in 和 MQTT out。分别代表 MQTT 的订阅和发布。
MQTT in
MQTT in 节点用于从 MQTT 代理接收消息。
该节点的配置有以下几个参数:
- Name:显示在 Node-RED 工作区中的名称。
- Server:MQTT 代理的连接地址,例如:tcp://localhost:1883。
- Topic:要订阅的主题,可以使用通配符。
- QoS:消息的服务质量。0 表示消息最多可能发生一次传输,1 表示消息至少传输一次,2 表示消息确保只传输一次。
- Retain:是否在代理上保留最后一条消息。
MQTT out
MQTT out 节点用于向 MQTT 代理发送消息。
该节点的配置有以下几个参数:
- Name:显示在 Node-RED 工作区中的名称。
- Server:MQTT 代理的连接地址,例如:tcp://localhost:1883。
- Topic:要发布的主题,可以使用通配符。
- QoS:消息的服务质量。0 表示消息最多可能发生一次传输,1 表示消息至少传输一次,2 表示消息确保只传输一次。
- Retain:是否在代理上保留最后一条消息。
- Client ID:客户端 ID。
- Payload Type:消息体的类型。可以是 JSON、Buffer、String、Number、Boolean。
示例代码
下面是一个简单的例子,演示了如何使用 node-red-contrib-felix 来实现 MQTT 的消息订阅和发布。
[{"id":"d0b54e2c.faaed","type":"mqtt in","z":"d8543033.35ca08","name":"","topic":"hello/#","qos":"2","datatype":"auto","broker":"12c5fc58.1fe133","x":270,"y":320,"wires":[["cd8a9420.7ad628"]]},{"id":"4cf4d05e.9c7dc4","type":"mqtt out","z":"d8543033.35ca08","name":"","topic":"hello/world","qos":"2","retain":"","broker":"12c5fc58.1fe133","x":530,"y":320,"wires":[]},{"id":"cd8a9420.7ad628","type":"function","z":"d8543033.35ca08","name":"format","func":"msg.payload = { message: msg.payload };\nreturn msg;","outputs":1,"noerr":0,"x":410,"y":320,"wires":[["4cf4d05e.9c7dc4"]]},{"id":"12c5fc58.1fe133","type":"mqtt-broker","z":"","name":"","broker":"localhost","port":"1883","clientid":"","usetls":false,"compatmode":true,"keepalive":"60","cleansession":true,"birthTopic":"","birthQos":"0","birthPayload":"","closeTopic":"","closeQos":"0","closePayload":"","willTopic":"","willQos":"0","willPayload":""}]
这个例子中,我们配置了一个 MQTT in 节点,订阅了 hello/# 主题,并且指定了消息体的格式化函数。我们把原始消息进行了格式化,增加了一个 message 属性,之后将消息传递给了 MQTT out 节点,发布到了 hello/world 主题。
结语
node-red-contrib-felix 可以帮助你轻松地实现 MQTT 的消息订阅和发布。通过该节点,你可以自由控制消息体的格式和转换方式,使得消息传输更加高效和可控。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/600566b581e8991b448e3039