GWaken 是一个智能睡眠监测与唤醒系统,专门适配红米手环2设备。通过分析心率和体动数据,系统能够准确检测睡眠阶段,并在浅睡眠阶段智能唤醒用户,提供更舒适的起床体验。
最新更新:系统现已支持Android平台! 我们已将GWaken系统成功移植到Android平台,创建了完整的移动应用版本,使用户可以在手机上直接使用智能睡眠监测功能。
- 睡眠阶段检测:基于心率和体动数据检测深睡、浅睡、REM等睡眠阶段
- 智能唤醒:在浅睡眠阶段唤醒用户,提供更舒适的起床体验
- 数据记录:记录和分析睡眠数据,生成睡眠质量报告
- 红米手环2适配:支持通过蓝牙连接红米手环2,获取实时传感器数据
- Web API接口:提供RESTful API接口,支持远程监控和控制
- 多传感器支持:支持蓝牙、硬件和模拟传感器
- Android应用:完整的移动应用版本,支持在Android设备上直接使用
- 跨平台兼容:支持桌面和移动平台,统一的算法和用户体验
GWaken/
├── README.md # 项目说明
├── CHANGELOG.md # 更新日志
├── requirements.txt # 依赖包列表
├── setup.py # 安装配置
├── config.json # 配置文件
├── Dockerfile # 容器化配置
├── GWaken-Android/ # Android应用目录
│ ├── main.py # Kivy主应用入口
│ ├── android_bluetooth_sensor.py # Android蓝牙传感器模块
│ ├── buildozer.spec # Buildozer构建配置
│ ├── requirements.txt # Android依赖
│ ├── build_apk.sh # APK构建脚本
│ ├── assets/ # 资源文件
│ │ └── icons/ # 应用图标
│ └── README.md # Android应用说明
├── sleep_monitor/ # 主要代码目录
│ ├── main.py # 主程序入口
│ ├── run_api.py # API运行脚本
│ ├── sensors/ # 传感器模块
│ │ ├── bluetooth_sensor.py # 蓝牙传感器
│ │ ├── hardware_sensor.py # 硬件传感器
│ │ └── sensor_simulator.py # 传感器模拟器
│ ├── sleep_analysis/ # 睡眠分析模块
│ │ ├── sleep_stage_detector.py # 睡眠阶段检测器
│ │ └── signal_processor.py # 信号处理器
│ ├── alarm/ # 闹钟模块
│ │ └── smart_alarm.py # 智能闹钟
│ ├── api/ # API接口
│ │ └── sleep_api.py # Web API实现
│ ├── utils/ # 工具模块
│ └── tests/ # 测试模块
└── docs/ # 文档目录
- Python 3.6+
- 蓝牙适配器(用于连接手环)
-
克隆项目:
git clone https://github.com/DuanZGit/GWaken.git cd GWaken -
安装依赖:
pip install -r requirements.txt # 或使用setup.py pip install -e .
python -m sleep_monitor.mainpython -m sleep_monitor.run_api
# 或指定端口
python -m sleep_monitor.run_api 5000API服务启动后,访问 http://localhost:5000 查看Web界面。
cd GWaken-Android
# 安装构建工具
pip install buildozer
# 构建APK
buildozer android debug构建完成后,APK文件将位于 GWaken-Android/bin/ 目录中。
GET /api/bluetooth/devices- 搜索可用蓝牙设备POST /api/bluetooth/connect- 连接蓝牙设备GET /api/device/info- 获取设备信息POST /api/device/sync- 同步设备数据
GET /api/sensor_data- 获取传感器数据GET /api/heart_rate- 获取心率数据GET /api/movement- 获取体动数据GET /api/sleep_data- 获取睡眠数据
POST /api/sleep_analysis- 分析睡眠阶段GET /api/status- 获取系统状态
config.json 包含以下配置项:
{
"sleep_detection": {
"sampling_rate": 60,
"deep_sleep_hr_threshold": 60,
"light_sleep_hr_threshold": 70,
"movement_threshold": 5
},
"alarm_settings": {
"wake_time": "07:00",
"alarm_window": 30,
"alarm_duration": 5
},
"device_settings": {
"device_model": "Redmi Band 2",
"max_battery_usage": 20,
"data_sync_interval": 300,
"bluetooth_address": "",
"device_name": "Redmi Band 2",
"sensor_type": "bluetooth"
}
}系统基于以下生理指标判断睡眠阶段:
- 深睡眠:心率较低且稳定(<60 BPM),体动很少
- 浅睡眠:心率稍有波动(60-70 BPM),体动较少
- REM睡眠:心率变化较大,体动中等
- 清醒:心率较高(>70 BPM),体动频繁
系统在以下条件下触发唤醒:
- 当前睡眠阶段为浅睡眠
- 时间在唤醒窗口内(默认目标时间前30分钟)
- 接近目标唤醒时间
运行单元测试:
python -m unittest discover -s sleep_monitor.tests -p "test_*.py" -vpython -m sleep_monitor.run_api 5000docker build -t g-waken .
docker run -p 5000:5000 g-wakencd GWaken-Android
buildozer android debug
# 生成的APK位于 bin/ 目录使用WSGI服务器(如Gunicorn)部署API服务:
pip install gunicorn
gunicorn -w 4 -b 0.0.0.0:5000 sleep_monitor.api.sleep_api:app查看 CHANGELOG.md 获取详细的更新信息。
欢迎提交 Issues 和 Pull Requests 来帮助改进项目。
本项目仅供学习和研究使用。
智能睡眠监测系统 | 专为红米手环2优化