复杂功能点说明
SupportedEndpointDynamic 和 EndpointArrayDynamic
功能点含义
- SupportedEndpointDynamic:(适用于非 Matter 设备)用于判定设备是否支持“动态端点”。
- EndpointArrayDynamic:(适用于所有设备)反映当前设备可用(激活、工作中等)端点的动态列表。
当您在查询设备功能时,若响应结果中包含上述字段,请根据设备类型判断是否需要获取动态端点列表。
Matter 设备(model 前缀为 aqara.matter)与非 Matter 设备在处理这两个功能点时有所区别。具体判断方法请参考下方的判断流程。
判断流程
根据设备类型,判断设备是否支持动态端点的具体流程如下:
Matter 设备
对于所有 Matter 设备,您都需要进行以下判断:
- 使用 spec.query.specdevice.config 接口查询设备功能。
- 在接口响应中查找
EndpointArrayDynamic字段:- 如果存在且有值:直接使用该值,获取可用的端点列表。
- 如果不存在或无值:默认所有端点均可用,无需特别处理。
非 Matter 设备
仅下表列出的非 Matter 设备支持 SupportedEndpointDynamic 和 EndpointArrayDynamic 这两个 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 |
- 使用 spec.query.qlinkmodel.config 接口查询设备功能。
- 确认响应中
SupportedEndpointDynamic.attribute.defaultValue是否为 1:- 是:表示设备支持动态端点。
- 此时请调用 spec.query.trait 接口(
traitCode传EndpointArrayDynamic),获取设备当前的动态端点列表。 - 确认响应中
value是否有值:- 是:使用该值获得可用的端点列表。
- 否或该功能点不存在:功能查询接口返回的所有端点均可用。
- 此时请调用 spec.query.trait 接口(
- 否:表示设备不支持动态端点,功能查询接口返回的所有端点均可用。
- 是:表示设备支持动态端点。
示例
下面以 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"]
}
}
响应示例
以下响应同时包含 SupportedEndpointDynamic 和 EndpointArrayDynamic,并且 SupportedEndpointDynamic.defaultValue 为 1,表示 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"
}
]
}
}