建立 Matter 裝置

1. 簡介

Matter 是一種連線通訊協定,可為智慧型裝置開發帶來令人期待的機會。在本程式碼研究室中,您將建構第一個 Matter 裝置。如要瞭解 Matter,請前往 Google Home 開發人員中心:MatterConnectivity Standards Alliance 網站

課程內容

  • 如何將實體裝置與 Matter 整合。
  • 如何使用 Google Home 委派及控制 Matter 裝置。

軟硬體需求

2. 設定環境

找出序號裝置

設定開發環境的第一步,是判斷裝置連線的序列埠。您可以使用這項資訊,對開發人員板進行程式設計及互動。

  1. 使用 USB 傳輸線將開發人員板連接至電腦。
  2. /dev 檔案系統中尋找開發人員板裝置。你可以指定開發人員板的裝置前置字元,縮小搜尋範圍。Espressif 的 ESP32 使用 /dev/ttyUSBx
    user@host $ ls /dev/ttyUSB*
    /dev/ttyUSB0
    

設定中樞裝置

使用您打算用於本程式碼研究室的 Google 帳戶設定中樞裝置。

設定開發環境

必要條件

這些操作說明已在 Debian Linux 上測試,應適用於大多數以 Debian 為基礎的 Linux 發行版本,包括 Ubuntu。如果您使用其他 Linux 發行版,依附元件設定程序可能與下文有所不同。

安裝依附元件

執行下列指令,安裝可能尚未安裝的必要 Linux 套件二進位檔:

$ sudo apt-get install git gcc g++ pkg-config libssl-dev libdbus-1-dev \
libglib2.0-dev libavahi-client-dev ninja-build python3-venv python3-dev \
python3-pip unzip libgirepository1.0-dev libcairo2-dev libreadline-dev screen

設定 SDK

如要繼續進行本程式碼研究室,您需要 Espressif SDK (Espressif IoT 開發架構或「ESP-IDF」)。

  1. 建立目錄來存放 ESP-IDF:
    $ mkdir ~/esp-idf_tools
    
  2. 從 GitHub 將 ESP-IDF 複製到這個目錄:
    $ cd ~/esp-idf_tools
    $ git clone -b v4.4.3 --recursive https://github.com/espressif/esp-idf.git
    
  3. 完成工具鍊安裝:
    $ cd ./esp-idf
    $ ./install.sh
    $ cd ~/
    

設定 Matter SDK

  1. 複製開放原始碼 Matter 存放區:
    $ git clone https://github.com/project-chip/connectedhomeip.git
    $ cd ./connectedhomeip
    $ git fetch origin v1.0-branch
    $ git checkout FETCH_HEAD
    
  2. 擷取存放區子模組:
    $ ./scripts/checkout_submodules.py --shallow --platform esp32
    
  3. 啟動 Matter 開發環境:
    $ source ./scripts/bootstrap.sh
    

3. Google Home 開發人員控制台

Google Home 開發人員控制台是網頁應用程式,您可以在這裡管理與 Google Home 的 Matter 整合。

只要是通過連線標準聯盟 (聯盟) Matter 認證的裝置,都可以在 Google Home 生態系統中運作。在特定情況下,尚未通過認證的開發中裝置可委託 Google Home 生態系統,詳情請參閱「配對限制」。

建立開發人員專案

首先,請前往 Google Home 開發人員控制台:

  1. 按一下 [Create Project]
  2. 輸入專屬專案名稱,然後按一下「建立專案」 「建立新專案」對話方塊
  3. 按一下「+ 新增整合」,系統會將您帶往「Matter 資源」畫面,您可以在這裡查看 Matter 開發文件,並瞭解部分工具。
  4. 準備好繼續操作時,請按一下「下一步:開發」,系統隨即顯示「Matter 檢查清單」頁面。
  5. 按一下「下一步:設定」
  6. 在「設定」頁面中,輸入「產品名稱」
  7. 按一下「選取裝置類型」,然後從下拉式選單中選取裝置類型 (在本例中為 Light)。
  8. 在「供應商 ID (VID)」中選取「測試 VID」,然後從「測試 VID」下拉式選單中選取 0xFFF1。在產品 ID (PID) 中輸入 0x8000,然後依序點選「儲存並繼續」和「儲存」。請使用這些確切的 VID/PID 值,後續程式碼研究室步驟會用到這些值。
    設定專案
  9. 現在你可以在「Matter 整合」下方看到整合項目。
  10. 重新啟動中樞,確保中樞收到最新的 Matter 整合專案設定。如果之後必須變更 VID 或 PID,儲存專案後也需要重新啟動,變更才會生效。如需逐步重新啟動說明,請參閱「重新啟動 Google Nest 或 Google Wifi 裝置」。

4. 建構裝置

Matter 中的所有範例都放在 Github 存放區的 examples 資料夾中。我們提供多個範例,但本程式碼研究室的重點是 lighting-app

這個範例是簡單的裝置,在 Google Home 中會顯示為「開/關燈」,並回應「開」和「關」指令。控制實際電燈不在本程式碼研究室的範圍內。

設定建構

  1. 設定 Matter SDK 並啟用 Matter 建構環境:
    $ cd ~/esp-idf_tools/esp-idf
    $ source export.sh
    $ cd ~/connectedhomeip
    $ source ./scripts/activate.sh
    
  2. 啟用 Ccache,加快建構程序:
    $ export IDF_CCACHE_ENABLE=1
    
  3. 前往 lighting-app ESP32 建構目錄,並設定目標架構:
    $ cd ./examples/lighting-app/esp32
    $ idf.py set-target esp32
    
    1. 執行設定公用程式:
      $ idf.py menuconfig
      
    2. 選取 Demo -> Device Type,並將 Device Type 設為 ESP32-DevKitC
    3. 按向左鍵返回頂層選單。
    4. 選取「Component config --->」。
    5. 選取「CHIP Device Layer --->」。
    6. 選取「Device Identification Options --->」。
    7. Vendor ID 設為聯盟指派的 VID 或測試 VID。
    8. Product ID 設為您在 Google Home 開發人員控制台的 Matter 整合中設定的 PID。
    9. 按下 S 鍵儲存。
    10. 按下 Return 鍵,接受儲存設定的預設路徑。
    11. 按下「Return」鍵,關閉儲存確認對話方塊。
    12. 按下 Q 鍵,退出設定公用程式。

執行版本

叫用建構指令碼:

idf.py build

建構作業應完成且未發生任何錯誤。

設定裝置

  1. 使用 USB 傳輸線將開發人員板連接至電腦。
  2. 清除裝置上的所有先前韌體 (如果電腦只連線到一個開發人員主機板,可以省略 -p {device} 選項,系統應會自動偵測到裝置):
    idf.py -p {device} erase-flash
    
  3. 使用下列指令將新應用程式複製到開發人員板:
    idf.py -p {device} flash
    

如要進一步瞭解韌體更新選項,請參閱 Espressif esptool.py 說明文件頁面

5. 連線至裝置

  1. 開啟終端機視窗。
  2. 記下您所在的目錄,然後使用 GNU screen 連線至新的 Matter 裝置:
    $ screen -L {device} 115200
    
  3. 如果看到空白控制台,請按下 RESET 按鈕,啟動裝置開機程序。

6. 委任裝置

注意:您必須先在 Google Home 開發人員控制台中設定專案,才能成功完成這個步驟。

Nest Hub

你必須使用中樞裝置,才能在 Matter Fabric 上佈建裝置。這是指支援 Matter 的 Google Nest 裝置,例如 Nest Hub (第 2 代),可做為支援 Thread 裝置的邊界路由器,以及智慧住宅意圖的本機履行路徑。

請參閱這份清單,瞭解哪些中樞裝置支援 Matter。

開始委任程序前,請先確認下列事項:

  • 中樞裝置已與你用來登入 Google Home 控制台的 Google 帳戶配對。
  • 中樞裝置與用來執行虛擬 Matter 裝置的電腦連上相同 Wi-Fi 網路。
  • 中樞裝置與 Google Home 應用程式使用的住家結構相同。(Google Home Graph 中的「住家」代表住家結構)。

配對裝置

按照 ESP32 配對說明配對裝置。

注意:如果你使用 M5STACK,刷機後螢幕會保持空白,因此必須使用控制台中顯示的網址查看 QR code。你也可以改為輸入手動配對代碼。

顯示 QR code 網址的控制台輸出內容範例:

I (1926) chip[DL]: Done driving station state, nothing else to do...
I (1936) chip[SVR]: SetupQRCode: [MT:X.XXXXXXXXXXXXXXXXX]
I (1936) chip[SVR]: Copy/paste the below URL in a browser to see the QR Code:
I (1946) chip[SVR]: https://project-chip.github.io/connectedhomeip/qrcode.html?data=MT%3XX.KXXXXXXXXXXXXXXXX
I (1956) chip[SVR]: Manual pairing code: [XXXXXXXXXXX]]

疑難排解

委派失敗

如需更多疑難排解提示,請參閱 Matter 疑難排解頁面

7. 控制裝置

成功委派符合 Matter 標準的裝置,並在 Google Home 應用程式中顯示為燈泡後,您可以使用 Google 助理、Google Home 應用程式,或 Google Home Extension for VS Code 中的 Google 助理模擬器控制裝置。

Google 助理

在手機或中樞裝置上使用 Google 助理,透過語音指令切換裝置狀態,例如說出「Ok Google,切換燈光」。

如需更多指令範例,請參閱「控制已新增至 Google Home 應用程式的智慧住宅裝置」一文的「使用語音指令控制智慧住宅裝置」一節。

Google Home 應用程式

輕觸 Google Home 應用程式中燈泡圖示旁的「開啟」和「關閉」標籤。

詳情請參閱「透過 Google Home 應用程式操控裝置」。

Google 助理模擬器

在 VS Code 的 Google Home 擴充功能中,你可以使用 Google 助理模擬器,透過類似即時通訊的介面向裝置發出語音指令。

8. 恭喜!

您已成功建立並啟用第一個 Matter 裝置。太棒了!

在本程式碼研究室中,您瞭解如何:

  • 從需求條件開始,安裝 Matter 開發環境並使其正常運作。
  • 建構並執行 Matter 裝置。
  • 透過 Google Home 委派及控制裝置。

如要進一步瞭解 Matter,請參閱下列參考資料: