---
name: "useSupport"
mode: "api"
versionRequirements:
  - { name: "@ray-js/panel-sdk", version: "1.10.0" }
title: "useSupport - 基于 sdm 及 support-ability 实现，一个 hooks 版本的设备支持状态"
summary: "useSupport 是 @ray-js/panel-sdk 提供的 React Hook，基于 sdm 及 SmartSupportAbility 实现，返回 support 实例可直接调用设备能力判断方法（如 isSupportCloudTimer、isSupportDp、isSupportBright 等），支持单设备和群组，使用前需挂载 SdmProvider 并接入 SmartSupportAbility。"
questions:
  - "useSupport Hook 返回的 SmartSupportAbility 实例可以调用哪些方法（如 isSupportCloudTimer）？"
  - "useSupport 同时支持单设备和群组设备，使用方式有什么区别？"
  - "使用 useSupport 前需要先配置接入 SmartSupportAbility，具体在哪里配置？"
  - "useSupport 的 TypeScript 泛型 T extends DpSchema[] 起什么作用？"
  - "如何通过 useSupport 在组件中判断设备是否支持云定时功能？"
  - "useSupport 的 API 签名无参数，返回值的详细方法列表在哪里查阅（SmartSupportAbility API）？"
  - "useSupport 使用前需要同时挂载 SdmProvider 和接入 SmartSupportAbility，两者缺一不可吗？"
  - "useSupport 基于 sdm 及 support-ability 实现，与直接使用 SmartSupportAbility 实例有什么区别？"
  - "全新项目如何基于 public-sdm 示例项目快速接入 useSupport？"
  - "useSupport 返回的 support 实例是否可以调用 isSupportDp、isSupportBright、isSupportTemp 等方法？"
---

<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>

## useSupport

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

> 💡 使用前需同时满足两个条件：
> 1. 项目已挂载 SdmProvider
> 2. SmartDeviceModel 初始化时已配置 SmartSupportAbility

### 描述

获取设备能力检测实例，用于判断设备支持的功能与协议

### 参数

无


### 返回值

类型: `SupportAbilityMethods`

SmartSupportAbility 实例对象

**`interface` SupportAbilityMethods**

| 属性 | 类型 | 描述 |
| --- | --- | --- |
| `isSupportDp` | `(dpCode: string, isForce: boolean) => boolean` | 判断设备是否支持指定功能点 |
| `isSupportBright` | `(isForce: boolean) => boolean` | 判断设备是否支持白光亮度 |
| `isSupportTemp` | `(isForce: boolean) => boolean` | 判断设备是否支持色温 |
| `isSupportColour` | `(isForce: boolean) => boolean` | 判断设备是否支持彩光 |
| `isSupportCloudTimer` | `() => boolean` | 判断设备是否支持云端定时 |
| `isSupportMatterWhite` | `(force: boolean) => boolean` | 判断是否支持 Matter 白光 |
| `isInGateway` | `() => boolean` | 判断设备是否已添加到网关下 |
| `isGroupDevice` | `() => boolean` | 判断当前是否是群组设备 |
| `hasCapability` | `(id: number) => boolean` | 判断设备是否具有指定的协议能力（入参为 DeviceCapability 枚举值） |
| `isWifiDevice` | `() => boolean` | 判断是否是 WiFi 设备 |
| `isGprsDevice` | `() => boolean` | 判断是否是 GPRS 设备 |
| `isBluetoothDevice` | `() => boolean` | 判断是否是蓝牙 Bluetooth 设备 |
| `isBleMeshDevice` | `() => boolean` | 判断是否是 BLE Mesh 设备 |
| `isZigbeeDevice` | `() => boolean` | 判断是否是 Zigbee 设备 |
| `isSigMeshDevice` | `() => boolean` | 判断是否是 SIG Mesh 设备 |
| `isBleDevice` | `() => boolean` | 判断是否是蓝牙类设备（含 Bluetooth / BLE Mesh / SIG Mesh） |
| `isCat1Device` | `() => boolean` | 判断是否是 Cat.1 设备 |
| `isBeaconDevice` | `() => boolean` | 判断是否是 Beacon 设备 |
| `isLteCat4Device` | `() => boolean` | 判断是否是 LTE Cat.4 设备 |
| `isLteCat10Device` | `() => boolean` | 判断是否是 LTE Cat.10 设备 |
| `isLteCatMDevice` | `() => boolean` | 判断是否是 LTE Cat.M 设备 |
| `isThreadDevice` | `() => boolean` | 判断是否是 Thread 设备 |
| `isMatterDevice` | `() => boolean` | 判断是否是 Matter 设备（含涂鸦 Matter 和三方 Matter） |
| `isTuyaMatterDevice` | `() => boolean` | 判断是否是涂鸦 Matter 设备（排除三方 Matter） |
| `isTripartiteMatter` | `() => boolean` | 判断是否是三方 Matter 设备 |

### 引用对象

##### `interface` SupportAbilityMethods

| 属性 | 类型 | 描述 |
| --- | --- | --- |
| `isSupportDp` | `(dpCode: string, isForce: boolean) => boolean` | 判断设备是否支持指定功能点 |
| `isSupportBright` | `(isForce: boolean) => boolean` | 判断设备是否支持白光亮度 |
| `isSupportTemp` | `(isForce: boolean) => boolean` | 判断设备是否支持色温 |
| `isSupportColour` | `(isForce: boolean) => boolean` | 判断设备是否支持彩光 |
| `isSupportCloudTimer` | `() => boolean` | 判断设备是否支持云端定时 |
| `isSupportMatterWhite` | `(force: boolean) => boolean` | 判断是否支持 Matter 白光 |
| `isInGateway` | `() => boolean` | 判断设备是否已添加到网关下 |
| `isGroupDevice` | `() => boolean` | 判断当前是否是群组设备 |
| `hasCapability` | `(id: number) => boolean` | 判断设备是否具有指定的协议能力（入参为 DeviceCapability 枚举值） |
| `isWifiDevice` | `() => boolean` | 判断是否是 WiFi 设备 |
| `isGprsDevice` | `() => boolean` | 判断是否是 GPRS 设备 |
| `isBluetoothDevice` | `() => boolean` | 判断是否是蓝牙 Bluetooth 设备 |
| `isBleMeshDevice` | `() => boolean` | 判断是否是 BLE Mesh 设备 |
| `isZigbeeDevice` | `() => boolean` | 判断是否是 Zigbee 设备 |
| `isSigMeshDevice` | `() => boolean` | 判断是否是 SIG Mesh 设备 |
| `isBleDevice` | `() => boolean` | 判断是否是蓝牙类设备（含 Bluetooth / BLE Mesh / SIG Mesh） |
| `isCat1Device` | `() => boolean` | 判断是否是 Cat.1 设备 |
| `isBeaconDevice` | `() => boolean` | 判断是否是 Beacon 设备 |
| `isLteCat4Device` | `() => boolean` | 判断是否是 LTE Cat.4 设备 |
| `isLteCat10Device` | `() => boolean` | 判断是否是 LTE Cat.10 设备 |
| `isLteCatMDevice` | `() => boolean` | 判断是否是 LTE Cat.M 设备 |
| `isThreadDevice` | `() => boolean` | 判断是否是 Thread 设备 |
| `isMatterDevice` | `() => boolean` | 判断是否是 Matter 设备（含涂鸦 Matter 和三方 Matter） |
| `isTuyaMatterDevice` | `() => boolean` | 判断是否是涂鸦 Matter 设备（排除三方 Matter） |
| `isTripartiteMatter` | `() => boolean` | 判断是否是三方 Matter 设备 |


### 示例代码

#### 示例

```tsx
import { useSupport } from '@ray-js/panel-sdk';

function SupportPage() {
  const support = useSupport();
  return (
    <View>
      <Text>{support.isSupportCloudTimer() ? '支持云定时' : '不支持云定时'}</Text>
      <Text>{support.isSupportDp('switch_led') ? '有开关' : '无开关'}</Text>
    </View>
  );
}
```
