一个用于监控桌面和 Android 设备活动状态的 Python 服务器
Find a file
2025-07-18 15:35:43 +08:00
.gitignore init commit 2025-07-18 14:55:28 +08:00
LICENSE init commit 2025-07-18 14:55:28 +08:00
main.py add /query_bool 2025-07-18 15:35:43 +08:00
README.md init commit 2025-07-18 14:55:28 +08:00
requirements.txt init commit 2025-07-18 14:55:28 +08:00
run.sh init commit 2025-07-18 14:55:28 +08:00

Status Monitor

一个用于监控桌面和 Android 设备活动状态的 Python 服务器

功能特性

  • 🖥️ 桌面活动监控: 自动检测键盘和鼠标输入,监控桌面活动状态
  • 📱 Android 设备监控: 接收来自 Android 应用的状态更新
  • 🌐 REST API: 提供简单的 HTTP API 接口查询设备状态
  • 智能超时: 桌面设备 60 秒超时Android 设备 305 秒超时
  • 🔒 线程安全: 使用锁机制确保多线程环境下的数据一致性

系统要求

  • 操作系统: Linux需要访问 /dev/input/event* 设备)
  • Python: 3.8+
  • 权限: 需要 root 权限以访问输入设备
  • 依赖: FastAPI, uvicorn, pydantic

安装

  1. 克隆仓库:
git clone http://git.s3.fan/Steve3184/StatusMoniter
cd StatusMoniter
  1. 安装依赖(通过venv)
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt

使用方法

启动服务器

sudo su
# 基本启动(需要 root 权限)
python3 main.py

# 自定义配置
python3 main.py --host 0.0.0.0 --port 5000 --debug

# 查看帮助
python3 main.py --help

命令行参数

  • --host: 绑定地址(默认: 0.0.0.0
  • --port: 端口号(默认: 5000
  • --debug: 启用调试模式

API 接口

查询设备状态

GET /query?device=desktop
GET /query?device=android

响应:

  • active: 设备处于活跃状态
  • inactive: 设备处于非活跃状态

更新 Android 设备状态

POST /update
Content-Type: application/json

{
    "device": "android",
    "active": true
}

获取所有设备状态

GET /status

响应示例:

{
    "desktop": {
        "active": true,
        "last_activity": "2024-01-15T10:30:00.123456"
    },
    "android": {
        "active": false,
        "last_activity": "2024-01-15T10:25:00.654321"
    }
}

工作原理

桌面监控

  • 扫描 /dev/input/event* 设备,识别键盘和鼠标
  • 使用 select() 系统调用监听输入事件
  • 解析 Linux input_event 结构体,检测按键和鼠标移动
  • 60 秒无活动后标记为非活跃状态

Android 监控

  • 通过 HTTP POST 接口接收 Android 应用的状态更新
  • 305 秒5 分钟 + 5 秒)无更新后标记为非活跃状态
  • Android 端应用需要定期发送心跳包

Android 客户端

Android 端应用位于独立仓库:StatusMoniterAndroid

Android 应用:

  1. 定期向服务器发送 POST 请求更新状态
  2. 检测设备的活动状态(屏幕开关、应用使用等)
  3. 在设备活跃时发送 "active": true,非活跃时发送 "active": false

安全注意事项

  • 服务器需要 root 权限运行以访问输入设备
  • 默认绑定到 0.0.0.0,请确保网络安全
  • 建议在生产环境中使用防火墙限制访问

故障排除

常见问题

  1. 权限错误: 确保以 root 权限运行
  2. 找不到设备: 检查 /dev/input/ 目录是否存在相关设备
  3. Android 连接问题: 确认 Android 设备可以访问服务器 IP 和端口

调试模式

使用 --debug 参数启动可以查看详细日志信息:

sudo python main.py --debug

许可证

MIT License

贡献

欢迎提交 Issue 和 Pull Request

版本历史

  • v1.0.0: 初始版本,支持桌面和 Android 设备监控