复杂功能点说明

SupportedEndpointDynamic 和 EndpointArrayDynamic

功能点含义

  • SupportedEndpointDynamic:(适用于非 Matter 设备)用于判定设备是否支持“动态端点”。
  • EndpointArrayDynamic:(适用于所有设备)反映当前设备可用(激活、工作中等)端点的动态列表。

当您在查询设备功能时,若响应结果中包含上述字段,请根据设备类型判断是否需要获取动态端点列表。

Matter 设备(model 前缀为 aqara.matter)与非 Matter 设备在处理这两个功能点时有所区别。具体判断方法请参考下方的判断流程

判断流程

根据设备类型,判断设备是否支持动态端点的具体流程如下:

Matter 设备

对于所有 Matter 设备,您都需要进行以下判断:

  1. 使用 spec.query.specdevice.config 接口查询设备功能。
  2. 在接口响应中查找 EndpointArrayDynamic 字段:
    • 如果存在且有值:直接使用该值,获取可用的端点列表。
    • 如果不存在或无值:默认所有端点均可用,无需特别处理。

非 Matter 设备

下表列出的非 Matter 设备支持 SupportedEndpointDynamicEndpointArrayDynamic 这两个 trait。只有在查询这些设备功能时,才需基于响应结果作判断,其它非 Matter 设备无需关注这两个 trait。

温馨提示

下表为截至 2025 年 11 月 26 日已支持动态端点的设备列表。由于产品不断迭代,该列表会持续更新。请不要将本表内容硬编码到您的程序中,建议开发时实时参考本页面的最新设备清单,确保系统兼容性和稳定性。

Model 设备名称
aqara.airrtc.ecn001 VRF 控制器 T1
lumi.motion.agl001 人体场景传感器 FP2
lumi.gateway.agl004 Hub M3
lumi.gateway.acn012 智慧家庭中枢 M3
aqara.airrtc.acn02 温控伴侣 T1(室内机)
lumi.curtain.acn010 风琴 智能窗帘电机 C4
lumi.airrtc.aus002 美标温控器网关 W200
lumi.airrtc.aus001 美标墙壁温控器 S1 Pro
lumi.fitting.agl001 电流传感器 R100
lumi.airrtc.aeu001 地暖温控器 W500
lumi.airrtc.acn002 智能温控器 W400 (氟机版)
lumi.airrtc.acn003 智能温控器 W400 (水机版)
lumi.gateway.agl011 网关 M200
  1. 使用 spec.query.qlinkmodel.config 接口查询设备功能。
  2. 确认响应中 SupportedEndpointDynamic.attribute.defaultValue 是否为 1
    • :表示设备支持动态端点。
      1. 此时请调用 spec.query.trait 接口(traitCodeEndpointArrayDynamic),获取设备当前的动态端点列表。
      2. 确认响应中 value 是否有值:
        • :使用该值获得可用的端点列表。
        • 否或该功能点不存在:功能查询接口返回的所有端点均可用。
    • :表示设备不支持动态端点,功能查询接口返回的所有端点均可用。

示例

下面以 VRF 控制器 T1(model 为 aqara.airrtc.ecn001)为例。

查询设备功能

该设备 model 不以 aqara.matter 为前缀,因此为非 Matter 设备。

因此,您需要调用 spec.query.qlinkmodel.config 查询该设备的功能。

说明

建议针对 VRF 控制器(如 aqara.airrtc.ecn001 和 lumi.airrtc.vrfegl01),每次接口调用仅传入单个 model。这样可避免响应数据量过大,提高查询效率。

请求示例
{
    "intent" : "spec.query.qlinkmodel.config",
    "data":{
        "models": ["aqara.airrtc.ecn001"]
    }  
}
响应示例

以下响应同时包含 SupportedEndpointDynamicEndpointArrayDynamic,并且 SupportedEndpointDynamic.defaultValue1,表示 VRF 控制器 T1 的端点是动态可变的。

{
    "code": 0,
    "message": "Success",
    "msgDetails": null,
    "requestId": "xxxxxxx.xxxxxxxxx.xxxxxxx",
    "result": {
        "data": {
            "aqara.airrtc.ecn001": {
                "types": [
                    "AirConditioner",
                    "Ventilation",
                    "FloorHeating"
                ],
                "endpoints": [
                    {
                        "functions": [
                            {
                                "functionId": 128,
                                "traits": [
                                    {
                                        "traitId": 32901,
                                        "attribute": {
                                            "readable": true,
                                            "enums": [
                                                {
                                                    "value": "0",
                                                    "key": "Offline"
                                                },
                                                {
                                                    "value": "1",
                                                    "key": "Online"
                                                }
                                            ],
                                            "format": "Bool",
                                            "type": "BOOLEAN",
                                            "subscribable": true,
                                            "writable": false
                                        },
                                        "traitCode": "Reachable"
                                    }
                                ],
                                "functionCode": "BasicInformation",
                                "commands": []
                            },
                            {
                                "functionId": 129,
                                "traits": [
                                    {
                                        "traitId": 33013,
                                        "attribute": {
                                            "readable": true,
                                            "defaultValue": "[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97]",
                                            "format": "Array",
                                            "type": "OTHER",
                                            "subscribable": true,
                                            "writable": false
                                        },
                                        "traitCode": "EndpointArrayDynamic"
                                    },
                                    {
                                        "traitId": 32906,
                                        "attribute": {
                                            "readable": true,
                                            "enums": [
                                                {
                                                    "value": "0",
                                                    "key": "False"
                                                },
                                                {
                                                    "value": "1",
                                                    "key": "True"
                                                }
                                            ],
                                            "defaultValue": "1",
                                            "format": "Bool",
                                            "type": "BOOLEAN",
                                            "subscribable": true,
                                            "writable": false
                                        },
                                        "traitCode": "SupportedEndpointDynamic"
                                    }
                                ],
                                "functionCode": "Descriptor",
                                "commands": []
                            },
                            // ...其他 trait
                        ],
                        "endpointId": 0,
                        "endpointTypes": [
                            "Root"
                        ]
                    },
                    // ... 其他 endpoint
                ],
                "model": "aqara.airrtc.ecn001"
            }
        }
    }
}

查询 EndpointArrayDynamic 最新值

调用 spec.query.trait 接口,查询该设备当前可用的端点列表。

请求示例
{
    "intent": "spec.query.trait",
    "data": {
        "traits": [
            {
                "deviceId": "aqara.airrtc.ecn001",
                "endpointId": 0,
                "functionCode": "Descriptor",
                "traitCode": "EndpointArrayDynamic"
            }
        ]
    }
}
响应示例

通过下方响应中的 value 字段可知,该设备当前支持的可用端点为 endpointId 0 至 10。

{
    "code": 0,
    "message": "Success",
    "msgDetails": null,
    "requestId": "",
    "result": {
        "data": [
            {
                "functionCode": "Descriptor",
                "endpointId": 0,
                "time": 1762417659743,
                "deviceId": "aqara.airrtc.ecn001",
                "value": "[0,1,2,3,4,5,6,7,8,9,10]",
                "traitCode": "EndpointArrayDynamic"
            }
        ]
    }
}
lumi LogoCopyright © 2023 深圳绿米联创科技有限公司 all right reserved,powered by Gitbook文档修改时间: 2025-11-27 12:09:39

results matching ""

    No results matching ""