本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
物质插件
主题
什么是 Matter 插件
Matter Plugin 是使用托管集成中心 SDK 的自定义协议插件功能构建的参考实现。它使您的集线器能够按照 Matter 规范在同一网络上本地控制 Matter 设备,也可以通过托管集成远程控制 Matter 设备。
Matter 插件包含在 Hub SDK 中。它与 Matter 设备通信,实现 Matter Controller 功能,并通过托管集成公开远程控制路径。
chip-tool 是一款来自 connectedhomeip 的基于命令行的参考控制器。
此发行版的范围不包括生产移动应用程序,也不包括认证和生产活动,例如 CSA 实验室测试和认证。这些仍然是您的产品开发过程的一部分。
如何构建 Matter 插件
除了 Hub SDK 之外,Matter 插件还具有以下依赖关系:
-
OpenSSL 3.0.x:OpenSSL 版本要求并不严格——在大多数情况下,系统的默认版本可以正常工作。
使用以下命令配置 repo:
cd IotMI-DeviceSDK-MatterPlugin mkdir build cd build cmake ..
然后使用以下命令进行构建:
cmake --build .
构建完成后,将库路径添加到 LD_LIBRARY_PATH:
export LD_LIBRARY_PATH=/path/to/libraries:$LD_LIBRARY_PATH
快速入门:设置并运行 Matter 插件
请按照以下步骤设置 Matter 插件和相应的 Matter 解决方案。该流程假设两台机器:一台集线器(运行 Hub SDK + Matter Plugin)和一台代表用于调试和基本控制的 “移动应用程序” 的 Raspberry Pi。
节点 ID 管理
在 Matter 中,结构上的每个节点(包括设备、控制器和调试员)都必须有一个唯一的节点 ID。为避免冲突,需要采用一致的分配策略。在本指南中,节点 ID 是手动分配的;在生产环境中,您应该正确管理节点 ID。
在本文档中的示例中,Hub 的芯片工具(由 Matter 插件使用)使用默认节点 ID112233,移动应用程序 Raspberry Pi 上的芯片工具使用节点 ID。123456新调试的设备在同一架构上分配的节点 ID 不冲突(例如,快速入门中的 101)。
先决条件
在您开始之前,请确保您已拥有以下各项:
-
您的 Hub 已加入托管集成,并已部署 Hub SDK(通过脚本或 systemd)。如果尚未加载,请Hub 入职设置进入托管集成,然后安装和验证托管集成中心 SDK运行 Hub SDK。登录后,记下集线器的托管事物 ID。稍后将需要这样做。
-
你有一台可以同时运行芯片工具和 AWS CLI 的 Raspberry Pi(或任何机器)。
-
你有一台 Matter 设备可供测试。它可以是真实物质设备或虚拟 Matter 设备(例如,照明应用程序
)
步骤 1:准备 Raspberry Pi(代表移动应用程序)
-
安装 AWS CLI 并构建和安装芯片工具
-
按照官方芯片工具构建指南构建芯片
工具。我们验证的版本是 v1.4.2.0。 -
按照官方说明安装 AWS CLI。
-
为芯片工具准备永久存储
mkdir -p $HOME/iotmi/matter/ -
生成专员证书链(为该芯片工具分配节点 ID
123456)cd connectedhomeip/ cd out/chip-tool/ ./chip-tool pairing get-commissioner-root-certificate \ --commissioner-nodeid 123456 \ --storage-directory $HOME/iotmi/matter/
生成的链存储在:$HOME/iotmi/matter/chip_tool_config.alpha.ini
稍后您将把此文件复制到 Hub。
步骤 2:准备 Hub(它运行 Matter 插件)
-
在集线器上构建或安装芯片工具(Matter 插件使用它来执行 Matter 操作)。你可以参考芯片工具构建指南
。我们验证的版本是 v1.4.2.0。
我们还需要芯片工具的 sha256sum 供以后使用。你可以使用以下命令来获取 sha256sum:
sha256sum /path/to/chip-tool
-
准备存储空间并从 Raspberry Pi 中复制专员文件
mkdir -p $HOME/iotmi/matter/ # From Raspberry Pi to Hub (example): # scp $HOME/iotmi/matter/chip_tool_config.alpha.ini user@HUB_HOST:$HOME/iotmi/matter/ -
运行 Matter 插件(提供芯片工具路径、其 SHA256 和存储文件夹)
./iotmi_matter_plugin \ --chip-tool-path /path/to/chip-tool \ --sha256sum SHA256SUM_OF_THE_CHIP_TOOL \ --storage-folder $HOME/iotmi/matter/ \ --node-id 112233
以下步骤将在 Raspberry Pi 上运行,即专员。
步骤 3:调试 Matter 设备(在 Raspberry Pi 上)
使用芯片工具使用设备解码后的二维码和配置凭证调试设备。 Wi-Fi 在本示例中,设备将使用节点 ID 101,而专员节点 ID 为123456。
./chip-tool pairing code-wifi 101 \ YOUR_WIFI_SSID YOUR_WIFI_PW \ MT:MFAA0W8C00UFQV2VL00 \ --bypass-attestation-verifier 1 \ --commissioner-nodeid 123456 \ --storage-directory $HOME/iotmi/matter/
备注:
-
101是设备的 Matter 节点 ID(您可以选择其他值)。 -
MT:MFAA0W8C00UFQV2VL00是设备解码后的二维码内容。要从二维码中获取解码后的上下文,你需要选择一个二维码应用程序或库对其进行解码。您也可以使用支持解码 QR 码解码的 Web 服务。 -
-bypass-attestation-verifier 1仅供测试使用。对于生产,请更新 PAA 存储并执行认证检查。
chip-tool 支持不同的配对方法,包括与 Thread 或设备配对的 QR 码或 WiFi PIN 码。有关芯片工具配对命令的
步骤 4:在设备上授予集线器访问权限(更新 ACL)
调试后,让 Hub 的芯片工具控制设备。在此示例中,节点 ID 123456 (Raspberry Pi) 具有管理员权限 (5),节点 ID 112233 (Hub) 具有管理权限 (4)。
chip-tool accesscontrol write acl \ '[{"fabricIndex":1,"privilege":5,"authMode":2,"subjects":[123456], "targets": null},{"fabricIndex":1,"privilege":4,"authMode":2,"subjects":[112233], "targets": null}]' \ 101 0 \ --commissioner-nodeid 123456 --storage-directory $HOME/iotmi/matter/
步骤 5。为设备创建托管事物(User-Guided 安装程序)
-
开始发现(替换为 Hub 的托管事物 ID):
aws iot-managed-integrations start-device-discovery \ --discovery-type CUSTOM \ --custom-protocol-detail '{"Name": "Matter", "NodeId":"101", "FabricId":"1"}' \ --controller-identifier <HUB_MANAGED_THING_ID>
示例响应包括用户指导的设置任务 ID:
{ "Id": "USER_GUIDED_SETUP_JOB_ID", "StartedAt": 1753683326.056 }
-
使用任务 ID 查询发现的设备:
aws iot-managed-integrations \ list-discovered-devices --identifier <USER_GUIDED_SETUP_JOB_ID>
示例响应:
{ "Items": [ { "DeviceTypes": [], "DiscoveredAt": "2025-08-05T06:46:35.407000+08:00", "AuthenticationMaterial": "<AUTH_MATERIAL>" } ] }
-
使用以下方法为设备创建托管事物 AuthenticationMaterial:
aws iot-managed-integrations create-managed-thing \ --role DEVICE \ --authentication-material-type DISCOVERED_DEVICE \ --authentication-material "<AUTH_MATERIAL>"
示例响应(带有设备的托管事物 ID):
{ "Id": "DEVICE_MANAGED_THING_ID", "Arn": "arn:aws:iotmanagedintegrations:eu-west-1:228183742813:managed-thing/515cf5a707ec41aaabb9914a1dd2889f", "CreatedAt": "2025-08-06T15:00:08.718000+08:00" }
步骤 6. 通过托管集成控制设备
使用send-managed-thing-command命令向您的托管事物发送命令。
json=$(jq -cr '.|@json' <<EOF [ { "endpointId": "1", "capabilities": [ { "id": "matter.OnOff@1.4", "name": "On/Off", "version": "1", "actions": [ { "name": "Toggle", "parameters": {} } ] } ] } ] EOF ) aws iot-managed-integrations send-managed-thing-command \ --managed-thing-id "DEVICE_MANAGED_THING_ID" \ --endpoints "$json"
第 7 步。读取设备状态
发送以下命令以获取设备状态。
aws iot-managed-integrations get-managed-thing-state \ --managed-thing-id "DEVICE_MANAGED_THING_ID"
结果示例:
{ "Endpoints": [ { "endpointId": "1", "capabilities": [ { "id": "matter.OnOff@1.4", "name": "On/Off", "version": "1.4", "properties": [ { "value": { "lastChangedAt": "2025-08-14T13:16:02.132Z", "propertyValue": false }, "name": "OnOff" } ] } ] } ] }
步骤 8:从你的中心移除托管的东西
-
使用以下命令从集线器中移除托管内容
aws iot-managed-integrations delete-managed-thing \ --identifier "DEVICE_MANAGED_THING_ID" -
取消设备与 Raspberry Pi 结构的配对(如果需要):
./chip-tool pairing unpair 101 \ --commissioner-nodeid 123456 \ --storage-directory $HOME/iotmi/matter/
支持的 Matter 设备类型
为其他集群添加 Support
要扩展 Matter Plugin 以支持其他设备类型和功能,请按照以下模式修改 matter_action_converter.cpp:
实现模式:
-
为枚举和位图定义映射
-
为可写属性添加 UpdateState 逻辑
-
为集群操作添加命令处理
-
为状态报告添加属性解析
使用现有集群作为模板:
-
OnOff cl@@ uster-最简单的参考文献显示了所有四个组件,包括基本枚举、可写属性、命令和属性报告
-
DoorLock clu@@ ster-演示多种枚举类型、位图字段、结构参数、可选命令参数和广泛的属性覆盖范围的复杂示例
所有支持的群集(识别、、、 OnOff、 LevelControl DoorLock、Thermostat ColorControl、、 BooleanState)都遵循此结构。查看 matter_action_converter.cpp 中的现有实现以了解完整模式。
集成不同的物质控制器解决方案
本节提供有关如何将不同的 Matter Controller 解决方案与 Matter Plugin 集成的指导。它概述了可能的方法和重要的注意事项,但没有提供详细的实现代码。
集成 Matter Controller 解决方案的主要方法有两种。第一个是使用带有自定义芯片工具的 Matter 插件。第二个方法是使用您选择的 Matter Controller,并通过自定义协议库与托管集成。
将 Matter 插件与自定义插件一起使用 Chip-Tool
在这种方法中,Matter 插件被扩展为可与的自定义版本配合使用 Chip-Tool。为此,你可能需要修改 Matter Plugin 源代码并引入其他逻辑:
-
调整 STDIO 解析逻辑:如果您的自定义芯片工具生成了不同模式的日志,请相应地更新解析逻辑。
-
实现安全存储:Matter 插件为设备信息提供了一种基于文件的存储机制。对于生产用途,请将其替换为更安全的存储实现或对数据进行加密。卸载 Matter Plugin 后,它还需要适当的清理程序。
-
实施二进制签名和完整性保护:在生产部署中,您应该对自定义芯片工具和扩展的 Matter Plugin 强制执行完整性保护。这包括在软件发布过程中对二进制文件进行签名,在启动期间验证签名,以及集成平台安全功能,例如安全启动或 OS-level 完整性工具。
-
引入 task/event 速率限制:为防止过载,请确保 Matter Plugin 包含适当的任务和事件速率限制。在生产部署中,您还应添加基本指标和监控以检测异常的更新模式,并暂时限制或暂停受影响的设备或订阅。这种类似断路器的行为不是在参考实现中提供的,必须由客户实施。
-
直接集成芯片工具主功能逻辑:如果您不想依赖 STDIO,则可以将芯片工具的主功能集成到 Matter Plugin 中。然后可以将标准 input/output 逻辑连接到该 ChptoolProc 类的 read/write 函数。
-
Support 代码生成:实现一种机制,通过代码生成来处理 Matter 规范版本更新。
-
实现案件管理功能,包括:
-
为专员、控制器和案件设备分配节点 ID。
-
管理多个面料。
-
在切屑刀具方面,还建议进行以下增强:
-
使用安全存储:芯片工具将 Matter 证书、私钥和统计信息存储在本地目录中。将其替换为安全的实现。
-
启用并行处理:默认情况下,一次 Chip-Tool 执行一条命令。在某些情况下,添加并行执行支持可以提高效率。
使用具有托管集成的现有案件控制器
如果你的 Matter Controller 不是基于芯片工具(例如,基于 Python-based 实现或基于函数调用的解决方案),那么 STDIO 方法可能不合适。在这种情况下,您可以使用直接与托管集成集成自定义协议插件,同时使用 Matter Plugin 作为参考。请注意以下事项:
-
维护结构和节点 ID:确保始终如一地维护 adding/removing 设备元数据,例如设备和缓存属性。
-
管理订阅:每台设备应保持最多一个有效订阅,以便其状态可以持续更新。
-
传播状态更改:当设备更新其状态时,验证更改并将事件传播到托管集成。
-
实现 Matter 数据模型转换器:尽管托管集成使用 Matter 数据模型,但其表示形式为 JSON 格式。需要翻译人员在您的 Matter 数据模型格式和 JSON 表示形式之间进行映射。