# MQTT 入門
> [color=#40f1ef][name=LHB阿好伯, 2021/03/13][:earth_africa:](https://www.facebook.com/LHB0222/)
###### tags: `MQTT`

[TOC]
# MQTT簡介
MQTT(Message Queuing Telemetry Transport)基於訊息代理(message broker)/發布 (Publish)/訂閱 (Subscribe)之間的通訊協定
資訊的傳輸是通過主題(topic)管理的
發布者有需要分發的資料時,其向連接的訊息代理發送攜帶有資料的控制訊息
代理會向訂閱此主題的客戶端分發此資料
發布者不需要知道訂閱者的資料和具體位置;同樣,訂閱者不需要組態發布者的相關資訊
MQTT 協定使用普通文字傳送連接認憑證,且並不包含任何安全或認證相關的措施。但可以使用傳輸層安全來加密並保護發送的資料,以防止攔截、修改或偽造。
MQTT 預設埠為 1883。加密埠為 8883
topic主題名稱我們可以自行設定
建議使用英文命名
不同階層則以斜線 ==/== 做區隔

更多詳細資料可以看[MQTT訊息格式](https://swf.com.tw/?p=1002)
## 服務品質(QoS)
最多一次傳送 (只負責傳送,傳送過後就不管資料的傳送情況)
至少一次傳送 (確認資料交付)
正好一次傳送 (保證資料交付成功)
# 推薦電腦客戶端(client)MQTT軟體
## MQTT X

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`

設定好Topic就可以開始接收訊息

輸入要發送的Topic跟資料就可以發送出去

### 輸出歷史資料

MQTT X支援將資料輸出
但測試四種格式只有JSON資料輸出比較正常

可以利用一些網站進行轉換
我這邊就列舉一個我試過覺得還不錯的
可以將需要的資訊正確轉換
https://www.aconvert.com/tw/document/json-to-csv/

### 補充
軟體也有支援簡體中文跟深色背景有需要的可以調整

## 推薦2 MQTT-explorer

https://mqtt-explorer.com/
第二款推薦的就是MQTT-explorer
提供了更完整的功能
- 可視化Topic和Topic活動
- 刪除保留的Topic
- 搜索/過濾Topic
- 發布Topic
- 繪製數值類型的Topic折線圖
- 保留每個Topic的歷史記錄
- 深色/淺色外觀主題



# 樹莓派MQTT伺服器mosquitto安裝
## 安裝
首先先更新一下全部軟體
**`sudo apt-get update`**
在安裝mosquitto
**`sudo apt-get install mosquitto`**

### 查看安裝版本
輸入 **`mosquitto -v`** 查看安裝的版本

### 啟動時自動開啟 mosquitto
輸入
**`sudo systemctl enable mosquitto.service`**
設定樹梅派開機時自動開啟mosquitto
## 測試
輸入 ==`hostname -I`== 取得樹梅派IP

輸入到MQTT客戶端(client)中

Prot為1883
再輸入Topic即可享用mosquitto的服務
https://youtu.be/6ZQmCrcc1aE
{%youtube 6ZQmCrcc1aE %}
# thingspeak MQTT伺服器
測試中出現問題尚未解決

mqtt.thingspeak.com


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)
