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

## SmartDeviceModel.getDevInfo

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

### 描述

获取智能设备信息，基于 ty.device.getDeviceInfo 实现

### 参数

无


### 返回值

类型: `DevInfo`

设备信息对象，包含 devId、name、schema、dps、isOnline、codeIds（Code→ID）、idCodes（ID→Code）等，
注意与 ty.device.getDeviceInfo 返回值类型相比多了 codeIds 和 idCodes 字段，
且群组环境下返回 GroupInfo，字段结构与 DeviceInfo 有差异

**`type` DevInfo**

```typescript
export type DevInfo = Omit<
  ty.device.DeviceInfo,
  'schema' | 'panelConfig' | 'capability' | 'devAttribute'
> & {
  /**
   * dp id 与 dp code 的映射
   */
  idCodes: Record<string, string>;

  /**
   * dp code 与 dp id 的映射
   */
  codeIds: Record<string, string>;

  /**
   * 产品通讯能力标位，按二进制位运算的方式进行判断计算，如 Wi-Fi、Bluetooth、ZigBee、SigMesh 等
   *
   * - Wi-Fi (bit 0, 十进制值: 1): wifi无线
   * - Cable (bit 1, 十进制值: 2): 有线
   * - GPRS (bit 2, 十进制值: 4): 类似2g网络
   * - NB-IoT (bit 3, 十进制值: 6): 物联网卡网络
   * - Bluetooth (bit 10, 十进制值: 1024): 蓝牙单点
   * - BLEMesh (bit 11, 十进制值: 2048): 蓝牙私有mesh
   * - ZigBee (bit 12, 十进制值: 4096): 2.4g频段
   * - Infrared (bit 13, 十进制值: 8192): 红外
   * - 433 (subpieces) (bit 14, 十进制值: 16384): 433mhz
   * - SigMesh (bit 15, 十进制值: 32768): 蓝牙标准Mesh
   * - MCU (bit 16, 十进制值: 65536): mcu
   * - SMesh (bit 17, 十进制值: 131072): 类似ZigBee
   * - Cat1 (bit 20, 十进制值: 1048576): 通常使用3g网络
   * - Beacon (bit 21, 十进制值: 2097152): 蓝牙Beacon
   * - Thread (bit 25, 十进制值: 33554432): Thread能力
   */
  capability: Capability;

  /**
   * 设备能力标位，由固件上报
   * 位数含义:
   * - 第 1 位 (bit 0): 设备是否支持免配网
   * - 第 2 位 (bit 1): 设备支持 dp query 31 号协议查询
   * - 第 3 位 (bit 2): 设备是否具有本地联动能力
   * - 第 4 位 (bit 3): 设备是否支持 WIFI 扫描
   * - 第 5 位 (bit 4): 设备是否支持 Google Local Home
   * - 第 6 位 (bit 5): 设备是否支持闪电配网能力
   * - 第 7 位 (bit 6): 设备是否支持蓝牙控制
   * - 第 8 位 (bit 7): 设备是否支持安防能力
   * - 第 9 位 (bit 8): 设备是否是共享设备
   * - 第 10 位 (bit 9): 设备是否支持日出日落定时
   * - 第 11 位 (bit 10): 设备是否支持故障替换能力
   * - 第 12 位 (bit 11): 设备是否支持 OTA
   * - 第 13 位 (bit 12): 设备是否支持 WIFI 备用切换
   * - 第 15 位 (bit 14): 设备支持涂鸦标准协议
   * - 第 16 位 (bit 15): 设备支持自定义透传
   * - 第 17 位 (bit 16): 设备是否支持行业能力
   */
  devAttribute: DevAttribute;

  /**
   * 产品信息，schema，功能定义都在里面
   */
  schema: Array<DpSchema>;

  /**
   * 面板云配置
   */
  panelConfig: PanelConfig;
};
```

### 引用对象

##### `type` DevInfo

设备信息

| 属性 | 类型 | 描述 |
| --- | --- | --- |
| `idCodes` | `Record<string, string>` | dp id 与 dp code 的映射 |
| `codeIds` | `Record<string, string>` | dp code 与 dp id 的映射 |
| `capability` | `Capability` | 产品通讯能力标位，按二进制位运算的方式进行判断计算，如 Wi-Fi、Bluetooth、ZigBee、SigMesh 等  - Wi-Fi (bit 0, 十进制值: 1): wifi无线 - Cable (bit 1, 十进制值: 2): 有线 - GPRS (bit 2, 十进制值: 4): 类似2g网络 - NB-IoT (bit 3, 十进制值: 6): 物联网卡网络 - Bluetooth (bit 10, 十进制值: 1024): 蓝牙单点 - BLEMesh (bit 11, 十进制值: 2048): 蓝牙私有mesh - ZigBee (bit 12, 十进制值: 4096): 2.4g频段 - Infrared (bit 13, 十进制值: 8192): 红外 - 433 (subpieces) (bit 14, 十进制值: 16384): 433mhz - SigMesh (bit 15, 十进制值: 32768): 蓝牙标准Mesh - MCU (bit 16, 十进制值: 65536): mcu - SMesh (bit 17, 十进制值: 131072): 类似ZigBee - Cat1 (bit 20, 十进制值: 1048576): 通常使用3g网络 - Beacon (bit 21, 十进制值: 2097152): 蓝牙Beacon - Thread (bit 25, 十进制值: 33554432): Thread能力 |
| `devAttribute` | `DevAttribute` | 设备能力标位，由固件上报 位数含义: - 第 1 位 (bit 0): 设备是否支持免配网 - 第 2 位 (bit 1): 设备支持 dp query 31 号协议查询 - 第 3 位 (bit 2): 设备是否具有本地联动能力 - 第 4 位 (bit 3): 设备是否支持 WIFI 扫描 - 第 5 位 (bit 4): 设备是否支持 Google Local Home - 第 6 位 (bit 5): 设备是否支持闪电配网能力 - 第 7 位 (bit 6): 设备是否支持蓝牙控制 - 第 8 位 (bit 7): 设备是否支持安防能力 - 第 9 位 (bit 8): 设备是否是共享设备 - 第 10 位 (bit 9): 设备是否支持日出日落定时 - 第 11 位 (bit 10): 设备是否支持故障替换能力 - 第 12 位 (bit 11): 设备是否支持 OTA - 第 13 位 (bit 12): 设备是否支持 WIFI 备用切换 - 第 15 位 (bit 14): 设备支持涂鸦标准协议 - 第 16 位 (bit 15): 设备支持自定义透传 - 第 17 位 (bit 16): 设备是否支持行业能力 |
| `schema` | `DpSchema[]` | 产品信息，schema，功能定义都在里面 |
| `panelConfig` | `PanelConfig` | 面板云配置 |

##### `type` Capability

产品通讯能力标位，按二进制位运算的方式进行判断计算，如 Wi-Fi、Bluetooth、ZigBee、SigMesh 等

- Wi-Fi (bit 0, 十进制值: 1): wifi无线
- Cable (bit 1, 十进制值: 2): 有线
- GPRS (bit 2, 十进制值: 4): 类似2g网络
- NB-IoT (bit 3, 十进制值: 6): 物联网卡网络
- Bluetooth (bit 10, 十进制值: 1024): 蓝牙单点
- BLEMesh (bit 11, 十进制值: 2048): 蓝牙私有mesh
- ZigBee (bit 12, 十进制值: 4096): 2.4g频段
- Infrared (bit 13, 十进制值: 8192): 红外
- 433 (subpieces) (bit 14, 十进制值: 16384): 433mhz
- SigMesh (bit 15, 十进制值: 32768): 蓝牙标准Mesh
- MCU (bit 16, 十进制值: 65536): mcu
- SMesh (bit 17, 十进制值: 131072): 类似ZigBee
- Cat1 (bit 20, 十进制值: 1048576): 通常使用3g网络
- Beacon (bit 21, 十进制值: 2097152): 蓝牙Beacon
- Thread (bit 25, 十进制值: 33554432): Thread能力

```typescript
export type Capability = number;
```

##### `type` DevAttribute

设备能力标位，由固件上报

位数含义:
- 第 1 位 (bit 0): 设备是否支持免配网
- 第 2 位 (bit 1): 设备支持 dp query 31 号协议查询
- 第 3 位 (bit 2): 设备是否具有本地联动能力
- 第 4 位 (bit 3): 设备是否支持 WIFI 扫描
- 第 5 位 (bit 4): 设备是否支持 Google Local Home
- 第 6 位 (bit 5): 设备是否支持闪电配网能力
- 第 7 位 (bit 6): 设备是否支持蓝牙控制
- 第 8 位 (bit 7): 设备是否支持安防能力
- 第 9 位 (bit 8): 设备是否是共享设备
- 第 10 位 (bit 9): 设备是否支持日出日落定时
- 第 11 位 (bit 10): 设备是否支持故障替换能力
- 第 12 位 (bit 11): 设备是否支持 OTA
- 第 13 位 (bit 12): 设备是否支持 WIFI 备用切换
- 第 15 位 (bit 14): 设备支持涂鸦标准协议
- 第 16 位 (bit 15): 设备支持自定义透传
- 第 17 位 (bit 16): 设备是否支持行业能力

```typescript
export type DevAttribute = number;
```

##### `interface` PanelConfig

| 属性 | 类型 | 描述 |
| --- | --- | --- |
| `bic` | `CloudConfig[]` | 云定时和跳转链接配置 |
| `fun` | `FunConfig` | 功能配置 |

##### `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 为结构化对象 |

##### `interface` JumpUrlConfig

| 属性 | 类型 | 描述 |
| --- | --- | --- |
| `code` | `"jump_url"` | 跳转链接配置代码 |
| `description` | `string` | 跳转链接配置描述 |
| `name` | `string` | 跳转链接配置名称 |
| `selected` | `boolean` | 跳转链接配置是否选中 |

##### `interface` TimerConfig

| 属性 | 类型 | 描述 |
| --- | --- | --- |
| `code` | `"timer"` | 云定时配置代码 |
| `description` | `string` | 云定时配置描述 |
| `name` | `string` | 云定时配置名称 |
| `selected` | `boolean` | 云定时配置是否选中 |

##### `interface` FunConfig

| 属性 | 类型 | 描述 |
| --- | --- | --- |
| `tyabirysr4` | `string` | 背景色，当前仅涂鸦官方小程序支持 |
| `tyabirysr4_app` | `"follow" \| "--app-B1"` | 背景色跟随策略，follow 代表跟随 App，否则代表要替换的 App 变量路径，当前仅涂鸦官方小程序支持 |
| `tyabis5d9w` | `string` | 主题色，当前仅涂鸦官方小程序支持 |
| `tyabis5d9w_app` | `"follow" \| "--app-M1"` | 主题色跟随策略，follow 代表跟随 App，否则代表要替换的 App 变量路径，当前仅涂鸦官方小程序支持 |

##### `interface` CloudConfig

| 属性 | 类型 | 描述 |
| --- | --- | --- |
| `jump_url` | `JumpUrlConfig` | 跳转链接配置 |
| `timer` | `TimerConfig` | 云定时配置 |

##### `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 时才存在 |


### 示例代码

#### 示例

```typescript
const devInfo = device.getDevInfo();
console.log(devInfo.name);                    // 设备名称
console.log(devInfo.isOnline);                // 在线状态
console.log(devInfo.codeIds.switch_led);      // 20（Code→ID）
console.log(devInfo.idCodes[20]);             // 'switch_led'（ID→Code）
```
