1. 簡介
Matter 是一種連線通訊協定,可為智慧型裝置的開發帶來絕佳機會。在本程式碼研究室中,您將建構自己的第一部 Matter 裝置。如要進一步瞭解 Matter,請造訪 Google Home 開發人員中心:Matter 或連線標準聯盟網站。
課程內容
- 如何整合實體裝置與 Matter。
- 如何透過 Google Home 調控及控制 Matter 裝置。
軟硬體需求
- 中樞,包括所有支援 Matter 的 Google Nest 裝置,例如 Nest Hub (第 2 代)。
- Espressif Systems ESP32-DevkitC 或 ESP32 M5STACK Matter 評估板
- 執行 Linux 的電腦。
- 具備 Linux 的基本知識。
2. 設定環境
辨識序列裝置
設定開發環境的第一步,是判斷裝置連接的序列埠。這些資訊可以讓您編寫程式並與開發人員委員會互動。
- 使用 USB 傳輸線將開發人員開發板連接到電腦。
- 請透過
/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 Development Framework 或「ESP-IDF」)。
- 建立包含 ESP-IDF 的目錄:
$ mkdir ~/esp-idf_tools
- 將 ESP-IDF 從 GitHub 複製到這個目錄:
$ 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 Developer Console 網頁應用程式可讓你管理 Matter 與 Google Home 的整合作業。
凡是通過 Connectivity Standards Alliance (聯盟) Matter 認證的 Matter 裝置,都能在 Google Home 生態系統中運作。在特定情況下,如果是開發中的裝置未經認證,便可在 Google Home 生態系統中調用裝置。詳情請參閱「配對限制」。
建立開發人員專案
請先前往 Google Home 開發人員控制台:
- 按一下 [Create Project]。
- 輸入不重複的專案名稱,然後按一下「建立專案」。
- 按一下「+ 新增整合」,即可前往「Matter 資源」畫面,您可以查看 Matter 開發說明文件,並查看部分工具。
- 準備好進行後續步驟時,請點選「下一步:開發」,開啟 Matter 檢查清單頁面。
- 點選「下一步:設定」
- 在「設定」頁面中輸入您的 產品名稱。
- 按一下「選取裝置類型」,然後從下拉式選單中選取裝置類型 (在本例中為
Light
)。 - 在供應商 ID (VID) 中,選取「Test VID」,然後在「Test VID」下拉式選單中選取「0xFFF1」。在 Product ID (PID) 中輸入 0x8000,然後按一下「Save &」(儲存並)繼續,然後在下一頁中按一下 [儲存]儲存。請使用這些確切的 VID/PID 值,在後續的程式碼研究室步驟中,必須使用這些值。
- 你現在會在「Matter 整合」下方看到整合作業。
- 請重新啟動中樞,確保裝置能接收最新的 Matter 整合專案設定。如果之後要變更 VID 或 PID,您需在儲存專案後重新啟動,變更才會生效。如需重新啟動的逐步操作說明,請參閱「重新啟動 Google Nest 或 Google Wifi 裝置」。
4. 打造裝置
Matter 中的所有範例都位於 GitHub 存放區中的 examples 資料夾。我們提供多個範例,但本次的程式碼研究室將著重於 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 Developer Console 中為 Matter 整合設定的 PID。 - 按下 S 鍵即可儲存。
- 按下 Return 鍵,接受預設儲存設定的路徑。
- 按下 Return 鍵,關閉儲存確認對話方塊。
- 按下 Q 鍵即可結束設定公用程式。
- 執行設定公用程式:
執行版本
叫用建構指令碼:
idf.py build
建構作業應已完成,不會發生任何錯誤。
設定裝置程式
- 使用 USB 傳輸線將開發人員主機板連接到電腦。
- 清除裝置上的任何先前的韌體 (如果電腦上只有一個開發人員板,可以停用
-p {device}
選項,這樣裝置就會自動偵測裝置):idf.py -p {device} erase-flash
- 使用下列指令將新應用程式複製到開發人員開發板:
idf.py -p {device} flash
如要進一步瞭解刷新選項,請參閱 Espressif esptool.py
說明文件頁面。
5. 連線至裝置
- 開啟終端機視窗。
- 記下你所在的目錄,然後透過 GNU
screen
連線到新的 Matter 裝置:$ screen -L {device} 115200
- 如果系統顯示空白控制台,請按下「重設」按鈕啟動裝置啟動程序。
6. 調試裝置
注意:您必須先在 Google Home Developer Console 建立專案,這個步驟才會成功。
Nest Hub
必須使用中樞裝置,才能在 Matter 織布上強制使用裝置。這是指支援 Matter 的 Google Nest 裝置 (例如 Nest Hub (第 2 代))。這類裝置會做為支援 Matter 的邊界路由器,也會做為轉送智慧型住宅意圖的本機執行要求路徑。
請參閱這份清單,瞭解哪些中樞支援 Matter。
開始調試程序前,請確認下列事項:
- 你的 Hub 已經與你透過 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]]
疑難排解
調試失敗
- 確認您已在 Google Home 控制台中使用正確的 VID/PID 組合建立專案。
- 請確認您在建構設定中輸入了正確的 VID 和 PID。
- 確認您已在建構設定中選取正確的
Device Type
。
如需更多疑難排解提示,請參閱 Matter 疑難排解頁面。
7. 控制裝置
成功啟用支援 Matter 的裝置,並在 Google Home 應用程式中顯示為燈泡後,你就可以試著使用 Google 助理、Google Home 應用程式或 VS Code 中的 Google 助理模擬器控制裝置。
Google 助理
使用手機或 Nest Hub 上的 Google 助理,透過語音指令切換裝置狀態,例如說出「Ok Google,切換燈具」。
如需更多指令範例,請參閱「使用語音指令控制已新增至 Google Home 應用程式的智慧住宅裝置」一文中的「使用語音指令控制智慧住宅裝置」一節。
Google Home 應用程式
你可以在 Google Home 應用程式顯示的燈泡圖示旁邊,輕觸「開啟」和「關閉」標籤。
詳情請參閱使用 Google Home 應用程式控制裝置。
Google 助理模擬器
透過 VS Code 適用的 Google Home 擴充功能使用 Google 助理模擬器,你可以透過類似即時通訊的介面為裝置播放語音內容。
8. 恭喜!
您已成功建立並啟動第一部 Matter 裝置。太棒了!
在本程式碼研究室中,您瞭解如何:
- 從需求到工作狀態都能安裝 Matter 開發環境。
- 建構及執行 Matter 裝置。
- 透過 Google Home 調試及控制你的裝置。
如要進一步瞭解 Matter,請參閱下列參考資料:
- 你可以透過 Google Home 推出的 Matter Primer,瞭解 Matter 通訊協定的重要概念和原則。
- Matter 規格、Matter Device Library 和 Matter 應用程式叢集程式庫,由 Connected Standard Alliance 發布。
- Matter GitHub 存放區。