# 蓝牙灯光命令手册

## 蓝牙灯规格
### 色温范围
2700k - 6500k
### 亮度范围
0 - 100

## 命令交互设计
> 发送命令后,设备会响应一个命令码,表示命令执行结果


## 蓝牙灯光命令格式
### 命令分类
#### 下发命令
> 由手机端下发给设备端的命令
> 命令必须要等待响应, 默认超时时间为 2s
命令起始码 0x6c
#### 设备响应
> 设备端响应手机端的命令.响应命令码表示命令执行结果  
> 手机端下发命令后,需要等待设备端响应,才能进行下一步操作
响应起始码 0xc6
#### 设备通知
> 设备端主动通知手机端的命令.通知命令码表示通知类型  
> 通知对回复不敏感
通知起始码 0x66

### 格式定义
下发命令格式: `起始码` `长度` `命令码` `sn码` `数据1` `数据2`
下发起始码: 0x6c

响应命令格式: `起始码` `长度` `命令码` `sn码` `数据1` `数据2`
响应: 0xc6

### 长度定义
程序中定义的长度都是指数据长度,不包含起始码和长度本身
数据全长应该是 `长度` + 2
比如: `0x6c 0x06 0x01 0x01 0x01 0x01` 长度为 4, 数据全长为 6

### 下发命令定义
| 起始码 | 命令码 | sn码 | 数据1 |
| :----: | :----: | :----: | :--: | :--: | 
| 1字节   | 1字节 | 1字节 | 1字节 | 基于命令确定 | 

### 设备响应定义
| 起始码 | 长度 | 命令码 | 数据1 | 数据2 |
| :----: | :----: | :----: | :--: | :--: |
| 0xc6   | 0x01 | 0x05   | 0x01 | 0x01 |

## 命令码
> 所有命令码都是 1 字节, 值需要转换为hex  

| 命令码  | 命令 | 值长度 | 值介绍 |说明 |
| :----:  | :----: | :--: | :--: | ------- |
| 0x01   | 唤醒设备   | 0 |  | 将设备从待机模式下唤醒,进入工作状态 |
| 0x02   | 关闭设备   | 0 |  | 将设备从工作状态下关闭,进入待机模式 |
| 0x03   | 查询 | 1 | 命令码 | 查询命令码对应的值 |
| 0x04   | 亮度调节   | 1 | 0 - 100 | 调节设备的亮度 |
| 0x05   | 色温调节   | 0 | 2700 - 6500  | 调节色温 |
| 0x06   | 风扇调节   | 1 | 0-100  | 调节风扇速度, 0关闭, 0以上为开启 |
| 0x07  | 模式切换 | 1 | 0-3 | 0: 默认模式 1: 强亮模式(无法调节色温)  |
| 0x08   | 单路调节   | 2 | 通道,值  | 调节指定通道的pwm值,调试用 |
| 0x09   | 频率调节   | 1 | 1-7 | 可选频率, 1-7, 1最高, 7最低 |



### 命令码说明
#### 唤醒设备
> 将设备从待机模式下唤醒,进入工作状态

#### 关闭设备
> 将设备从工作状态下关闭,进入待机模式
> 关闭设备后,需要再次唤醒设备才能进行操作

#### 查询
1. 查询设备状态
> 亮度,色温,风扇速度,设备模式
2. 查询设备版本号

### 示例
#### 单路调节
> 调节通道1的pwm值为 100
```
0x6c 0x06 0x01 0x64 
```

> 调节通道2的pwm值为 50
```
0x6c 0x06 0x02 0x32
```

