Ubuntu下mosquitto 的使用

mosquitto

mosquitto 是一款實現了消息推送協議 MQTT v3.1 的開源消息代理軟件,提供輕量級的,支持可發佈/可訂閱的的消息推送模式,使設備對設備之間的短消息通信變得簡單,比如現在應用廣泛的低功耗傳感器,手機、嵌入式計算機、微型控制器等移動設備。一個典型的應用案例就是 Andy Stanford-ClarkMosquitto(MQTT協議創始人之一)在家中實現的遠程監控和自動化。並在 OggCamp 的演講上,對MQTT協議進行詳細闡述。

百度貼的話可能還是看不懂,其實他就是個類似qq羣、微信羣一樣的東西。一個人發送一堆人可以收到,他是採用訂閱的方式,你訂閱了某個字段的消息,當這個消息更新時,他就發送到你的手裏。

在實際的使用中,由於一臺MQTT服務器可能需要轉發很多的消息,萬一大家的字段一樣,收串了怎麼辦呢。同學莫慌!他有用戶控制。

啥意思?就是你註冊個用戶,各自都使用這個用戶名和密碼來發布和接受消息,還可以控制你發佈與接收用戶的字段,以防出現串籠子的狀況。

好了,我們還是看看他咋用吧!

使用方法

不指定用戶名及其密碼的收發

記得先運行服務器

sudo mosquitto -d

以下的IP地址需要改成運行服務器電腦的IP啊!!!!!!!!!!!!!!!!!!!!!

訂閱(收)

常用的命令:

mosquitto_sub -h 192.168.1.1 -t "demo" 

其他參數:

mosquitto_sub 

-c 設定‘clean session’爲無效狀態,這樣一直保持訂閱狀態,即便是已經失去連接,如果再次連接仍舊能夠接收的斷開期間發送的消息。
-d 打印debug信息
-h 指定要連接的域名 默認爲localhost
-i 指定clientId
-I 指定clientId前綴
-k keepalive 每隔一段時間,發PING消息通知broker,仍處於連接狀態。 默認爲60秒。
-q 指定希望接收到QoS爲什麼的消息 默認QoS爲0
-R 不顯示陳舊的消息
-t 訂閱topic
-v 打印消息
-u 用戶名
-P 密碼
--will-payload 指定一個消息,該消息當客戶端與broker意外斷開連接時發出。該參數需要與--will-topic一起使用
--will-qos Will的QoS值。該參數需要與--will-topic一起使用
--will-retain 指定Will消息被當做一個retain消息(即消息被廣播後,該消息被保留起來)。該參數需要與--will-topic一起使用
--will-topic 用戶發送Will消息的topic

發佈(發)

常用的命令:

mosquitto_pub -h 192.168.1.1 -t "demo" -m "hello"

其他參數:

mosquitto_pub
d 打印debug信息
-f 將指定文件的內容作爲發送消息的內容
-h 指定要連接的域名 默認爲localhost
-i 指定要給哪個clientId的用戶發送消息
-I 指定給哪個clientId前綴的用戶發送消息
-m 消息內容
-n 發送一個空(null)消息
-p 連接端口號
-q 指定QoS的值(0,1,2)
-t 指定topic
-u 指定broker訪問用戶
-P 指定broker訪問密碼
-V 指定MQTT協議版本
--will-payload 指定一個消息,該消息當客戶端與broker意外斷開連接時發出。該參數需要與--will-topic一起使用
--will-qos Will的QoS值。該參數需要與--will-topic一起使用
--will-retain 指定Will消息被當做一個retain消息(即消息被廣播後,該消息被保留起來)。該參數需要與--will-topic一起使用
--will-topic 用戶發送Will消息的topic

帶用戶名及密碼的

收:

mosquitto_sub  -h 192.168.1.1 -t "demo" -u test -P 123 

發:

mosquitto_pub -h 192.168.1.1 -t "demo" -u test -P 123 -m "hello"

既然說到有用戶那麼如果設置呢

開始配置用戶名及密碼

首先創建密碼配置文件

sudo touch /etc/mosquitto/pwfile

其次是用戶權限配置文件

sudo touch /etc/mosquitto/aclfile

然後是將配置文件的目錄放到mosquitto的配置文件中

sudo /bin/bash -c 'echo "password_file /etc/mosquitto/pwfile" >> /etc/mosquitto/mosquitto.conf'
sudo /bin/bash -c 'echo "acl_file /etc/mosquitto/aclfile" >> /etc/mosquitto/mosquitto.conf'

這時,可以使用命令創建一個用戶了
比如創建一個名爲 test 的用戶,輸入回車後會提醒輸入兩次的密碼
輸入 123

sudo mosquitto_passwd /etc/mosquitto/pwfile test

創建成功需要配置用戶的權限
打開/etc/mosquitto/aclfile文件

sudo vi /etc/mosquitto/aclfile

編寫如下:
意思是用戶 test 可以發佈和訂閱主題爲 demo 的信息

user test
topic write demo
user test
topic read demo

保存過後需要生效配置並重新啓動服務器
其中-c是使用後面路徑的配置文件,-d是爲了後臺運

sudo mosquitto -c /etc/mosquitto/mosquitto.conf -d

在之後,開兩個終端分別輸入以下命令,注意IP地址填自己。
收:

mosquitto_sub  -h 192.168.1.1 -t "demo" -u test -P 123 

發:

mosquitto_pub -h 192.168.1.1 -t "demo" -u test -P 123 -m "hello"

如果在收的一段收到了hello ,證明配置成功。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章