首页 > 技术知识 > 正文

Node-RED系列文章目前已经写了20篇,介绍了Node-RED的安装以及默认安装的一些基本节点的使用,作为物联网的一个可视化拖动的流程,Node-RED的确实很容易上手。还没开始学习的同学可以先看下我以前的文章。

Node-RED教程(一):Node-RED的介绍与安装

Node-RED教程(二):Node-RED的面板的操作

Node-RED教程(三):Node-RED公共节点的使用

Node-RED教程(四):Node-RED函数节点的使用

Node-RED教程(五):Node-RED序列节点的使用

Node-RED教程(六):Node-RED解析节点的使用

Node-RED教程(七):Node-RED存储节点的使用

Node-RED教程(八):Node-RED网络节点的使用

Node-RED教程(九):Node-RED面板dashboard节点的使用

Node-RED教程(十):Node-RED面板dashboard节点的配置

Node-RED教程(十一):Node-RED面板chart节点的使用案例

Node-RED教程(十二):定制化节点教程

Node-RED教程(十三):三种方式安装启动安装Node-Red

Node-RED教程(十四):定制Node-RED的UI

Node-RED教程(十五):工业仪表盘开发

Node-RED系列(十七):使用自定义UI节点网与flow交互

Node-RED系列(十八):配置静态目录,使用echarts.js,three.js,D3.js

Node-RED系列(十九):工业多图标面板制作

Node-RED系列(二十):一文让你彻底了解物联网平台Node-RED

这是我的第21篇Node-RED系列的文章,这一篇文章我们来说一下,如何在node-red中使用mqtt,以及简单搭建一个可用的mqtt 中转服务。

安装 mqtt

之前我有介绍过mqtt 这种协议,一种轻量级基于代理的发布/订阅的消息传输协议。非常适合物联平台的数据传输。

在mqtt协议中最重要的是 一个中间代理的服务。 所有的消息都经过它来转发。我们要使用mqtt也不行要启动一个mqtt的代理(Broker)(服务器)

那么我们要使用mqtt比较需要先安装代理服务。

开源的mqtt代理服务有二个 一个是eqtt, 一个是 mosquitto emqx

官网 https://www.emqx.io/

Node-RED系列(二一):安装mqtt环境,简单使用案例,mqtt节点解析

github 有 8.4k的星

https://github.com/emqx/emqx mosquitto

官网 https://mosquitto.org/

Node-RED系列(二一):安装mqtt环境,简单使用案例,mqtt节点解析1

github地址 4.9k

https://github.com/eclipse/mosquitto 安装 eqtt

在看到两个项目的github 星之后,我毅然决然地选择了emqx

世界上软件最简单的安装方式是 docker

docker run -d –name emqx -p 8082:18083 -p 8083:1883 emqx/emqx:latest

一句话安装emqx

Node-RED系列(二一):安装mqtt环境,简单使用案例,mqtt节点解析2 使用命令安装emqx后, 对外暴露的服务使用 8083端口来访问

安装就到这里。 下面介绍使用

node-red流

我们演示的流很简单,一个订阅,一个发布

Node-RED系列(二一):安装mqtt环境,简单使用案例,mqtt节点解析3

下面详细介绍。

首先使用这个两个节点

Node-RED系列(二一):安装mqtt环境,简单使用案例,mqtt节点解析4

mqtt in 与 mqtt out 这两个节点一个是用于接受消息(mqtt in),一个是用于发布消息(mqtt out)

首先将 mqtt out 拖入编辑面板, 双击进行配置。

Node-RED系列(二一):安装mqtt环境,简单使用案例,mqtt节点解析5

点击服务端下编辑图标,进入mqtt 代理服务器的配置。这里也可以选择你已经配置好的服务端。

Node-RED系列(二一):安装mqtt环境,简单使用案例,mqtt节点解析6

点击编辑图标后

Node-RED系列(二一):安装mqtt环境,简单使用案例,mqtt节点解析7

输入服务端的地址,与端口。端口默认是1883, 我们emqx 服务的端口是8083

如果mqtt代理服务有账号密码,需要在安全的tab下设置。 此外可以在 消息的tab下设置

Node-RED系列(二一):安装mqtt环境,简单使用案例,mqtt节点解析8

链接, 断开,意外断开是的消息发送。

mqtt borker 配置好后,我们就可以在节点之前添加一个触发器。

使用 inject节点

每一个消息都有一个话题 topic ,我们可以发送该话题的消息,其他客户端可以订阅该话题的消息。

Node-RED系列(二一):安装mqtt环境,简单使用案例,mqtt节点解析9

这里就是简单的配置了。

这里只是 触发节点,订阅消息我们使用mqtt in 加 debug 节点来 打印消息的主题

Node-RED系列(二一):安装mqtt环境,简单使用案例,mqtt节点解析10

一个mqtt in 可以订阅多个话题的消息

topic 字符串

MQTT主题,使用/作为层次结构分隔符。

qos 数值

QoS服务质量:0, 最多一次; 1, 最少一次; 2, 只一次。

retain 布尔值

值为true时表示消息已保留且可能是旧的。

使用

配合好节点后,一定要记得发布,要不然是不会生效的。

如果配置没有错误,那么在部署后,在mqtt 节点下,会有绿色的圆点和字体, 已链接

这就表示一切正常。

使用截图

Node-RED系列(二一):安装mqtt环境,简单使用案例,mqtt节点解析11

完整的数据流

[{“id”:”a3b91394.603b6″,”type”:”tab”,”label”:”流程 14″,”disabled”:false,”info”:””},{“id”:”789f6592.37cd1c”,”type”:”mqtt in”,”z”:”a3b91394.603b6″,”name”:”mqtt(发送)”,”topic”:”fizz”,”qos”:”0″,”datatype”:”auto”,”broker”:”b1c1c277.121e3″,”x”:620,”y”:520,”wires”:[[“e59322a2.34d3d”]]},{“id”:”e243e1e3.3ce5f”,”type”:”mqtt out”,”z”:”a3b91394.603b6″,”name”:”mqtt(输出)”,”topic”:”fizz”,”qos”:”1″,”retain”:””,”broker”:”b1c1c277.121e3″,”x”:630,”y”:380,”wires”:[]},{“id”:”eaa95ac7.892488″,”type”:”inject”,”z”:”a3b91394.603b6″,”name”:”fizz”,”props”:[{“p”:”payload”},{“p”:”topic”,”vt”:”str”}],”repeat”:””,”crontab”:””,”once”:false,”onceDelay”:0.1,”topic”:”fizz”,”payload”:”{\”name\”:\”pmc\”,\”age\”:12}”,”payloadType”:”json”,”x”:190,”y”:380,”wires”:[[“e243e1e3.3ce5f”]]},{“id”:”e59322a2.34d3d”,”type”:”debug”,”z”:”a3b91394.603b6″,”name”:””,”active”:true,”tosidebar”:true,”console”:false,”tostatus”:false,”complete”:”false”,”statusVal”:””,”statusType”:”auto”,”x”:900,”y”:520,”wires”:[]},{“id”:”b1c1c277.121e3″,”type”:”mqtt-broker”,”name”:”鲲鹏mq”,”broker”:”210.22.22.150″,”port”:”1493″,”clientid”:””,”usetls”:false,”compatmode”:false,”keepalive”:”60″,”cleansession”:true,”birthTopic”:””,”birthQos”:”0″,”birthPayload”:””,”closeTopic”:””,”closeQos”:”0″,”closePayload”:””,”willTopic”:””,”willQos”:”0″,”willPayload”:””}]

结语

mqtt 学好了,可以在物联行业横着走,手动狗头

猜你喜欢