Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/wangzhizhou/yeelight-bedside-light-ble-control

使用Swift在iOS平台下实现小米Yeelight床头灯的基本控制,并文档化了官方不提供的蓝牙控制指令
https://github.com/wangzhizhou/yeelight-bedside-light-ble-control

bedside-light ble swift yeelight

Last synced: about 2 months ago
JSON representation

使用Swift在iOS平台下实现小米Yeelight床头灯的基本控制,并文档化了官方不提供的蓝牙控制指令

Awesome Lists containing this project

README

        

# Yeelight床头灯`BLE4.0`蓝牙控制说明书

> 本说明书仅用作技术交流和个人Geek,请勿用于非法活动。
```
author: Joker
e-mail: [email protected]
weChat: w_z_z_1991
```
项目中用到了`RxSwift`和`CoreBluetooth`两个`framework`, 其中`RxSwift`目录还不支持`Swift 4.0`,所以需要设置编译选项`Swift 3.2`编译

本说明书针对的床头灯型号为:`XMCTD01YL` - [Yeelight床头灯官网](http://www.yeelight.com/zh_CN/product/yeelight-ctd)

## 主要设备服务和特性

```
蓝牙设备默认前缀名称为: "XMCTD_"
|
|—— 设备控制和状态服务UUID: "8E2F0CBD-1A66-4B53-ACE6-B494E25F87BD"
|
|—— MCU控制特性UUID: "AA7D3F34-2D4F-41E0-807F-52FBF8CF7443"
|
|—— MCU状态特性UUID: "8F65073D-9F57-4AAA-AFEA-397D19D5BBEB"
```

### MCU控制特性(AA7D3F34-2D4F-41E0-807F-52FBF8CF7443,可读,可写) - 相关命令

控制命令为`18`个字节的数据,这里使用十六进制表示

##### 授权命令

字节序 | 功能说明
|:---|:---|
|0| `0x43` |
|1| `0x67` |
|2| `0xDE` |
|3| `0xAD` |
|4| `0xBE`|
|5| `0xBF`|

- 其余字节置`0x00`
- 控制前要发送一个授权命令,否则蓝牙链接会自动被设备断开

##### 开关灯命令

字节序 | 功能说明
|:---|:---|
|0| `0x43` - 固定值 |
|1| `0x40` - 控制开关灯命令|
|2| `0x01` - 电源开,`0x02` - 电源关|

- 其余字节置`0x00`

##### 亮度设置命令

字节序 | 功能说明
|:---|:---|
|0| `0x43` - 固定值 |
|1| `0x42` - 亮度设置 |
|2| `0x01` ~ `0x64`,亮度值十进制范围: [1, 100] |

- 其余字节置`0x00`

##### 颜色设置命令

字节序 | 功能说明
|:---|:---|
|0| `0x43` |
|1| `0x41` - 颜色设置 |
|2| `0x00` ~ `0xFF` - 红色 |
|3| `0x00` ~ `0xFF` - 绿色 |
|4| `0x00` ~ `0xFF` - 蓝色 |
|5| `0xFF` |
|6| `0x65` |

- 其余字节置`0x00`

##### 日光模式设置命令

字节序 | 功能说明
|:---|:---|
|0| `0x43` |
|1| `0x4A` - 日光模式 |
|2| `0x01` |
|3| `0x01` |
|4| `0x01` |

- 其余字节置`0x00`

##### 流光模式命令

- 目前流光模式命令还没有破解出来,有知道的请联系我,非常感谢!

##### 闪烁一下命令

字节序 | 功能说明
|:---|:---|
|0| `0x43` |
|1| `0x7F` - 闪烁 |
|2| `0x03` |

- 其余字节置`0x00`

##### 查询状态命令

字节序 | 功能说明
|:---|:---|
|0| `0x43` |
|1| `0x44` - 状态查询|

- 其余字节置`0x00`

### MCU状态特性(8F65073D-9F57-4AAA-AFEA-397D19D5BBEB,可订阅) - 状态标志位

- 订阅开启后,设备在状态变化时会有通知回调,特性值也是`18`个字节:

字节序 | 功能说明
|:---|:---|
|0| `0x43` |
|1| `0x45` - 状态变化通知 |
|2| `0x01` - 灯开,`0x02` - 灯关 |
|3| `0x01` - 固定颜色模式,`0x02` - 日光模式, `0x03` - 流光模式 |
|4| `0x00` ~ `0xFF` - 红色 |
|5| `0x00` ~ `0xFF` - 绿色 |
|6| `0x00` ~ `0xFF` - 蓝色 |
|7| unknown|
|8| `0x01` ~ `0x64` - 当前亮度值 |
|9| 可能是 HSV 上的 H |
|10| 可能是 HSV中的 S |
|11| 可能是 HSV 中的 V |

- HSV为颜色空间,区别于RGB颜色空间
- 之后的字节不知道什么意思

# 参考项目

[homebridge_yeelight](https://github.com/vvpossible/homebridge_yeelight.git)