# 电表型号接口文档

## 获取电表型号

### 接口描述

获取当前使用的电表型号。

### 基本信息

| 属性 | 值 |
|------|-----|
| 方法名 | `/m9z/meter/getMeterFirm` |
| 请求方式 | POST (JSON-RPC) |
| 是否需要认证 | 配置文件决定 |
| 描述 | 查询当前电表型号 |

### 请求参数

无请求参数。

### 响应参数

| 字段名 | 类型 | 必填 | 描述 |
|--------|------|------|------|
| meter_firm | string | 是 | 当前电表型号 |

### 响应示例

**成功响应：**
```json
{
  "jsonrpc": "2.0",
  "id": 1,
  "result": {
    "meter_firm": "ADL400"
  }
}
```

**响应字段说明：**

| 字段 | 说明 |
|------|------|
| `meter_firm` | 当前电表型号，支持的值：ADL400、DDSD1352、DTS1352 |

### 备注

- 电表型号优先从 `data/meterFirm.json` 读取，不存在则使用配置文件 `config.json` 中的默认值
- 配置文件 `config.json` 中的 `deviceInfo.meterFirm` 仅作为默认值，后续以 `data/meterFirm.json` 为准
- 变更电表型号后会自动重新加载电表控制实例

---

## 设置电表型号

### 接口描述

设置电表型号，变更后会保存到 `data/meterFirm.json`，并自动重新加载电表控制实例。

### 基本信息

| 属性 | 值 |
|------|-----|
| 方法名 | `/m9z/meter/setMeterFirm` |
| 请求方式 | POST (JSON-RPC) |
| 是否需要认证 | 配置文件决定 |
| 描述 | 修改电表型号 |

### 请求参数

| 字段名 | 类型 | 必填 | 描述 |
|--------|------|------|------|
| meter_firm | string | 是 | 电表型号，支持：ADL400、DDSD1352、DTS1352 |

### 请求示例

```json
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "/m9z/meter/setMeterFirm",
  "params": {
    "meter_firm": "DDSD1352"
  }
}
```

### 响应参数

| 字段名 | 类型 | 必填 | 描述 |
|--------|------|------|------|
| success | boolean | 是 | 是否成功 |
| meter_firm | string | 是 | 设置后的电表型号 |

### 响应示例

**成功响应：**
```json
{
  "jsonrpc": "2.0",
  "id": 1,
  "result": {
    "success": true,
    "meter_firm": "DDSD1352"
  }
}
```

**错误响应 - 无效型号：**
```json
{
  "jsonrpc": "2.0",
  "id": 1,
  "error": {
    "code": 400,
    "message": "invalid meter_firm, available: ADL400, DDSD1352, DTS1352"
  }
}
```

**错误响应 - 参数为空：**
```json
{
  "jsonrpc": "2.0",
  "id": 1,
  "error": {
    "code": 400,
    "message": "meter_firm is required"
  }
}
```

### 备注

- 设置的电表型号会持久化保存到 `data/meterFirm.json`
- 变更后会自动调用 `adl400TtyApi.Reload()` 重新初始化电表控制实例
- 请确保在设备断电或安全情况下修改电表型号
- 不支持的型号将被拒绝并返回错误

---

## 相关接口

| 接口 | 方法 | 描述 |
|------|------|------|
| 电表数据读取 | `/adl400/readPhaseData` | 读取电表分相数据 |
| 通信地址读取 | `/adl400/getMsgAddress` | 读取电表通信地址 |
| 通信地址设置 | `/adl400/setMsgAddress` | 设置电表通信地址 |
