[AI路由器] 安裝MQTT broker (Mosquitto)
MQTT(Message Queuing Telemetry Transport)是一種輕量級的訊息傳遞協定,常用於物聯網(IoT)設備之間的通訊。 在 Home Assistant 中,MQTT 常用於自動化串接。例如,當你使用 Frigate 進行影像分析(如偵測到有人進入特定區域),Frigate 會透過 MQTT 發送訊息給 Home Assistant,進而觸發其他自動化動作(如開燈、發送通知等)。
MQTT的角色:
MQTT協定中的角色? 以 Frigate 整合 IP 攝影機與 Home Assistant 的情境為例:
- 發布者 (Publisher) : Frigate。當 Frigate 從 IP 攝影機的影像中偵測到事件(例如,有人進入特定區域),它會將此事件作為一則訊息發布到 MQTT 代理伺服器。
- 訂閱者 (Subscriber) : Home Assistant。它會訂閱 Frigate 發布訊息的特定主題。當 Home Assistant 收到訊息後,便可觸發自動化動作(例如開燈、發送通知)。
- 代理伺服器 (Broker) : Mosquitto。它扮演中間人的角色,接收來自 Frigate 的訊息,並將其轉發給訂閱該主題的 Home Assistant。 在這個例子中,Frigate 和 Home Assistant 彼此並不直接通訊,而是透過 Mosquitto 這個 MQTT 代理伺服器(Broker)來進行訊息的傳遞與管理。
1. 前置準備
- 確認會使用Portainer基本操作,可參考用 AdGuard Home 範例認識 Docker、Image、Container、Portainer的教學。
- 過程中會使用到vi 這個文字編輯器的基本操作,可先上網查詢相關教學。
2. 安裝 Mosquitto
2-1. 使用Portainer部署Mosquitto:
- 進入 Portainer 的「Stacks」頁面,點擊「Add Stack」。
- 將此 Stack 命名為 mosquitto。
- 在「Web editor」中,貼上以下設定:

version: "3.8" services: # --- MQTT Broker (Eclipse Mosquitto) --- mosquitto: image: eclipse-mosquitto:2 container_name: mosquitto restart: unless-stopped volumes: - mosquitto_config:/mosquitto/config - mosquitto_data:/mosquitto/data - mosquitto_log:/mosquitto/log
ports: - "1883:1883" # MQTT - "9001:9001" # WebSocket volumes: mosquitto_config: mosquitto_data: mosquitto_log: |
2-2. 點擊「Deploy the stack」按鈕,完成部署。

3. 設定 Mosquitto
3-1. 進入 Portainer 的「Containers」頁面,找到 mosquitto。
3-2. 點擊 mosquitto 進入容器詳情頁面,點擊「Console」標籤。

3-3. 在「Command」欄位輸入 /bin/sh,點擊「Connect」按鈕,進入容器的命令列介面。

3-4. 在命令列中,輸入以下指令,建立密碼檔。
mosquitto_passwd -c -b /mosquitto/config/passwd <username> <password>
<username> 和 <password> 替換為你想設定的使用者名稱和密碼(建議使用英文與數字組合,且帳號密碼開頭不使用#符號)。
確認檔案建立: 您可以輸入 ls /mosquitto/config 來確認 mosquitto.conf 和 passwd 兩個檔案都已成功建立。

3-5. 編輯 Mosquitto 的設定檔 mosquitto.conf,輸入以下指令。
vi /mosquitto/config/mosquitto.conf

3-6. 在 mosquitto.conf 檔案中,加入以下設定,設定密碼檔路徑與允許匿名連線 按下 i 鍵,進入編輯模式,將以下內容加入檔案前面或後面。
可使用 ctrl + shift + v 在 vi 編輯器中貼上文字。
allow_anonymous false password_file /mosquitto/config/passwd listener 1883 0.0.0.0 socket_domain ipv4 |

3-7. 按下 Esc 鍵,輸入 :wq,按下 Enter 鍵,儲存並離開編輯器,(若想放棄修改,請輸入 :q! 後按下Enter 鍵)。

3-8. 重新啟動 Mosquitto 容器,讓設定生效。
- 回到 Portainer 的「Containers」頁面,找到 mosquitto。
- 點擊 mosquitto 進入容器詳情頁面,點擊「Restart」按鈕,重新啟動容器。

4. 在 Home Assistant 中設定 MQTT 整合
4-1. 進入 Home Assistant 的「設定 (Settings)」>「裝置與服務 (Devices & services)」,點擊「新增整合 (ADD INTEGRATION)」。
4-2. 搜尋並選擇「MQTT」。

4-3. 在彈出的對話框中,選MQTT ,輸入以下資訊:
- Broker: localhost 或 AI board的IP地址
- Port: 1883
- Username: 您在上一步驟中為 mosquitto 設定的帳號。
- Password: 您為 Mosquitto 設定的密碼。


4-4. 完成後,你可以使用 MQTT 客戶端連接到 mosquitto。

如何取得(Utility / Firmware)?
您可以在華碩下載中心取得最新的軟體,手冊,驅動程式和韌體。
如果您需要有關華碩下載中心的更多訊息,請參考此連結。