[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. 前置准备

 

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.confpasswd 两个文件都已成功创建。

 

   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)?

您可以在华硕下载中心取得最新的软件、手册、驱动程序和固件。

如果您需要有关华硕下载中心的更多信息,请参考此链接