Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
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床头灯的基本控制,并文档化了官方不提供的蓝牙控制指令
- Host: GitHub
- URL: https://github.com/wangzhizhou/yeelight-bedside-light-ble-control
- Owner: wangzhizhou
- Created: 2017-09-24T05:44:15.000Z (over 7 years ago)
- Default Branch: master
- Last Pushed: 2019-01-01T12:06:08.000Z (about 6 years ago)
- Last Synced: 2024-03-18T09:03:20.525Z (10 months ago)
- Topics: bedside-light, ble, swift, yeelight
- Language: Swift
- Homepage:
- Size: 81.1 KB
- Stars: 7
- Watchers: 3
- Forks: 2
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
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)