---
name: "SmartDeviceModel.init"
mode: "api"
versionRequirements:
  - { name: "@ray-js/panel-sdk", version: "1.0.0" }
---

## SmartDeviceModel.init

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

### 描述

异步初始化智能设备后再返回其实例

### 参数

`Params`

| 参数 | 类型 | 必填 | 描述 |
| --- | --- | --- | --- |
| `deviceId` | `string` | 否 | 设备 ID，不传则从小程序环境启动参数自动获取 |

### 返回值

类型: `Promise<SmartDeviceModel>`

SmartDeviceModel 初始化完成的智能设备模型实例

### 示例代码

#### 基础初始化

```typescript
import { SmartDeviceModel } from '@ray-js/panel-sdk';

const schema = [
  { code: 'switch_led', property: { type: 'bool' }, type: 'obj', mode: 'rw', id: 1, name: 'Switch' },
  { code: 'brightness', property: { type: 'value', min: 10, max: 1000, step: 1 }, type: 'obj', mode: 'rw', id: 2, name: 'Brightness' },
] as const;

type Schema = typeof schema;
const device = new SmartDeviceModel<Schema>();
await device.init();                    // 自动从小程序启动参数获取 deviceId
await device.init('your-device-id');    // 或指定 deviceId
```

#### 配置 abilities 和 dp-kit 拦截器

```typescript
import { SmartDeviceModel, SmartSupportAbility, createDpKit } from '@ray-js/panel-sdk';
import { protocols } from './devices/protocols';

const dpKit = createDpKit<Schema>({
  protocols,
  sendDpOption: { immediate: true, throttle: 300 },
});

const device = new SmartDeviceModel<Schema>({
  abilities: [new SmartSupportAbility()],
  interceptors: dpKit.interceptors,
});

await device.init();
dpKit.init(device);
```
