You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于Google Home Sample App(GHA)获取Matter设备品牌、型号的方法

如何在Google Home Sample App中获取Matter设备的品牌(Make)、型号(Model)信息?

我是Matter应用开发的新手,目前需要获取Matter设备的品牌(Make)、型号(Model)及设备类型等信息。在研究Google Home Sample App(GHA)时,仅能获取到deviceType、vendorId和productId字段,请问是否存在可行方法获取所需的额外信息?

相关代码如下:

override fun onCommissioningRequested(metadata: CommissioningRequestMetadata) {
  Timber.d(
    "*** onCommissioningRequested ***:\n" +
        "\tdeviceDescriptor: " +
        "deviceType [${metadata.deviceDescriptor.deviceType}] " +
        "vendorId [${metadata.deviceDescriptor.vendorId}] " +
        "productId [${metadata.deviceDescriptor.productId}]\n" +
        "\tnetworkLocation: " +
        "IP address toString() [${metadata.networkLocation.ipAddress}] " +
        "IP address hostAddress [${metadata.networkLocation.ipAddress.hostAddress}] " +
        "port [${metadata.networkLocation.port}]\n" +
        "\tpassCode [${metadata.passcode}]")

}

可行解决方案

1. 配网完成后读取Matter标准集群属性

Matter协议的**Basic Information Cluster(基本信息集群)**定义了VendorName(品牌)、ProductName(型号)等核心字段。设备完成配网后,可通过Google Home的设备对象直接读取这些属性:

// 假设已获取配网成功后的Device实例
val basicInfoCluster = device.getCluster(BasicInformationCluster::class.java)

// 读取品牌名称
basicInfoCluster.readVendorName()
    .addOnSuccessListener { vendorName ->
        Timber.d("设备品牌:$vendorName")
    }

// 读取型号名称
basicInfoCluster.readProductName()
    .addOnSuccessListener { productName ->
        Timber.d("设备型号:$productName")
    }

// 可选:读取硬件/软件版本信息
basicInfoCluster.readHardwareVersionString()
    .addOnSuccessListener { hwVersion ->
        Timber.d("硬件版本:$hwVersion")
    }

2. 在配网完成回调中获取完整设备元数据

配网流程结束后,onCommissioningComplete回调会返回包含完整信息的设备对象,可从中提取名称、自定义属性等内容:

override fun onCommissioningComplete(result: CommissioningResult) {
    if (result.isSuccess) {
        val device = result.device
        // 获取设备名称(通常包含品牌+型号)
        Timber.d("设备名称:${device.name}")
        
        // 遍历设备所有属性,查找额外信息
        device.attributes.forEach { key, value ->
            Timber.d("设备属性 $key: $value")
        }
    }
}

3. 解析配网请求中的设备认证信息

配网请求的CommissioningRequestMetadata包含设备认证数据,部分设备会在其中附带厂商相关信息,可进一步解析:

override fun onCommissioningRequested(metadata: CommissioningRequestMetadata) {
    metadata.deviceAttestationInfo?.let { attestationInfo ->
        Timber.d("认证厂商ID:${attestationInfo.vendorId}")
        Timber.d("认证产品ID:${attestationInfo.productId}")
        
        // 可选:解析设备证书中的厂商字段(需处理X.509证书格式)
        attestationInfo.deviceCertificate?.let { cert ->
            // 此处可通过证书解析工具提取厂商名称等信息
        }
    }
}

注意事项

  • 配网前的CommissioningRequestMetadata仅提供基础标识字段,完整的品牌、型号信息必须在配网完成后读取。
  • 确保目标设备已正确实现Matter Basic Information Cluster,否则无法读取对应字段。
  • 部分厂商会在自定义集群中提供额外设备信息,可根据设备型号针对性扩展读取逻辑。

内容的提问来源于stack exchange,提问作者Jitendra Prajapati

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.03 02:12:56