準備
下載地址:http://mosquitto.org/download/
ubuntu 20.04安裝Mosquitto服務$ sudo apt-add-repository ppa:mosquitto-dev/mosquitto-ppa$ sudo apt-get update$ sudo apt-get install mosquitto$ sudo apt-get install mosquitto-clients● mosquitto.service - Mosquitto MQTT Broker Loaded: loaded (/lib/systemd/system/mosquitto.service; enabled; vendor preset: enabled) Active: active (running) since Tue 2021-02-02 17:44:19 CST; 14min ago Docs: man:mosquitto.conf(5) man:mosquitto(8) Process: 794 ExecStartPre=/bin/mkdir -m 740 -p /var/log/mosquitto (code=exited, status=0/SUCCESS) Process: 800 ExecStartPre=/bin/chown mosquitto: /var/log/mosquitto (code=exited, status=0/SUCCESS) Process: 807 ExecStartPre=/bin/mkdir -m 740 -p /var/run/mosquitto (code=exited, status=0/SUCCESS) Process: 818 ExecStartPre=/bin/chown mosquitto: /var/run/mosquitto (code=exited, status=0/SUCCESS) Main PID: 821 (mosquitto) Tasks: 1 (limit: 38201) Memory: 2.8M CGroup: /system.slice/mosquitto.service └─821 /usr/sbin/mosquitto -c /etc/mosquitto/mosquitto.conf2月 02 17:44:19 andrew-HP-EliteDesk-880-G5-TWR systemd[1]: Starting Mosquitto MQTT Broker...2月 02 17:44:19 andrew-HP-EliteDesk-880-G5-TWR systemd[1]: Started Mosquitto MQTT Broker.$ netstat -an | grep 1883tcp 0 0 127.0.0.1:1883 0.0.0.0:* LISTEN tcp6 0 0 ::1:1883 :::* LISTEN
Windows安裝Mosquitto服務下載exe檔案,啟動服務即可。
安裝MQTT.fxMQTT.fx是一個用JavaFX實現的GUI工具,適用於Windows、Linux和macOS。這個工具可以讓我們連線到MQTT伺服器,訂閱主題過濾器,檢視收到的訊息和釋出訊息到主題。你可以從這個工具的主網頁的下載部分下載適合你的作業系統的版本:http://www.mqttfx.org 。
ubuntu 20.04 sudo apt-add-repository ppa:mosquitto-dev/mosquitto-ppa sudo apt-get update
Windows
安裝exe檔案即可。
無人機控制例項無人機(drone)是一種與許多感測器和執行器互動的物聯網裝置,包括與發動機、螺旋槳和伺服電機相連的數位電子速度控制器。無人機也被稱為無名飛行器( UAV Unnamed Aerial Vehicle)。讓我們想象一下,我們必須監控許多無人機。具體來說,我們必須顯示它們的高度和每個伺服電機的速度。並非所有的無人機都有相同數量的發動機、螺旋槳和伺服電機。
每架無人機將每兩秒鐘釋出一次高度到以下主題:sensor/dronename/altitude ,其中dronename必須用分配給每架無人機的名字來代替。例如,名為drone01的無人機將把它的高度值釋出到sensor/drone01/altitude主題,而名為drone20的無人機將使用sensor/drone20/altitude主題。
此外,每架無人機每兩秒釋出其每個轉速到以下主題:sensor/dronename/speed/rotor/rotornumber。
我們將使用 Mosquitto 中包含的 mosquitto_sub 命令列工具來生成一個簡單的 MQTT 客戶端,該客戶端可以訂閱主題並顯示它收到的所有訊息。
$ mosquitto_sub -V mqttv311 -t sensors/drone01/altitude -dClient (null) sending CONNECTClient (null) received CONNACK (0)Client (null) sending SUBSCRIBE (Mid: 1, Topic: sensors/drone01/altitude, QoS: 0, Options: 0x00)Client (null) received SUBACKSubscribed (mid: 1): 0
上面建立MQTT客戶端,它將與本地MQTT伺服器建立連線,訂閱主題:sensor/drone01/altitude 。我們用-V mqttv311指定要使用MQTT伺服器的MQTT版本3.1.1。-d選項來啟用除錯訊息。
下面使用 MQTT.fx GUI 實用程式生成另一個 MQTT 客戶端,該客戶端訂閱相同的主題,sensor/drone01/altitude ,並顯示它收到的所有訊息。
MQTT伺服器將處理有效的SUBSCRIBE包,它將用一個SUBACK包來響應,表示訂閱確認,並確認SUBSCRIBE包的接收和處理。SUBACK包將在包頭中包含與SUBSCRIBE包中收到的相同的包識別符號(PacketId)。SUBACK包將為SUBSCRIBE包中接收到的主題過濾器和所需的QoS級別的返回碼。
返回程式碼值
0 以最大的QoS為0的方式成功訂購。1 成功申請最大QoS為1的服務。2 成功申請最大QoS為2的服務。128 未能訂閱