Node-RED系列(二一):安裝mqtt環境,簡單使用案例,mqtt節點解析

拿我格子衫來 2021-08-15 19:58:06 阅读数:728

本文一共[544]字,预计阅读时长:1分钟~
node-red node red 系列 二一

Node-RED系列文章目前已經寫了20篇,介紹了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/
在這裏插入圖片描述
github 有 8.4k的星
https://github.com/emqx/emqx

mosquitto

官網 https://mosquitto.org/
在這裏插入圖片描述

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
在這裏插入圖片描述
使用命令安裝emqx後, 對外暴露的服務使用 8083端口來訪問

安裝就到這裏。 下面介紹使用

node-red流

我們演示的流很簡單,一個訂閱,一個發布

在這裏插入圖片描述

下面詳細介紹。
首先使用這個兩個節點
在這裏插入圖片描述

mqtt inmqtt out 這兩個節點一個是用於接受消息(mqtt in),一個是用於發布消息(mqtt out)

首先將 mqtt out 拖入編輯面板, 雙擊進行配置。
在這裏插入圖片描述

點擊服務端下編輯圖標,進入mqtt 代理服務器的配置。這裏也可以選擇你已經配置好的服務端。
在這裏插入圖片描述
點擊編輯圖標後
在這裏插入圖片描述

輸入服務端的地址,與端口。端口默認是1883, 我們emqx 服務的端口是8083
如果mqtt代理服務有賬號密碼,需要在安全的tab下設置。 此外可以在 消息的tab下設置
在這裏插入圖片描述

鏈接, 斷開,意外斷開是的消息發送。

mqtt borker 配置好後,我們就可以在節點之前添加一個觸發器。
使用 inject節點

每一個消息都有一個話題 topic ,我們可以發送該話題的消息,其他客戶端可以訂閱該話題的消息。
在這裏插入圖片描述
這裏就是簡單的配置了。
這裏只是 觸發節點,訂閱消息我們使用mqtt indebug 節點來 打印消息的主題

在這裏插入圖片描述

一個mqtt in 可以訂閱多個話題的消息

topic 字符串
MQTT主題,使用/作為層次結構分隔符。

qos 數值
QoS服務質量:0, 最多一次; 1, 最少一次; 2, 只一次。

retain 布爾值
值為true時錶示消息已保留且可能是舊的。

使用

配合好節點後,一定要記得發布,要不然是不會生效的。

如果配置沒有錯誤,那麼在部署後,在mqtt 節點下,會有綠色的圓點和字體, 已鏈接
這就錶示一切正常。

使用截圖

請添加圖片描述

完整的數據流

[{
"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 學好了,可以在物聯行業橫著走,手動狗頭

版权声明:本文为[拿我格子衫來]所创,转载请带上原文链接,感谢。 https://gsmany.com/2021/08/20210815195759707L.html