---
name: "SmartSupportAbility"
mode: "api"
versionRequirements:
  - { name: "@ray-js/panel-sdk", version: "1.10.0" }
title: "SDM 设备能力判断使用指南 - 设备类型、DP 支持与功能自适配"
summary: "SmartSupportAbility 设备类型、DP 支持与功能自适配的完整使用指南, 当前 Support 能力 SDK 针对以下能力做了抽象：设备类型判断, dp支持情况判断, 其他能力支持判断。"
questions:
  - "SmartSupportAbility 抽象了哪三类能力判断（设备类型、DP 支持情况、其他能力）？"
  - "设备类型判断支持哪些协议（WiFi、Zigbee、SigMesh、BLE、Matter、Thread、Beacon、Cat1、LTE 等）？"
  - "isSupportDp('colour_data') 如何检查设备是否支持指定的 dpCode？"
  - "isSupportBright、isSupportTemp、isSupportColour、isSupportCloudTimer 分别用于判断什么功能点？"
  - "照明面板如何根据 isSupportBright 和 isSupportTemp 的结果动态隐藏亮度条或色温条？"
  - "SmartSupportAbility.isReady() 静态方法需要 panel-sdk 升级到哪个版本才支持（1.15.0）？"
  - "isInGateway 用于判断设备是否已添加到网关下，该方法是否仅限单设备使用？"
  - "isMatterDevice 和 isTuyaMatterDevice 以及 isTripartiteMatter 三者之间有什么区别？"
  - "SDM 模式下如何通过 devices.sensor.model.abilities.support 在页面组件中访问 Support 实例？"
  - "SmartSupportAbility 同时支持单设备和群组，isGroupDevice 方法的作用是什么？"
---

# 使用

<div style={{ display: 'flex', gap: '8px', marginBottom: '16px' }}>
  <span style={{ backgroundColor: '#52c41a', color: 'white', padding: '2px 8px', borderRadius: '4px', fontSize: '12px' }}>单设备支持</span>
  <span style={{ backgroundColor: '#52c41a', color: 'white', padding: '2px 8px', borderRadius: '4px', fontSize: '12px' }}>群组支持</span>
</div>

<Callout type="info" emoji="ℹ️">
当前 Support 能力 SDK 针对以下能力做了抽象：
- 设备类型判断
- dp支持情况判断
- 其他能力支持判断
</Callout>

## SmartSupportAbility

> [VERSION] @ray-js/panel-sdk >= 1.10.0

> 💡 通过 SmartDeviceModel 的 abilities 配置挂载后使用。
> 同时支持单设备和群组设备。

### 描述

设备能力检测，判断设备支持的功能点与协议类型

### 参数

`(options: Function)`

| 参数 | 类型 | 必填 | 描述 |
| --- | --- | --- | --- |
| `options` | `{ initDevInfo?: (devInfo) => void }` | 否 | 设备能力检测配置 |

### 返回值

类型: `SmartSupportAbility`

SmartSupportAbility 实例

#### 方法

| 方法名 | 说明 |
| --- | --- |
| `isSupportDp` | 检查给定的功能点编码是否受设备支持 |
| `isInGateway` | 判断设备是否已添加到网关下 |
| `isGroupDevice` | 判断当前是否是群组设备 |
| `isSupportBright` | 判断设备是否支持白光亮度功能点 |
| `isSupportTemp` | 判断设备是否支持色温功能点 |
| `isSupportColour` | 判断设备是否支持彩光功能点 |
| `isSupportCloudTimer` | 判断设备是否支持云端定时功能 |
| `isWifiDevice` | 判断是否是 WiFi 设备 |
| `isGprsDevice` | 判断是否是 GPRS 设备 |
| `isBluetoothDevice` | 判断是否是蓝牙 Bluetooth 设备 |
| `isBleMeshDevice` | 判断是否是 BLE Mesh 设备 |
| `isZigbeeDevice` | 判断是否是 Zigbee 设备 |
| `isSigMeshDevice` | 判断是否是 SIG Mesh 设备 |
| `isBleDevice` | 判断是否是蓝牙类设备（包含 Bluetooth、BLE Mesh、SIG Mesh） |
| `isCat1Device` | 判断是否是 Cat.1 设备 |
| `isBeaconDevice` | 判断是否是 Beacon 设备 |
| `isLteCat4Device` | 判断是否是 LTE Cat.4 设备 |
| `isLteCat10Device` | 判断是否是 LTE Cat.10 设备 |
| `isLteCatMDevice` | 判断是否是 LTE Cat.M 设备 |
| `isThreadDevice` | 判断是否是 Thread 设备 |
| `isMatterDevice` | 判断是否是 Matter 设备 |
| `isTuyaMatterDevice` | 判断是否是涂鸦 Matter 设备 |
| `isTripartiteMatter` | 判断是否是三方 Matter 设备 |
| `isSupportMatterWhite` | 判断是否支持 Matter 白光 |

### 示例代码

#### 示例

```typescript
// 使用方式 1 （推荐）
import { SmartDeviceModel, SmartSupportAbility } from '@ray-js/panel-sdk';

const sdm = new SmartDeviceModel({ abilities: [new SmartSupportAbility()] });
const isSupportxxx = sdm.support.xxx()

// 使用方式 2（不推荐）
const support = new SmartSupportAbility({
  initDevInfo: (devInfo) => {
    return {
      ...devInfo,
      isMatter: true,
    };
  },
});

await support.init({ deviceId: '1234567890' });
```
