# MQTT 入門 > [color=#40f1ef][name=LHB阿好伯, 2021/03/13][:earth_africa:](https://www.facebook.com/LHB0222/) ###### tags: `MQTT` ![](https://i.imgur.com/Bw5GDc2.png) [TOC] # MQTT簡介 MQTT(Message Queuing Telemetry Transport)基於訊息代理(message broker)/發布 (Publish)/訂閱 (Subscribe)之間的通訊協定 資訊的傳輸是通過主題(topic)管理的 發布者有需要分發的資料時,其向連接的訊息代理發送攜帶有資料的控制訊息 代理會向訂閱此主題的客戶端分發此資料 發布者不需要知道訂閱者的資料和具體位置;同樣,訂閱者不需要組態發布者的相關資訊 MQTT 協定使用普通文字傳送連接認憑證,且並不包含任何安全或認證相關的措施。但可以使用傳輸層安全來加密並保護發送的資料,以防止攔截、修改或偽造。 MQTT 預設埠為 1883。加密埠為 8883 topic主題名稱我們可以自行設定 建議使用英文命名 不同階層則以斜線 ==/== 做區隔 ![](https://i.imgur.com/DaxMuep.png) 更多詳細資料可以看[MQTT訊息格式](https://swf.com.tw/?p=1002) ## 服務品質(QoS) 最多一次傳送 (只負責傳送,傳送過後就不管資料的傳送情況) 至少一次傳送 (確認資料交付) 正好一次傳送 (保證資料交付成功) # 推薦電腦客戶端(client)MQTT軟體 ## MQTT X ![](https://i.imgur.com/sq3932z.png) https://mqttx.app/ 測試過幾款最推薦的就是MQTT X 支持 Windows,macOS,Linux 支持 MQTT v3.1.1 以及 MQTT v5.0 採用聊天界面形式,方便快速測試與使用 ### 簡單測試 建立與MQTT Broker連結 這邊我使用公開的線上Broker `broker.emqx.io/` 或者也可以使用HiveMQ提供的Broker`broker.hivemq.com` 其餘也有許多類似的服務器大家可以找找看 https://test.mosquitto.org/ `test.mosquitto.org` ![](https://i.imgur.com/o6CLrb3.png) 設定好Topic就可以開始接收訊息 ![](https://i.imgur.com/JixZdah.png) 輸入要發送的Topic跟資料就可以發送出去 ![](https://i.imgur.com/brYCFuF.png) ### 輸出歷史資料 ![](https://i.imgur.com/yW5ypS4.png) MQTT X支援將資料輸出 但測試四種格式只有JSON資料輸出比較正常 ![](https://i.imgur.com/EF5CRtW.png) 可以利用一些網站進行轉換 我這邊就列舉一個我試過覺得還不錯的 可以將需要的資訊正確轉換 https://www.aconvert.com/tw/document/json-to-csv/ ![](https://i.imgur.com/P4bLuCV.png) ### 補充 軟體也有支援簡體中文跟深色背景有需要的可以調整 ![](https://i.imgur.com/NweDRxG.png) ## 推薦2 MQTT-explorer ![](https://i.imgur.com/BVWiCWX.png) https://mqtt-explorer.com/ 第二款推薦的就是MQTT-explorer 提供了更完整的功能 - 可視化Topic和Topic活動 - 刪除保留的Topic - 搜索/過濾Topic - 發布Topic - 繪製數值類型的Topic折線圖 - 保留每個Topic的歷史記錄 - 深色/淺色外觀主題 ![](https://i.imgur.com/X2RIoD8.png) ![](https://i.imgur.com/xVg8MKd.png) ![](https://i.imgur.com/OunAZLy.png) # 樹莓派MQTT伺服器mosquitto安裝 ## 安裝 首先先更新一下全部軟體 **`sudo apt-get update`** 在安裝mosquitto **`sudo apt-get install mosquitto`** ![](https://i.imgur.com/Pw6q2HS.png) ### 查看安裝版本 輸入 **`mosquitto -v`** 查看安裝的版本 ![](https://i.imgur.com/7YPuBL9.png) ### 啟動時自動開啟 mosquitto 輸入 **`sudo systemctl enable mosquitto.service`** 設定樹梅派開機時自動開啟mosquitto ## 測試 輸入 ==`hostname -I`== 取得樹梅派IP ![](https://i.imgur.com/NkUogKU.png) 輸入到MQTT客戶端(client)中 ![](https://i.imgur.com/R6mf573.png) Prot為1883 再輸入Topic即可享用mosquitto的服務 https://youtu.be/6ZQmCrcc1aE {%youtube 6ZQmCrcc1aE %} # thingspeak MQTT伺服器 測試中出現問題尚未解決 ![](https://i.imgur.com/tCUJrbp.png) mqtt.thingspeak.com ![](https://i.imgur.com/QUrQWoT.png) ![](https://i.imgur.com/QEUpUYZ.png) channels/<channelID>/publish/<apikey> # 參考資料 https://mqtt.org/software/ https://randomnerdtutorials.com/how-to-install-mosquitto-broker-on-raspberry-pi/ https://blog.gtwang.org/iot/raspberry-pi/raspberry-pi-mosquitto-mqtt-broker-iot-integration/2/ 🌟全文可以至下方連結觀看或是補充 https://hackmd.io/@LHB-0222/MQTT 全文分享至 https://www.facebook.com/LHB0222/ https://www.instagram.com/ahb0222/ 有疑問想討論的都歡迎於下方留言 喜歡的幫我分享給所有的朋友 \o/ 有所錯誤歡迎指教 # [:page_with_curl: 全部文章列表](https://hackmd.io/@LHB-0222/AllWritings) ![](https://i.imgur.com/47HlvGH.png)