写一个空调风机时长统计系统

需求:

通过python图形化程序需要实现空调风机的时长统计。

写一个空调风机时长统计系统_第1张图片

界面功能介绍:

写一个空调风机时长统计系统_第2张图片

  1. 该空调系统分为8页,通过右上角左右翻页的方式进行页面切换,翻页按钮是翻到最后一页后只能通过上一页往前面,同理第一页也是这样。
  2. 做了颜色采样,采样而且每页的风机数量是不同的,灰色:#515151 RGB :81 81 81 绿色:#1bf928 RGB:27 249 40 底色:#033047 RGB:3 48 71 灰色是未开机状态、绿色是开机状态、底色是该坐标点没有风机,通过坐标点颜色可以进行判断
  3. 每个风机的坐标已列出,该坐标点为最多容纳的情况,但是每页的风机数量不一样,优先排满横排再排竖排,比如第三页是49个,则是有六行8列后,第七行还有一个

实现原理:

  1. 通过轮巡的方式每5分钟进行截屏,以坐标点颜色判断来统计该风机的时长,比如该风机是灰色、下次截图是绿色,就以此时间点为开始,直到下次截图后发现该坐标点从绿转为灰色,统计此时长。
  2. 箭头坐标:(向左箭头:160,1760 向右箭头:160 1850 ) 过5分钟,从首页点击向右箭头,截取8次图片(通过图片计算风机运行时长),再过5分钟,触发向左箭头截取8次图片,以此为一轮回。
  3. 如果为底色(底色:#033047 RGB:3 48 71)则表示该位置上每月风机不进行统计。

要求:

  1. 程序具有简洁、美观的界面,代码可以通过pyinstaller打包成exe文件从而适合在win7系统上运行,方便部署。
  2. 能够通过1-8加x,y的方式给每个风机进行编号,比如1-1-4是第1页第1行第4个风机,通过日历表的时间选择能够统计出该风机的运行时长。
  3. 程序有功能按键能够选择每个风机、每页所有风机、全部风机对自定义日期和每月、每季度、每年的运行时长进行统计,点击每个功能按键能够在程序界面上显示风机统计时长,有excel导出功能,导出为标准的xlsx格式
  4. 该程序能够一直在后台运行,系统占用率低。
  5. 详细分析需求,列出测试好的程序源码。

✅ 功能需求总览

功能模块 实现方式说明
界面开发 PyQt5 图形化界面,主窗口+托盘图标+系统状态展示
风机状态识别 每页风机坐标颜色识别(绿色为开机,灰色为关机,底色跳过)
自动翻页轮询 5分钟一次:从1页开始 -> 翻页8次 -> 再从8页回到1页
状态统计逻辑 识别状态变化(灰→绿→灰)计算持续时间
时间筛选统计 支持选中风机/页/全部按天、月、季度、年查询
编号格式 使用“页-行-列”格式,如 1-2-5 表示第1页第2行第5列
数据导出 统计结果导出为 xlsx 文件,支持选择导出路径
后台运行 最小化托盘,低占用运行,定时截图处理

实现逻辑拆解

1. 截图识别逻辑

  • 使用 pyautogui.screenshot() 定时截图
  • 每页截图一次后点右箭头坐标 (160, 1850),到第8页
  • 再回退截图,点左箭头坐标 (160, 1760),回到第1页
  • 每页获取风机数量,逐坐标检测颜色
    • RGB ≈ (27, 249, 40) → 开机
    • RGB ≈ (81, 81, 81) → 关机
    • RGB ≈ (3, 48, 71) → 无风机,跳过

2. 数据结构与时间统计

fan_data = {
    '1-1-1': [ (时间戳, 状态), ... ],
    '3-6-8': [ ... ],
    ...
}

每次检测后追加状态记录,然后分析灰→绿→灰的时间差。


示例界面布局(PyQt5)

  • 顶部菜单:
    • 日期选择
    • ⬇️ 导出按钮
    • 日/周/月/年切换
  • 主区域:
    • 风机选择:全部、指定页、指定编号
    • 统计信息展示区
  • 托盘菜单:
    • 显示/隐藏窗口
    • 退出程序

项目结构设计

fan_monitor/
├── main.py                    # 主程序入口
├── gui.py                     # PyQt5图形界面逻辑
├── monitor.py                 # 风机状态轮询模块
├── coords.py                  # 

你可能感兴趣的:(写一个空调风机时长统计系统)