所有文章
OpenClaw + MQTT:打造 AI 驅動的智慧家庭控制器

OpenClaw + MQTT:打造 AI 驅動的智慧家庭控制器

|4 分鐘閱讀

MQTT 是大多數智慧家庭和 IoT 設定的骨幹協定。它輕量、可靠,從 Raspberry Pi 到工業感測器都能運作。將 OpenClaw 連接到 MQTT Broker,你就能把對話式 AI 代理變成家中所有連網裝置的自然語言控制器。

MQTT 運作原理(30 秒版本)

MQTT 遵循發布/訂閱模型[1]

  • Broker — 中央訊息伺服器(例如 Mosquitto)
  • Topic — 階層式頻道(例如 home/living-room/light/state
  • Publish — 向 topic 發送訊息
  • Subscribe — 監聽 topic 上的訊息

裝置發布自身狀態並訂閱指令 topic。OpenClaw 訂閱狀態更新並發布指令——同時扮演監聽者和控制者的角色。

設定 MQTT Broker

安裝 Mosquitto

Mosquitto 是最廣泛使用的開源 MQTT Broker[2]

在 Ubuntu/Debian 上:

sudo apt install mosquitto mosquitto-clients
sudo systemctl enable mosquitto
sudo systemctl start mosquitto

使用 Docker:

services:
  mosquitto:
    image: eclipse-mosquitto:2
    ports:
      - "1883:1883"
    volumes:
      - ./mosquitto/config:/mosquitto/config
      - mosquitto_data:/mosquitto/data
    restart: unless-stopped

volumes:
  mosquitto_data:

設定認證

即使在區域網路上,也絕對不要在沒有認證的情況下運行 MQTT Broker:

# 建立密碼檔案
mosquitto_passwd -c /mosquitto/config/passwordfile openclaw

# mosquitto.conf
listener 1883
allow_anonymous false
password_file /mosquitto/config/passwordfile

更改設定後請重新啟動 Mosquitto。

將 OpenClaw 連接到 MQTT

安裝 MQTT 技能並設定 Broker 連線:

openclaw plugins install mqtt-control
openclaw config set mqtt.broker "mqtt://localhost:1883"
openclaw config set mqtt.username "openclaw"
openclaw config set mqtt.password "your-secure-password"

重新啟動 OpenClaw 以套用設定:

openclaw restart

驗證連線

openclaw mqtt status

你應該會看到 Broker 連線狀態、已訂閱的 topic 和最近的訊息。

將裝置對應到 Topic

大多數智慧裝置都遵循常見的 topic 結構。告訴 OpenClaw 你的裝置資訊,讓它能解讀自然語言指令:

openclaw memory add "我的 MQTT 裝置對照表:
- 客廳燈:topic home/living-room/light,payload ON/OFF
- 臥室燈:topic home/bedroom/light,payload ON/OFF
- 溫控器:topic home/thermostat/set,payload 是溫度數字
- 前門鎖:topic home/front-door/lock,payload LOCK/UNLOCK
- 動態感測器(客廳):topic home/living-room/motion,回報 DETECTED/CLEAR"

現在 OpenClaw 就知道「關掉客廳的燈」在 MQTT 層面意味著什麼:向 home/living-room/light 發布 OFF

自動化範例

基本裝置控制

裝置對應完成後,自然語言立即可用:

「把所有燈關掉」 「把溫控器設到 21 度」 「鎖上前門」 「客廳的動態感測器有偵測到什麼嗎?」

條件式自動化

OpenClaw 的推理能力不僅限於簡單的開/關:

「如果臥室溫度超過 26 度,開冷氣然後發訊息通知我」

OpenClaw 會訂閱溫度 topic,在超過門檻值時採取行動。

「晚上 11 點以後動態感測器偵測到動靜時,把走廊燈開到 30% 亮度持續 2 分鐘,然後關掉」

場景管理

「建立一個『電影之夜』場景:客廳燈光 15%、打開電視(topic home/tv/power ON)、溫控器設到 22 度」

之後只需:

「啟動電影之夜」

OpenClaw 會記住場景定義,並向所有相關的 topic 發布指令。

能源監控

如果你的智慧插座透過 MQTT 回報耗電量:

「追蹤今天辦公室插座的用電量。一天結束時告訴我總共幾度電」

OpenClaw 訂閱電力 topic,累計讀數,然後報告摘要。

透過 MQTT 整合 Home Assistant

Home Assistant 和 OpenClaw 可以共用同一個 MQTT Broker,建立強大的組合[3]

架構

裝置 → MQTT Broker ← Home Assistant(自動化、儀表板)
                    ← OpenClaw(自然語言控制)

Home Assistant 和 OpenClaw 都連接到 Mosquitto。Home Assistant 負責裝置探索和複雜的自動化。OpenClaw 提供自然語言介面。

設定方式

  1. 在 Home Assistant 中啟用 MQTT 整合,並指向你的 Mosquitto Broker。
  2. 設定 OpenClaw 連接到同一個 Broker。
  3. Home Assistant 的 MQTT 自動探索會發布裝置的元資料,OpenClaw 可以讀取這些資料。

互補角色

任務 Home Assistant OpenClaw
裝置探索 自動(Zigbee2MQTT、Z-Wave) 手動 topic 對應
儀表板 Web UI 搭配圖表 Telegram 對話
簡單自動化 YAML 或視覺化編輯器 自然語言
複雜邏輯 不寫腳本的話受限 強(AI 推理)
遠端控制 App 或 Web 隨時隨地用 Telegram

用 Home Assistant 做裝置管理和儀表板。用 OpenClaw 透過 Telegram 做智慧的、情境感知的控制。

範例:OpenClaw + Home Assistant

Home Assistant 偵測到窗戶感測器開啟(透過 Zigbee2MQTT)。OpenClaw 正在訂閱該 topic:

OpenClaw:「臥室窗戶剛剛打開了。天氣預報顯示 2 小時後會下雨。要我設一個提醒去關窗嗎?」

這種情境感知——結合感測器資料、天氣預報和個人行程——正是 OpenClaw 超越 Home Assistant 規則式自動化之處。

安全考量

加密 MQTT 流量

使用 TLS 加密 MQTT 連線,特別是 Broker 在區域網路以外可存取的情況:

# mosquitto.conf
listener 8883
certfile /certs/server.crt
keyfile /certs/server.key
cafile /certs/ca.crt

更新 OpenClaw 使用安全連接埠:

openclaw config set mqtt.broker "mqtts://your-broker:8883"

限制 Topic 存取

使用 Mosquitto 的 ACL(存取控制清單)限制 OpenClaw 可以發布的 topic:

# acl_file
user openclaw
topic readwrite home/#
topic deny home/security/#

這可以防止 OpenClaw 意外停用你的安全系統。

獨立的 IoT 網路

如果可能,將你的 IoT 裝置放在獨立的 VLAN 上。MQTT Broker 作為網路之間的橋樑——裝置無法直接存取你的主要網路,你的主要網路也只能透過 MQTT 與裝置通訊。

稽核日誌

啟用 Mosquitto 的日誌記錄以追蹤 OpenClaw 發送的每個指令:

# mosquitto.conf
log_type all
log_dest file /mosquitto/log/mosquitto.log

定期檢查日誌,確保 OpenClaw 只發送預期的指令。

處理不穩定的裝置

IoT 裝置會斷線、延遲,偶爾也會出狀況。幾個小技巧:

  • 設定 MQTT QoS 為 1(至少一次傳遞),用於門鎖和警報等重要指令。
  • 使用 retained messages 用在狀態 topic 上,這樣即使裝置暫時離線,OpenClaw 也知道最後已知的狀態。
  • 加入超時機制 — 告訴 OpenClaw:「如果裝置在 10 秒內沒有回應,告知我它可能離線了。」
  • 健康檢查 — 「每天早上檢查所有裝置是否在過去 24 小時內有回應。回報任何看似離線的裝置。」

開始使用

自行託管

  1. 在你的伺服器上安裝 Mosquitto
  2. 在 OpenClaw 上安裝 MQTT 技能
  3. 設定認證和裝置 topic
  4. 透過 Telegram 開始控制裝置

託管服務

ClawTank 上,你的 OpenClaw 實例可以連接到任何外部 MQTT Broker——包括透過 VPN 或 Cloudflare Tunnel 連到在你家中網路上運行的 Broker。你可以享受託管式 OpenClaw 的便利,同時完全掌控本地的 IoT 網路。

MQTT 的裝置互通性結合 OpenClaw 的自然語言推理能力,打造出一個真正理解你意思的智慧家庭控制器——而不只是理解你字面上說了什麼。

References

  1. MQTT.org — MQTT Protocol Specification
  2. Eclipse Mosquitto — Official Documentation
  3. Home Assistant — MQTT Integration
  4. Zigbee2MQTT — Bridging Zigbee Devices to MQTT
  5. OpenClaw Skills Directory — mqtt-control

準備好部署 OpenClaw 了嗎?

不需要 Docker、SSH、DevOps。不到 1 分鐘即可部署。

免費開始使用