1. 简介
Matter 是一种连接协议,为智能设备的发展带来了激动人心的机会。在此 Codelab 中,您将构建您的第一台 Matter 设备。如需了解 Matter,请访问 Google Home 开发者中心:Matter 或连接标准联盟网站。
学习内容
- 如何将实体设备与 Matter 集成。
- 如何使用 Google Home 调试和控制您的 Matter 设备。
所需条件
- 集线器,即任何支持 Matter 的 Google Nest 设备,例如 Nest Hub(第 2 代)。
- Espressif Systems ESP32-DevkitC 或 ESP32 M5STACK Matter 评估板。
- 一台运行 Linux 的 PC。
- 具备 Linux 基础知识。
2. 设置您的环境
识别串行设备
设置开发环境的第一步是确定您的设备连接的串行端口。通过这些信息,您可以对开发者板进行编程和互动。
- 使用 USB 线将开发者开发板连接到您的计算机。
- 在
/dev
文件系统中查找开发者板级设备。您可以通过指定开发者板的设备前缀来缩小搜索范围。Espressif 的 ESP32 使用/dev/ttyUSBx
:user@host $ ls /dev/ttyUSB* /dev/ttyUSB0
设置 hub
使用要用于此 Codelab 的同一 Google 账号来设置 hub。
设置您的开发环境
前提条件
这些说明已在 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
如需继续学习此 Codelab,您需要使用 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 开发者控制台是一款 Web 应用,你可以在其中管理 Matter 与 Google Home 的集成。
任何已通过连接标准联盟(联盟)Matter 认证的 Matter 设备可以在 Google Home 生态系统中运行。在特定条件下,正在开发且未经认证的设备可以在 Google Home 生态系统中进行调试。如需了解详情,请参阅配对限制。
创建开发者项目
首先,前往 Google Home 开发者控制台:
- 点击 Create project。
- 输入唯一的项目名称,然后点击 Create project(创建项目)。
- 点击 + 添加集成,你将进入 Matter resources 界面,您可以在其中查看 Matter 开发文档以及了解一些工具。
- 准备好继续操作后,请点击下一步:开发,此时系统会显示诉讼或调查核对清单页面。
- 点击下一步:设置
- 在 Setup(设置)页面上,输入您的 Product name(产品名称)。
- 点击选择设备类型,然后从下拉菜单中选择设备类型(在本例中为
Light
)。 - 在供应商 ID (VID) 中,选择 Test VID,然后从“测试 VID”下拉菜单中选择 0xFFF1。在“产品 ID (PID)”中,输入“0x8000”,然后点击保存 &继续,然后在下一页中点击保存。请使用这些确切的 VID/PID 值,后续 Codelab 步骤将依赖于这些值。
- 现在,您会在 Matter 集成下看到您的集成。
- 请重新启动 hub,以确保其接收最新的 Matter 集成项目配置。如果您稍后必须更改 VID 或 PID,则还需要在保存项目后重新启动,才能使更改生效。如需了解分步重新启动说明,请参阅重启 Google Nest 或 Google Wifi 设备。
4. 构建设备
Matter 中的所有示例都放置在 GitHub 代码库中的“examples”文件夹中。我们提供几个示例,但此 Codelab 主要介绍 lighting-app。
这个示例是一个简单的设备,在 Google Home 中显示为“开启/关闭”指示灯,用于响应“开启”和“关闭”命令。使其控制实际电灯超出了此 Codelab 的讨论范围。
配置构建
- 配置 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 build 目录并设置目标架构:$ 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 保存。
- 按回车键可接受用于保存配置的默认路径。
- 按回车键关闭保存确认对话框。
- 按 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
- 如果您看到一个空白控制台,请按 RESET(重置)按钮开始设备启动过程。
6. 调试设备
注意:只有在 Google Home 开发者控制台中设置了项目的情况下,此步骤才会成功。
Nest Hub
需要使用集线器才能在 Matter 结构上调试设备。这是一部支持 Matter 的 Google Nest 设备,例如 Nest Hub(第 2 代),并将用作支持 Thread 的设备的边界路由器,以及用于路由智能家居 intent 的本地执行方式路径。
请参阅此列表,了解哪些 hub 支持 Matter。
在开始调试流程之前,请检查确保:
- 你的 hub 会与你在 Google Home 控制台中登录的 Google 账号配对。
- 您的 hub 与您用来运行虚拟 Matter 设备的计算机连接到同一 Wi-Fi 网络。
- 你的基座与 Google Home 应用中的结构相同。(Google Home 图谱中的“房子”代表你的结构)。
配对设备
按照 ESP32 配对说明配对您的设备。
注意:如果您使用的是 M5STACK,请注意其在刷写后屏幕会空白,所以您必须使用控制台中显示的网址查看二维码。或者,您也可以改为手动输入配对码。
显示二维码网址的控制台输出示例:
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 组合创建了项目。
- 确保您在 build 配置中输入了正确的 VID 和 PID。
- 确保您在 build 配置中选择了正确的
Device Type
。
如需更多问题排查提示,请参阅“诉讼或调查问题排查”页面。
7. 控制设备
一旦你的兼容 Matter 的设备成功调试完毕,并在 Google Home 应用中显示为灯泡,你可以尝试通过 Google 助理、Google Home 应用或在 VS Code 版 Google Home 扩展程序中使用 Google 助理模拟器来控制该设备。
Google 助理
在手机或 hub 上使用 Google 助理通过语音指令(例如说“Hey Google,把灯调暗”)来切换设备状态。
如需查看更多指令示例,请参阅控制已添加到 Google Home 应用的智能家居设备中的使用语音指令控制智能家居设备部分。
Google Home 应用
你可以点按 Google Home 应用中显示的灯泡图标旁边的开启和关闭标签。
如需了解详情,请参阅使用 Google Home 应用控制设备。
Google 助理模拟器
在适用于 VS Code 的 Google Home 扩展程序中,借助 Google 助理模拟器,您可以通过类似聊天的界面向设备发出语音指令。
8. 恭喜!
您已成功创建并调试了您的第一台 Matter 设备。也很棒!
在此 Codelab 中,您学习了如何执行以下操作:
- 安装 Matter 开发环境,从需求到工作状态。
- 构建并运行 Matter 设备。
- 通过 Google Home 调试和控制您的设备。
如需详细了解 Matter,请浏览以下参考资料:
- Google Home 的 Matter Primer,您将在其中了解 Matter 协议的重要概念和原则。
- 由 Connected Standard Alliance 发布的 Matter 规范、Matter 设备库和 Matter 应用集群库。
- Matter GitHub 代码库。