1. 簡介
Matter 是連線通訊協定,可為智慧型裝置帶來絕佳機會。在本程式碼研究室中,您將建構第一個 Matter 裝置。如要進一步瞭解 Matter,請前往 Google Home Developer Center:Matter 或連線標準聯盟網站。
課程內容
- 如何將實體裝置與 Matter 整合。
- 如何使用 Google Home 調試及控制 Matter 裝置。
軟硬體需求
- 中樞裝置,是指支援 Matter 的 Google Nest 裝置,例如 Nest Hub (第 2 代)。
- Espressif Systems ESP32-DevkitC 或 ESP32 M5STACK Matter 評估板。
- 執行 Linux 的電腦。
- 對 Linux 有基本瞭解。
2. 設定環境
找出序列裝置
設定開發環境的第一步,就是決定裝置是連接哪一個序列埠。這些資訊可讓您編寫程式並與開發人員白板互動。
- 使用 USB 傳輸線將開發人員 Jamboard 連接至您的電腦。
- 在
/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」)。
- 建立要包含 ESP-IDF 的目錄:
$ mkdir ~/esp-idf_tools
- 從 GitHub 將 ESP-IDF 複製到這個目錄:
$ cd ~/esp-idf_tools $ git clone -b v4.4.3 --recursive https://github.com/espressif/esp-idf.git
- 完成工具鍊安裝程序:
$ cd ./esp-idf $ ./install.sh $ cd ~/
設定 Matter SDK
- 複製開放原始碼 Matter 存放區:
$ git clone https://github.com/project-chip/connectedhomeip.git $ cd ./connectedhomeip $ git fetch origin v1.0-branch $ git checkout FETCH_HEAD
- 擷取存放區子模組:
$ ./scripts/checkout_submodules.py --shallow --platform esp32
- 啟動 Matter 開發環境:
$ source ./scripts/bootstrap.sh
3. Google Home 開發人員控制台
Google Home 開發人員控制台是網頁應用程式,可以用來管理 Matter 與 Google Home 的整合作業。
凡是通過連線標準聯盟 (Alliance) Matter 認證的 Matter 裝置,都能在 Google Home 生態系統中運作。處於開發階段的裝置如未經過認證,可於特定條件下在 Google Home 生態系統中委託開發。詳情請參閱配對限制。
建立開發人員專案
首先請前往 Google Home 開發人員控制台:
- 按一下 [Create Project]。
- 輸入不重複的專案名稱,然後按一下「Create project」(建立專案)。
- 按一下「+ 新增整合」,前往「Matter 資源」畫面,即可查看 Matter 開發說明文件及查看部分工具。
- 準備好繼續進行時,請按一下「Next:開發」,系統隨即會顯示「Matter 檢查清單」頁面。
- 點選「下一步:設定」。
- 在「設定」頁面中輸入您的「產品名稱」。
- 按一下「選取裝置類型」,然後從下拉式選單中選取裝置類型 (本例中為
Light
)。 - 在「供應商 ID (VID)」中選取「Test VID」,然後從「測試 VID」下拉式選單中選取「0xFFF1」。在產品 ID (PID) 中輸入 0x8000,然後按一下「儲存並繼續」,接著在下一頁點選「儲存」。請使用這些正確的 VID/PID 值,後續的程式碼研究室步驟取決於這些值。
- 接著,「Matter 整合」下方會顯示整合項目。
- 請重新啟動中樞,確保裝置能接收最新的 Matter 整合專案設定。如果之後要變更 VID 或 PID,您也必須在儲存專案後重新啟動,變更才會生效。如需重新啟動的逐步操作說明,請參閱「重新啟動 Google Nest 或 Google Wifi 裝置」一文。
4. 打造裝置
Matter 中的所有範例都會放在 GitHub 存放區中的範例資料夾。有幾個範例可供使用,但本程式碼研究室的重點放在 lighting-app 上。
這個例子是簡單的裝置,在 Google Home 中顯示為開啟/關閉的指示燈,用於回應「開啟」和「關閉」指令。使其控制實際電燈不在本程式碼研究室的範圍內。
設定建構
- 設定 Matter SDK 並啟用 Matter 建構環境:
$ cd ~/esp-idf_tools/esp-idf $ source export.sh $ cd ~/connectedhomeip $ source ./scripts/activate.sh
- 啟用 Ccache,加快建構程序:
$ export IDF_CCACHE_ENABLE=1
- 移至
lighting-app
ESP32 建構目錄,並設定目標架構:$ cd ./examples/lighting-app/esp32 $ idf.py set-target esp32
- 執行設定公用程式:
$ idf.py menuconfig
- 選取
Demo -> Device Type
,並將Device Type
設為ESP32-DevKitC
。 - 按向左鍵返回頂層選單。
- 選取 [
Component config --->
]。 - 選取 [
CHIP Device Layer --->
]。 - 選取 [
Device Identification Options --->
]。 - 將
Vendor ID
設為您聯盟指派的 VID 或測試 VID。 - 將
Product ID
設為您在 Google Home 開發人員控制台中透過 Matter 整合設定的 PID。 - 按下 S 鍵儲存。
- 按下 Return 鍵,接受儲存設定的預設路徑。
- 按下 Return 鍵,關閉儲存確認對話方塊。
- 按下 Q 鍵即可結束設定公用程式。
- 執行設定公用程式:
執行版本
叫用建構指令碼:
idf.py build
建構作業應不會發生錯誤。
為裝置進行程式設定
- 使用 USB 傳輸線將開發人員 Jamboard 連接至電腦。
- 清除裝置上的任何舊版韌體 (如果電腦只有一個開發板,可以關閉
-p {device}
選項,系統會自動偵測裝置):idf.py -p {device} erase-flash
- 使用以下內容,將新的應用程式複製到開發人員主面板:
idf.py -p {device} flash
如要進一步瞭解閃爍選項,請參閱 Espressif esptool.py
說明文件頁面。
5. 連線至裝置
- 開啟終端機視窗。
- 記下目前的目錄,然後使用 GNU
screen
連線至新的 Matter 裝置:$ screen -L {device} 115200
- 如果看到空白主控台,請按下「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,請參閱下列參考資料:
- Google Home 的 Matter Primer:說明 Matter 通訊協定的重要概念和原則。
- Matter 規格、Matter 裝置程式庫和 Matter 應用程式叢集程式庫,由連線標準聯盟發布的。
- Matter GitHub 存放區。