在著手規劃智慧家庭的你,肯定苦惱過要怎麼選擇智慧裝置品牌,這麼多品牌都有推出 Zigbee 裝置,該如何選擇?每個品牌都要透過各自的 APP 進行設定,是否也讓你覺得困擾?

今天就來介紹在 Home Assistant 如何透過 Zigbee2MQTT 接入幾乎所有 Zigbee 設備,讓你徹底擺脫品牌 APP 們的束縛!如果你有 Aqara、Tuya 或其他品牌 Zigbee 裝置想接入 Home Assistant,那今天的教學肯定能幫到你!

概念:什麼是 Zigbee?什麼是 Zigbee2MQTT?

Zigbee

Zigbee 是一種智慧家庭裝置通訊協定,常見的智慧家庭通訊協定有:WiFi、Bluetooth、Zigbee、zWave、Matter,而 Zigbee 是其中唯二建議優先考慮的通訊協定 (另一個是 Matter),原因請參考:

智慧家庭必備三大元素,懶的程度決定家的智慧程度
「科技始終來自於人性」這句 20 多年前的廣告台詞,一直到現在還是如此地貼切。如果你跟我一樣沒有最懶只有更懶,如果你像我們一樣每天睡前都在猜拳誰下床關燈(然後猜贏了還是我要下床),如果你和我一樣每天出門都在想「燈關了沒?冷氣關了沒?」那建置智慧家庭肯定會是你有生以來最棒的決定!今天就由我來跟你介紹什麼是智慧家庭,再告訴你這一切該從何開始!

Zigbee 採用 Mesh 架構,在 Zigbee Mesh 網路環境中各節點可以建立複數連結,各個裝置只要不和 Zigbee 網路環境完全中斷就可以正常運作,網路環境中有三個不同的角色:Coordinator、Router、End device

  1. Coordinator:也就是「網關」,是整個 Zigbee 網路環境的核心,所有 Zigbee 裝置都會連接上 Coordinator。
  2. Router:也稱「中繼器」,可以幫助擴展 Zigbee 網路覆蓋範圍,非電池供電的 End device 很常同時也是 Router,例如:Zigbee 開關、插座。
  3. End device:整個 Zigbee 網路環境中最末端的裝置。

整個 Zigbee mesh network 大概是下圖這樣的結構,Zigbee 通訊覆蓋範圍可以透過 Router 進行擴展,遇到牆也可以利用 Router 加強 end device 連線品質。

Zigbee2MQTT

Zigbee2MQTT 也就是指 Zigbee to MQTT,通常會用 Z2M 簡稱,簡單來說是個 Zigbee 與 MQTT 溝通的橋樑,詳細資訊可以參考 Zigbee2MQTT 官網:https://www.zigbee2mqtt.io/,使用 Zigbee2MQTT 作為家中 Zigbee 裝置連線的手段雖然不一定需要對 Zigbee2MQTT 技術有完整的理解 (我就是這樣 😂),但一定要先確認購買的 Zigbee 裝置是 Zigbee2MQTT 有支援的,選購裝置前記得先參考:

Zigbee2MQTT
Zigbee to MQTT bridge, get rid of your proprietary Zigbee bridges

透過 Zigbee2MQTT 接入有什麼好處?

以 Aqara 為例,Aqara 裝置接入 Home Assistant 最入門的方式是透過 "Aqara Gateway" 這個第三方 plug-in 來轉接入 Home Assistant,不過裝置還是要先接入 Aqara 平台,也就是裝置資訊及資設定實際上是儲存在 Aqara 雲端再同步給 Home Assistant,最終達成 cloud control 和 local control 同時併行,流程大概像這樣:

而透過 Zigbee2MQTT 接入則是讓裝置直接接入 Home Assistant,達成純粹的 local control,不用擔心資料安全問題,這種方式 Home Assistant 和裝置之間的溝通流程大概是這樣:

透過上面兩個流程圖應該可以清楚看到兩種接入方式存在本質上的差別,使用 Zigbee2MQTT 幾乎沒有任何缺點,所以建議 Zigbee 裝置都優先考慮有 Zigbee2MQTT 方式接入 Home Assistant!

Step 0. 佈建 Home Assistant、準備 Zigbee2MQTT 網關

Step 0-1. 佈建 Home Assistant

已經佈建好 Home Assistant 的話可以跳過這一步,或是可以參考:

Home Assistant 安裝步驟詳解,快速打造智慧家庭 – 手把手教學 EP 1
在樹莓派安裝 Home Assistant 不是洪水猛獸,就算不會寫程式也沒問題!一步步照著做你也可以擁有屬於自己的 Home Assistant!拋開你那「我先用 xxx 之後再轉 HA」的想法,馬上跟著我開始吧!

Step 0-2. 準備 Zigbee2MQTT 網關

參考 Zigbee2MQTT 官方網關支援說明:

Supported Adapters | Zigbee2MQTT
Zigbee to MQTT bridge, get rid of your proprietary Zigbee bridges

Zigbee2MQTT 網關可以在各大網購通路搜尋並購買適合的 Zigbee2MQTT,這裡提供蝦皮搜尋結果參考。

Zigbee2MQTT 網關有幾種安裝、連線方式:USB 直插、有線網路、WiFi,建議優先考慮 USB 或有線網路,連線會比 WiFi 來得更穩定,我是選用 USB 直接插在安裝了 Home Assistant 的樹莓派上,除了比較醜之外,基本上沒什麼缺點。


Step 1. 安裝 Mosquitto (MQTT Broker)

Step 1-1. Home Assistant ➜ 左側「設定」➜「附加元件」

Step 1-2. 進入「附加元件商店」

Step 1-3. 搜尋、安裝 Mosquitto

Step 1-4. 啟動 Mosquitto

啟動完成之後如下圖:

※ 記得看一下「日誌」有沒有任何錯誤訊息,沒有錯誤訊息就沒問題囉!


Step 2. 安裝 Zigbee2MQTT

Step 2-1. 新增 Zigbee2MQTT repository

Zigbee2MQTT 屬於第三方 Add-on,非 Home Assistant 官方內建,先到 Zigee2MQTT Github 頁面 複製連結。

接著回到 Home Assistant 附加元件商店 (Add-on store) 點擊右上角選擇「儲存機制 (Repositories)」,將剛剛複製的連結填入輸入框,接著按「新增 (ADD)」

Step 2-2. 安裝 Zigbee2MQTT

Repository 新增完成後會在附加元件 (Add-on) 清單中新增三項:Zigbee2MQTT、Zigbee2MQTT Edge、Zigbee2MQTT Proxy,選擇「Zigbee2MQTT」安裝。


Step 3. 設定/啟動 Zigbee2MQTT

接下來這段算是全部最複雜的部分,不過還好只需要設定一次,加油!

Step 3-1. 進入 Zigbee2MQTT 設定 (Configuration)

Step 3-2. 設定 server

如果是使用 USB 直插的 Zigbee2MQTT 網關,這裡就輸入 "mqtt://core-mosquitto"

如果是使用有線網路、WiFi 的 Zigbee2MQTT,這裡就需要輸入 Home Assistant 的 IP (可以從路由器去查,記得要在路由器設定固定 IP),格式是 "mqtt://xxx.xxx.xxx.xxx"

Step 3-3. 設定 user, password

user, password 這裡輸入你安裝 Home Assistant 時設定的帳號、密碼。

Step 3-4. 設定 port

這裡依網關類型分為兩種:USB 直插、網路連結 (有線乙太網路 or WiFi),這裡就看你是購買哪種網關擇一參考操作。

如果你是「USB 直插網關」

Home Assistant「設定」➜「系統」➜「硬體」➜「所有硬體」➜ 搜尋 "USB",找到你插在 Home Assistant 主機上的 USB 網關的 "裝置路徑" (如果不知道怎麼辨識,那就看一下插上前後多了哪個裝置)

將找到的 "裝置路徑" 填入 Zigbee2MQTT 設定中 serial 區段 port: 後面 (如下圖),最後按下儲存 (Save)。

如果你是「網路連結 (有線網路 or WiFi)」

  • 從路由器上找到網關 IP (記得設定固定 IP,否則很有可能會因為時常連不上而需要頻繁更換)。
  • 參考購買的網關的設定教學,確定該網關使用幾號 port。
  • 將 IP 和網關使用的 port 號 (不同家做的網關可能使用不同 port) 組合後填入 Zigbee2MQTT 設定中 serial 區段 port: 後面 (如下圖)
    舉例來說我路由器看到網關 IP 是 "192.168.50.18",而網關使用的 port 是 "6638",這時候我要填入的值就是 tcp://192.168.50.18:6638。
  • 最後按下儲存 (Save)。

Step 3-5. 設定 adapter

這裡可填的值有:zstackemberdeconzzigate , zboss,依你網關使用的晶片而定。

你可以從 Zigbee2MQTT 的官方說明中找到你的網關是使用哪個晶片,或是直接詢問網關的賣家。

Supported Adapters | Zigbee2MQTT
Zigbee to MQTT bridge, get rid of your proprietary Zigbee bridges

Step 3-6. 啟動 Zigbee2MQTT

在 Zigbee2MQTT「info」把 Start on boot、Watchdog、Auto update、Show in sidebar 這四項打開,並啟動 (Start),接著查看一下「Log」有沒有任何錯誤,如果正常啟動,接下來就可以進到 Web UI 開始接入設備啦!


Step 4. 將設備接入 Zigbee2MQTT

恭喜你已經完成最麻煩的步驟!接下來就可以使用 Zigbee2MQTT 提供的操作介面進行裝置接入。

Step 4-1. Zigbee2MQTT 開啟「允許裝置加入」

進入 Zigbee2MQTT 後點擊「允許新裝置配對」,這時候右上角會出現一個綠色的提示訊息"Zigbee: allowing new devices to join." 這時候 Zigbee2MQTT 就已經開啟配對模式了。

Step 4-2. Zigbee 設備開啟配對模式

以 Aqara 智能開關為例,開啟配對模式的方式是長按 5 秒直到藍色指示燈閃爍;不同 Zigbee 設備開啟配對模式的方式不同,配對前先參考使用手冊確認配對方式。

Step 4-3. Zigbee 設備配對成功

配對時畫面右上角會出現配對狀況訊息,基本上看到都是綠燈就沒問題,如果有出現錯誤,有幾種可能問題和可能的嘗試:

  1. 嘗試重複前面兩個步驟重新配對
  2. 嘗試把要配對的裝置離網關進一點
  3. 你買的裝置可能不支援 Zigbee2MQTT,參考這段

以上就是 Home Assistant 透過 Zigbee2MQTT 接入 Zigbee 設備的方法,從此以後就不需要每個品牌都一個網關啦!也可以享受 local control 的低延遲囉!

如果你看完覺得 Zigbee2MQTT 安裝太麻煩,也可以參考 ZHA:

Home Assistant Connect ZBT-1 + ZHA 最無腦原生 Zigbee 網關打通 (幾乎) 所有 Zigbee 裝置 – Home Assistant 手把手教學 EP 16
繼上一篇 隨插即用 Home Assistant Green 設置教學 之後,今天接著介紹 Home Assistant Connect ZBT-1 搭配 ZHA (Zigbee Home Automation) 這個同樣小白友善的原生 Zigbee 連線方案。 Home Assistant Green + Connect ZBT-1 這個組合將讓你不再需要因為 ”架設 Home Assistant 看似很複雜” 而害怕採用 Home Assistant 作為你的智慧家庭中樞系統,也不用因此屈就其他雲端中樞系統。「你終究要 HA,何不一開始就 HA?」對吧 🤣