2021年1月21日 星期四

樹莓派學習筆記 : 用 wget install 安裝 MQTT 套件 mosquitto

因為用編譯原始碼方式安裝 mosquitto 套件在編譯階段出現錯誤而失敗, 所以只好用 wget install 安裝已編譯好的套件檔 mosquitto 與 mosquitto-clients, 參考 : 


安裝指令如下 :

wget install mosquitto mosquitto-clients  

下面是將安裝過程丟到一個檔案中 : 

pi@raspberrypi:~ $ sudo apt-get install mosquitto mosquitto-clients > mosquitto.txt    
pi@raspberrypi:~ $ cat mosquitto.txt   
正在讀取套件清單...
正在重建相依關係...
正在讀取狀態資料...
下列的額外套件將被安裝:
  libmosquitto1
建議套件:
  apparmor
下列【新】套件將會被安裝:
  libmosquitto1 mosquitto mosquitto-clients
升級 0 個,新安裝 3 個,移除 0 個,有 335 個未被升級。
需要下載 221 kB 的套件檔。
此操作完成之後,會多佔用 500 kB 的磁碟空間。
是否繼續進行 [Y/n]? [Y/n] 下載:1 http://mirror.ossplanet.net/raspbian/raspbian stretch/main armhf libmosquitto1 armhf 1.4.10-3+deb9u4 [47.2 kB]
下載:2 http://mirror.ossplanet.net/raspbian/raspbian stretch/main armhf mosquitto armhf 1.4.10-3+deb9u4 [122 kB]
下載:3 http://mirror.ossplanet.net/raspbian/raspbian stretch/main armhf mosquitto-clients armhf 1.4.10-3+deb9u4 [52.3 kB]
取得 221 kB 用了 2s (75.0 kB/s)
選取了原先未選的套件 libmosquitto1:armhf。
(讀取資料庫 ... 目前共安裝了 148260 個檔案和目錄。)
Preparing to unpack .../libmosquitto1_1.4.10-3+deb9u4_armhf.deb ...
Unpacking libmosquitto1:armhf (1.4.10-3+deb9u4) ...
選取了原先未選的套件 mosquitto。
Preparing to unpack .../mosquitto_1.4.10-3+deb9u4_armhf.deb ...
Unpacking mosquitto (1.4.10-3+deb9u4) ...
選取了原先未選的套件 mosquitto-clients。
Preparing to unpack .../mosquitto-clients_1.4.10-3+deb9u4_armhf.deb ...
Unpacking mosquitto-clients (1.4.10-3+deb9u4) ...
Processing triggers for libc-bin (2.24-11+deb9u4) ...
設定 mosquitto (1.4.10-3+deb9u4) ...
Processing triggers for systemd (232-25+deb9u11) ...
Processing triggers for man-db (2.7.6.1-2) ...
設定 libmosquitto1:armhf (1.4.10-3+deb9u4) ...
設定 mosquitto-clients (1.4.10-3+deb9u4) ...
Processing triggers for libc-bin (2.24-11+deb9u4) ...

可見已經順利完成安裝, 這樣就可以來測試看看用 MQTT 協定來訂閱與發送訊息了 : 

開啟兩個終端機視窗, 一個用來發布訊息 (publisher); 另一個用來訂閱訊息 (subscriber). 首先在訂閱者終端機以下列指令訂閱主題為 abc 所發布的訊息 :

mosquitto_sub -h 發布者網址 -t 主題

pi@raspberrypi:~ $ mosquitto_sub -h localhost -t abc     

訂閱後此終端機視窗會停住, 事實上是進入等待訊息的迴圈. 接著在發布者終端機以下列指令發布訊息 :

mosquitto_pub -h 發布者網址 -t 主題 -m "訊息"

pi@raspberrypi:~ $ mosquitto_pub -h localhost -t abc -m "hello world"

此指令針對 abc 主題發布了 "hello world" 訊息, 這時處於等待訊息迴圈的訂閱者終端機視窗就會顯示所接收到的訊息 :

hello world

發布者連續發布三個訊息 : 

pi@raspberrypi:~ $ mosquitto_pub -h localhost -t abc -m "hello world"  
pi@raspberrypi:~ $ mosquitto_pub -h localhost -t abc -m "hello tony"  
pi@raspberrypi:~ $ mosquitto_pub -h localhost -t abc -m "hello amy"  




訂閱者會連續收到三個訊息 :

hello world
hello tony
hello amy




注意, 訂閱者終端機將一直處於等待接收迴圈直到按下 CTRL+C 才會終止迴圈, 我覺得此迴圈似乎還蠻吃資源的, 訂閱指令一下達後, 桌面操作即變得有點卡卡, CPU 使用從 3% 上升到 20%. 

沒有留言:

張貼留言