---
name: "mapPublishMatterDps"
mode: "api"
versionRequirements:
  - { name: "", version: "1.15.0" }
title: "mapPublishMatterDps"
summary: "将标准 DP 状态映射为 Matter DP 状态（下发场景）。"
questions:
  - "mapPublishMatterDps 与 mapMatterDpState 的方向有何不同？"
  - "为什么需要传入 dpSchema？"
---

## mapPublishMatterDps

> [VERSION] v1.15.0+

### 描述

将标准 DP 状态映射为 Matter DP 状态（下发场景：standardDpState → matterDpState）。

### 参数

`Params`

| 参数 | 类型 | 必填 | 描述 |
| --- | --- | --- | --- |
| `dpState` | `DpState` | 是 | 标准侧待下发的 DP 状态 |
| `dpSchema` | `DpSchema` | 是 | dpSchema 对象 |

### 返回值

类型: `DpState`

转换后的 Matter DP 状态

**`type` DpState**

```typescript
export type DpState = Record<string, DpValue>;
```

### 引用对象

##### `type` DpState

功能点状态对象，key 为功能点 code，value 为功能点值

```typescript
export type DpState = Record<string, DpValue>;
```

##### `interface` DpSchema

| 属性 | 类型 | 描述 |
| --- | --- | --- |
| `attr` | `number` | 功能点属性标位，用于扩展功能点的附加能力标识 |
| `canTrigger` | `boolean` | 是否可作为自动化触发条件 |
| `code` | `string` | 功能点标识码，如 switch |
| `defaultRecommend` | `boolean` | 是否为默认推荐的功能点 |
| `editPermission` | `boolean` | 是否具有编辑权限 |
| `executable` | `boolean` | 是否可执行下发 |
| `extContent` | `string` | 功能点扩展内容，通常为 JSON 字符串 |
| `iconname` | `string` | 功能点图标名称 |
| `id` | `string \| number` | 功能点 ID |
| `mode` | `"rw" \| "ro" \| "wr"` | 功能点模式类型 rw: 可下发可上报（可读可写） ro: 只可上报（仅可读） wr: 只可下发（仅可写） |
| `name` | `string` | 功能点名称，一般用于语音等场景 |
| `property` | `Object` | 功能点属性 |
| `type` | `"raw" \| "obj"` | 功能点数据类型大类：raw 为原始字节流，obj 为结构化对象 |

##### `type` DpValue

功能点值类型，可能为 boolean、number、string

```typescript
export type DpValue = boolean | number | string;
```

##### `type` DpSchema.property

| 属性 | 类型 | 描述 |
| --- | --- | --- |
| `type` | `"string" \| "bool" \| "value" \| "enum" \| "bitmap" \| "raw"` | 功能点类型 |
| `range` | `string[] \| string[]` | 枚举值范围，type = enum 时才存在 |
| `label` | `string[] \| string[]` | 故障型标签列表，type = bitmap 时才存在 |
| `maxlen` | `number` | 故障型最大长度，type = bitmap 时才存在 |
| `unit` | `string` | 数值型单位，type = value 时才存在 |
| `min` | `number` | 数值型最小值，type = value 时才存在 |
| `max` | `number` | 数值型最大值，type = value 时才存在 |
| `scale` | `number` | 数值型精度，type = value 时才存在 |
| `step` | `number` | 数值型步长，type = value 时才存在 |


### 示例代码

#### 示例

```ts
import { createMatterKit } from '@ray-js/panel-sdk';

const matterKit = createMatterKit();
const matterDps = matterKit.mapPublishMatterDps(dpState, dpSchema);
```
