建立 Matter 裝置

1. 簡介

Matter 是連線通訊協定,可為智慧型裝置帶來絕佳機會。在本程式碼研究室中,您將建構第一個 Matter 裝置。如要進一步瞭解 Matter,請前往 Google Home Developer Center:Matter連線標準聯盟網站

課程內容

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

軟硬體需求

2. 設定環境

找出序列裝置

設定開發環境的第一步,就是決定裝置是連接哪一個序列埠。這些資訊可讓您編寫程式並與開發人員白板互動。

  1. 使用 USB 傳輸線將開發人員 Jamboard 連接至您的電腦。
  2. /dev 檔案系統中查看開發人員主機板裝置。如要縮小搜尋範圍,請指定開發人員主機板的裝置前置字串。Espressif 的 ESP32 使用 /dev/ttyUSBx
    user@host $ ls /dev/ttyUSB*
    /dev/ttyUSB0
    

設定 Hub

設定中樞,使用要用於本程式碼研究室的 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 開發人員控制台是網頁應用程式,可以用來管理 Matter 與 Google Home 的整合作業。

凡是通過連線標準聯盟 (Alliance) Matter 認證的 Matter 裝置,都能在 Google Home 生態系統中運作。處於開發階段的裝置如未經過認證,可於特定條件下在 Google Home 生態系統中委託開發。詳情請參閱配對限制

建立開發人員專案

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

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

4. 打造裝置

Matter 中的所有範例都會放在 GitHub 存放區中的範例資料夾。有幾個範例可供使用,但本程式碼研究室的重點放在 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 傳輸線將開發人員 Jamboard 連接至電腦。
  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 織物的調試。這款 Google Nest 裝置 (例如 Nest Hub (第 2 代) 支援 Matter,能同時做為支援 Thread 的裝置的邊界路由器,以及用於轉送智慧型住宅意圖的本機執行要求路徑。

請參閱這份清單,查看哪些中樞支援 Matter。

開始實施調試程序前,請確認下列事項:

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

配對裝置

按照 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 Home Extension for VS Code 的 Google 助理、Google Home 應用程式或 Google 助理模擬器來控制裝置。

Google 助理

在手機或中樞裝置上使用 Google 助理切換裝置狀態,例如說出「Ok Google,切換燈具」。

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

Google Home 應用程式

在 Google Home 應用程式中顯示的燈泡圖示旁邊,你可以輕觸「開啟」和「關閉」標籤。

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

Google 助理模擬器

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

8. 恭喜!

您已成功建立第一部 Matter 裝置並進行調適。太棒了!

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

  • 從需求條件到工作狀態安裝 Matter 開發環境。
  • 建構並執行 Matter 裝置。
  • 並透過 Google Home 控制裝置。

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