# 翻转屏通信协议文档

本文档描述了翻转屏设备的通信协议格式。所有通信采用JSON格式，包括从控制端到设备的请求和从设备到控制端的响应。

## 通信基本结构

### 请求格式（控制端 → 设备）
```json
{
    "board_id": 121,       // 设备ID
    "JSON_id": 1,          // 消息唯一标识
    "Flip-screen": {       // 翻转屏指令
        "command_type": {  // 具体命令类型
            // 命令参数
        }
    }
}
```

### 响应格式（设备 → 控制端）
```json
{
    "JSON_id": 1,          // 与请求消息相同的标识
    "Flip-screen": {       // 翻转屏响应
        "command_type": {  // 与请求相同的命令类型
            "status": "success"  // 操作状态: "success" 或 "failed"
        }
    },
    "error_code": 0        // 错误码，0表示成功
}
```

## 功能指令详解

### 1. 平台控制（上升/下降）

#### 请求：
```json
{
    "board_id": 121,
    "JSON_id": 2,
    "Flip-screen": {
        "platform_control": {
            "direction": "up"  // 可选值: "up" 或 "down"
        }
    }
}
```

#### 响应：
```json
{
    "JSON_id": 2,
    "Flip-screen": {
        "platform_control": {
            "status": "success"
        }
    },
    "error_code": 0 
}
```

### 2. 屏幕开关控制

#### 请求：
```json
{
    "board_id": 121,
    "JSON_id": 3,
    "Flip-screen": {
        "screen_control": {
            "power": "on"  // 可选值: "on" 或 "off"
        }
    }
}
```

#### 响应：
```json
{
    "JSON_id": 3,
    "Flip-screen": {
        "screen_control": {
            "status": "success"
        }
    },
    "error_code": 0 
}
```

### 3. 灯模式控制

#### 请求：
```json
{
    "board_id": 121,
    "JSON_id": 4,
    "Flip-screen": {
        "light_mode": {
            "mode": "auto"  // 灯光模式: "auto", "manual", 等
        }
    }
}
```

#### 响应：
```json
{
    "JSON_id": 4,
    "Flip-screen": {
        "light_mode": {
            "status": "success"
        }
    },
    "error_code": 0 
}
```

### 4. 单个灯控制

#### 请求：
```json
{
    "board_id": 121,
    "JSON_id": 5,
    "Flip-screen": {
        "light_control": {
            "light_id": 1,       // 灯ID编号: 1-6
            "state": "on"        // 可选值: "on" 或 "off"
        }
    }
}
```

#### 响应：
```json
{
    "JSON_id": 5,
    "Flip-screen": {
        "light_control": {
            "status": "success"
        }
    },
    "error_code": 0 
}
```

### 5. 亮度调节

#### 请求：
```json
{
    "board_id": 121,
    "JSON_id": 6,
    "Flip-screen": {
        "brightness_control": {
            "value": 70  // 亮度值: 0-100
        }
    }
}
```

#### 响应：
```json
{
    "JSON_id": 6,
    "Flip-screen": {
        "brightness_control": {
            "status": "success"
        }
    },
    "error_code": 0 
}
```

### 6. 节目控制

#### 请求：
```json
{
    "board_id": 121,
    "JSON_id": 7,
    "Flip-screen": {
        "program_control": {
            "program_id": 1  // 节目ID
        }
    }
}
```

#### 响应：
```json
{
    "JSON_id": 7,
    "Flip-screen": {
        "program_control": {
            "status": "success"
        }
    },
    "error_code": 0 
}
```

## 错误处理

当指令执行失败时，设备会返回非零的错误码和错误信息：

```json
{
    "JSON_id": 3,
    "Flip-screen": {
        "screen_control": {
            "status": "failed"
        }
    },
    "error_code": 1001,
    "error_msg": "Device not responding"
}
```

## 错误码说明

| 错误码 | 描述 |
|--------|------|
| 0      | 成功 |
| 1001   | 设备无响应 |
| 1002   | 参数错误 |
| 1003   | 设备忙 |
| 1004   | 操作超时 |
| 1005   | 设备未就绪 |


## 设备状态查询

### 请求：
```json
{
    "board_id": 121,
    "JSON_id": 8,
    "Flip-screen": {
        "status_query": {
            "type": "all"  // 查询类型: "all", "platform", "screen", "lights", "program"
        }
    }
}
```

### 响应：
```json
{
    "JSON_id": 8,
    "Flip-screen": {
        "status": {
            "platform": {
                "position": "up"  // "up" 或 "down"
            },
            "screen": {
                "power": "on",    // "on" 或 "off"
                "brightness": 70  // 0-100
            },
            "lights": [
                {"id": 1, "state": "on", },
                {"id": 2, "state": "off",},
                {"id": 3, "state": "on", },
                {"id": 4, "state": "on", },
                {"id": 5, "state": "off",},
                {"id": 6, "state": "on", }
            ],
            "program": {
                "current_id": 1,
                "available": [1, 2, 3, 4, 5]
            },
            "light_mode": "auto"
        }
    },
    "error_code": 0
}
``` 