找回密碼
 立即註冊
    查看: 152|回覆: 0

    【MQTT 實作 1】從零裝 Mosquitto,到發出第一個自己做的感測器

    [複製鏈接]

    !lvup!   100%

    386

    主題

    27

    回帖

    2200萬

    積分

    管理員

    積分
    22006063
    發表於 2026-9-21 08:38:22 | 顯示全部樓層 |閱讀模式
    用 Zigbee2MQTT 的人都知道,裝置配對完就自動出現在 Home Assistant 裡。那個機制叫 MQTT Discovery。

    懂了它,你可以把任何東西變成 HA 裡的實體:一段 Python、一台舊機器、網頁上爬下來的數字。

    這篇從完全還沒裝 MQTT 開始,一路做到「HA 的裝置清單裡出現一台你自己造的感測器」。每一步都寫了正常的輸出長什麼樣,以及發錯的時候會看到什麼 —— MQTT 的錯誤有很大一部分是「什麼事都沒發生」,不先知道這件事會找很久。

    發錯的時候會看到什麼

    做完這篇你會有什麼


    • 一台跑在自己機器上、有帳號密碼保護的 Mosquitto broker
    • 會用 mosquitto_sub 和 mosquitto_pub 看流量、發訊息
    • HA 裡一台叫「書房感測盒」的裝置,底下有一個溫度實體,完全是你手動發出來的
    • 知道發錯時每一種症狀分別代表什麼


    需要準備的東西


    • 一台能跑 Docker 的機器(NAS、樹莓派、小主機、或 HA 所在的那台)
    • 已經能用的 Home Assistant
    • 那台機器的區域網路 IP。下面全部用 192.168.1.20 當範例,記得換成你自己的


    ---

    第一步:先建立正確的心智模型(兩分鐘)

    MQTT 只有三個角色:


    • Broker(中介) —— 一間郵局。所有訊息都經過它,它自己不解讀內容
    • Publish(發布) —— 寄一封信到某個「主題」
    • Subscribe(訂閱) —— 跟郵局說「有寄到這個主題的信都轉給我」


    主題(Topic)就是一個用斜線分層的字串,沒有任何預先定義:
    1. home/study/temperature
    2. zigbee2mqtt/客廳溫濕度
    3. homeassistant/sensor/study_temp/config
    複製代碼

    訂閱的時候可以用兩個萬用字元:


    • + 代表剛好一層。訂 home/+/temperature 會收到 home/study/temperature,但收不到 home/2f/study/temperature
    • # 代表剩下所有層,而且只能放在最後。訂 home/# 會收到 home 底下全部


    ⚠ 最重要的一句話:broker 完全不檢查主題對不對。你發到一個打錯字的主題,它會開開心心地收下並轉給訂閱者(沒有訂閱者就丟掉),不會有任何錯誤。這是後面所有「什麼都沒發生」的根源。

    ---

    第二步:裝 Mosquitto

    兩條路,選一條就好。

    路線 A:Home Assistant OS 的附加元件(最簡單)


    • 設定 → 附加元件 → 附加元件商店,搜尋 Mosquitto broker
    • 按安裝,裝完按啟動
    • 打開在啟動時啟動與監看兩個開關


    這個附加元件會直接用 HA 的使用者帳號做驗證,所以先去建一個專用帳號:


    • 設定 → 人員 → 使用者 → 新增使用者
    • 名稱與登入帳號都填 mqtt,設一個密碼(記下來)
    • 不要勾「可以管理」


    你會看到什麼

    附加元件的「日誌」分頁會出現:
    1. mosquitto version 2.0.22 starting
    2. Config loaded from /etc/mosquitto/mosquitto.conf.
    3. Opening ipv4 listen socket on port 1883.
    4. Opening ipv6 listen socket on port 1883.
    5. mosquitto version 2.0.22 running
    複製代碼

    沒有 running 那一行就是設定有問題,往上捲找第一個 Error。

    路線 B:自己用 Docker 跑(NAS、小主機、或想要完全掌控)

    B-1. 建立目錄結構
    1. sudo mkdir -p /opt/mosquitto/{config,data,log}
    2. cd /opt/mosquitto
    複製代碼

    以下還有約 85% 的內容
    登入後即可閱讀完整教學

    登入繼續閱讀使用 Google 登入
    您需要登入後纔可以回帖 登入 | 立即註冊

    本版積分規則

    延伸閱讀

    加入惟家 LINE 群 QR Code加入惟家 LINE 群

    Archiver|手機版|惟家的智能論壇

    GMT+8, 2026-11-10 00:43 , Processed in 0.125324 second(s), 25 queries .

    快速回覆 返回頂部 返回列表