构建 Matter 设备

1. 简介

Matter 是一种连接协议,为智能设备的开发带来了激动人心的机会。在此 Codelab 中,您将构建自己的首台 Matter 设备。如需了解 Matter,请访问 Google Home 开发者中心:Matt连接标准联盟网站

学习内容

  • 如何将实体设备与 Matter 集成。
  • 如何通过 Google Home 调试和控制您的 Matter 设备。

所需条件

2. 设置您的环境

识别串行设备

设置开发环境的第一步是确定您的设备连接到哪个串行端口。通过此信息,您可以对开发板进行编程和互动。

  1. 使用一根 USB 线将开发者开发板连接到计算机。
  2. /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”)。

  1. 创建一个目录以包含 ESP-IDF:
    $ mkdir ~/esp-idf_tools
    
  2. 将 ESP-IDF 从 GitHub 克隆到此目录中:
    $ 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 开发者控制台是一款 Web 应用,您可以在其中管理 Matter 与 Google Home 的集成。

任何已通过连接标准联盟 (Alliance) Matter 认证的 Matter 设备都可以在 Google Home 生态系统中运行。正在开发中未经认证的设备在某些情况下可以委托加入 Google Home 生态系统。如需了解详情,请参阅配对限制

创建开发者项目

首先,前往 Google Home 开发者控制台:

  1. 点击 Create project
  2. 输入唯一的项目名称,然后点击创建项目 “创建新项目”对话框
  3. 点击 + 添加集成,系统会将您转到 Matter 资源界面,您可以在其中查看 Matter 开发文档并了解一些工具。
  4. 准备好继续操作后,请点击下一步:开发,其中将显示 Matter 核对清单页面。
  5. 点击下一步:设置
  6. Setup(设置)页面上,输入您的 Product name(产品名称)。
  7. 点击选择设备类型,然后从下拉菜单中选择设备类型(在本例中为 Light)。
  8. 在“供应商 ID”(VID) 中,选择 Test VID,然后从“Test VID”下拉菜单中选择“0xFFF1”。在“产品 ID (PID)”中,输入“0x8000”并点击保存并继续,然后在下一页点击保存。使用这些确切的 VID/PID 值,后续的 Codelab 步骤将以此为基础。
    设置项目
  9. 现在,您会在 Matter 集成下看到您的集成。
  10. 请重新启动 hub,确保它接收了最新的 Matter 集成项目配置。如果您日后需要更改 VID 或 PID,则还需要在保存项目后重新启动设备,才能使更改生效。如需查看分步重启说明,请参阅重启 Google Nest 或 Google Wifi 设备

4. 构建设备

Matter 中的所有示例都位于 GitHub 代码库中的示例文件夹中。您可以提供多个示例,不过我们在此 Codelab 的重点是照明应用。

这是一个简单的设备,在 Google Home 中显示为开/关灯,会响应开启和关闭命令。使其控制实际电灯不在此 Codelab 的讨论范围内。

配置构建

  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 build 目录并设置目标架构:
    $ 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. 回车键接受用于保存配置的默认路径。
    11. 回车键关闭保存确认对话框。
    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. 如果您看到一个空白控制台,请按重置按钮以启动设备启动过程。

6. 调试设备

注意:仅当您已在 Google Home 开发者控制台中设置了项目时,此步骤才会成功。

Nest Hub

您需要有 hub 才能在 Matter 结构上调试设备。这是一台支持 Matter 的 Google Nest 设备(例如 Nest Hub,第 2 代),它既可用作支持 Thread 的设备的边界路由器,也可用作路由智能家居 intent 的本地执行方式路径。

请参阅此列表,了解哪些 hub 支持 Matter。

在开始调试流程之前,请检查以确保:

  • 您的 Hub 已与您在 Google Home 控制台中登录的 Google 帐号配对。
  • 您的 hub 与运行 Virtual Matter 设备的计算机连接到同一 Wi-Fi 网络。
  • 你的 Hub 属于你在 Google Home 应用中使用的结构Google Home Graph 中的“房子”代表你的结构)。

配对设备

按照 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]]

问题排查

调试失败

如需更多问题排查提示,请参阅“诉讼或调查”问题排查页面

7. 控制设备

只要您与 Matter 兼容的设备成功调试并在 Google Home 应用中显示为灯泡,您可以尝试使用 Google 助理、Google Home 应用或 Google Home Extension for VS Code 中的 Google 助理模拟器来控制该设备。

Google 助理

在手机或 hub 上使用 Google 助理,根据语音指令切换设备状态,例如说“Ok Google,切换灯具”。

请参阅控制添加到 Google Home 应用的智能家居设备使用语音指令控制智能家居设备部分,查看更多命令示例。

Google Home 应用

您可以点按 Google Home 应用中显示的灯泡图标旁边的开启关闭标签。

如需了解详情,请参阅使用 Google Home 应用控制设备

Google 助理模拟器

在 Google Home Extension for VS Code 中,你可以借助 Google 助理模拟器,通过类似于聊天的界面向设备发出语音提示。

8. 恭喜!

您已成功创建并调试了您的第一台 Matter 设备。也很棒!

在此 Codelab 中,您学习了如何执行以下操作:

  • 安装从要求到正常运行状态的 Matter 开发环境。
  • 构建并运行 Matter 设备。
  • 通过 Google Home 调试和控制您的设备。

如需详细了解 Matter,请浏览以下参考文档: