MQTT學習筆記——MQTT協議體驗 Mosquitto安裝和使用

MQTT學習筆記——MQTT協議體驗 Mosquitto安裝和使用 標籤: MQTT物聯網Mosquitto 2014-09-13 16:30 27023人閱讀 評論(15) 收藏 舉報 分類: 物聯網學習筆記(37)
版權聲明:本文爲博主原創文章,未經博主容許不得轉載。 0 前言 MQTT是IBM開發的一個即時通信協議。MQTT是面向M2M和物聯網的鏈接協議,採用輕量級發佈和訂閱消息傳輸機制。Mosquitto是一款實現了 MQTT v3.1 協議的開源消息代理軟件,提供輕量級的,支持發佈/訂閱的的消息推送模式,使設備對設備之間的短消息通訊簡單易用。 若初次接觸MQTT協議,可先理解如下概念: 【MQTT協議特色】——相比於RESTful架構的物聯網系統,MQTT協議藉助消息推送功能,能夠更好地實現遠程控制。 【MQTT協議角色】——在RESTful架構的物聯網系統,包含兩個角色客戶端和服務器端,而在MQTT協議中包括髮布者,代理器(服務器)和訂閱者。 【MQTT協議消息】——MQTT中的消息可理解爲發佈者和訂閱者交換的內容(負載),這些消息包含具體的內容,能夠被訂閱者使用。 【MQTT協議主題】——MQTT中的主題可理解爲相同類型或類似類型的消息集合。linux

1 安裝和使用注意點 1.1 安裝 截止2015年12月,最新版本爲mosquitto-1.4.5ubuntu

下載源代碼包

wget http://mosquitto.org/files/source/mosquitto-1.4.5.tar.gz服務器

解壓

tar zxfv mosquitto-1.4.5.tar.gz架構

進入目錄

cd mosquitto-1.4.5學習

編譯

make測試

安裝

sudo make installui

1.2 安裝注意點 【1】編譯找不到openssl/ssl.h 【解決方法】——安裝openssl sudo apt-get install libssl-dev 【2】編譯過程找不到ares.h sudo apt-get install libc-ares-dev 【3】編譯過程找不到uuid/uuid.h sudo apt-get install uuid-dev 【4】使用過程當中找不到libmosquitto.so.1 error while loading shared libraries: libmosquitto.so.1: cannot open shared object file: No such file or directory 【解決方法】——修改libmosquitto.so位置代理

建立連接

sudo ln -s /usr/local/lib/libmosquitto.so.1 /usr/lib/libmosquitto.so.1調試

更新動態連接庫

sudo ldconfig 【5】make: g++:命令未找到
【解決方法】 安裝g++編譯器 sudo apt-get install g++ssl

2 簡單測試 一個完整的MQTT示例包括一個代理器,一個發佈者和一個訂閱者。測試分爲如下幾個步驟: 【1】啓動服務mosquitto。 【2】訂閱者經過mosquitto_sub訂閱指定主題的消息。 【3】發佈者經過mosquitto_pub發佈指定主題的消息。 【4】代理服務器把該主題的消息推送到訂閱者。

【測試說明】 測試環境:ubuntu 14.04 虛擬機 在本例中,發佈者、代理和訂閱者均爲localhsot,可是在實際的狀況下三種並非同一個設備,在mosquitto中可經過-h(--host)設置主機名稱(hostname)。爲了實現這個簡單的測試案例,須要在linux中打開三個控制檯,分別表明代理服務器、發佈者和訂閱者。

圖1 示例 2.1 啓動代理服務 mosquitto -v 【-v】打印更多的調試信息

2.2 訂閱主題 mosquitto_sub -v -t sensor 【-t】指定主題,此處爲sensor 【-v】打印更多的調試信息

2.3 發佈內容 mosquitto_pub -t sensor -m 12 【-t】指定主題 【-m】指定消息內容

2.4 運行結果 當發佈者推送消息以後,訂閱者得到如下內容 sensor 12 而代理服務器控制檯中會出現——鏈接、消息發佈和心跳等調試信息。經過代理服務器的調試輸出能夠對MQTT協議的相關過程有所瞭解。

圖2 代理服務器調試輸出

3 總結 經過Mosquitto實現MQTT協議代理器(服務器),爲從此的MQTT協議應用作準備。本文並無分析MQTT協議的種種細節,可是但願經過一個簡單的例子把MQTT協議「使用起來」,經過使用過程來理解MQTT協議,在過程當中關注細節收集疑問,再閱讀MQTT協議具體內容,這樣學習起來就不至於枯燥乏味(即便MQTT協議只有40多頁,可是初次閱讀我仍是沒能理解其內涵,只能怪本身智商過低,學術不精。)

相關文章
相關標籤/搜索